activiti工作流状态(工作流activity流程图 红色线条有什么意义)

:暂无数据 2026-04-03 21:00:01 0
从我第一次听说activiti工作流状态到真正弄懂工作流activity流程图 红色线条有什么意义,也走过一些弯路。下面就把我的学习心得分享给大家,希望能让您的入门之路更顺畅。

本文目录

工作流activity流程图 红色线条有什么意义

一、 什么是工作流
以请假为例,现在大多数公司的请假流程是这样的
员工打电话(或网聊)向上级提出请假申请——上级口头同意——上级将请假记录下来——月底将请假记录上交公司——公司将请假录入电脑
采用工作流技术的公司的请假流程是这样的
员工使用账户登录系统——点击请假——上级登录系统点击允许
就这样,一个请假流程就结束了
有人会问,那上级不用向公司提交请假记录?公司不用将记录录入电脑?答案是,用的。但是这一切的工作都会在上级点击允许后自动运行!
这就是工作流技术。

Georgakopoulos给出的工作流定义是:工作流是将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完
二、 工作流技术的优点
从上面的例子,很容易看出
工作流系统,实现了工作流程的自动化,提高了企业运营效率、改善企业资源利用、提高企业运作的灵活性和适应性、提高量化考核业务处理的效率、减少浪费(时间就是金钱)。
而手工处理工作流程,一方面无法对整个流程状况进行有效跟踪、了解,另一方面难免会出现人为的失误和时间上的延时导致效率低下,特别是无法进行量化统计,不利于查询、报表及绩效评估。

三、 Java开发者会为什么要学Activity工作流
在Java领域,JBPM和Activity是两个主流的工作流系统,而Activity的出现无疑将会取代JBPM(Activity的开发者就是从Jbpm开发者出来的)。

四、 Activity工作流学习要点

1. 1个插件
在Eclipse中安装Activity插件,让你可以在Eclipse中绘制Activity工作流图

2. 1个引擎
ProcessEngine对象,Activity工作流引擎。这是Activiti工作的核心。负责生成流程运行时的各种实例及数据、监控和管理流程的运行。
所有的操作都是从获取引擎开始的,所以一般会把引擎作为全局变量
ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine();

3. 1个配置文件
activiti.cfg.xml。Activiti核心配置文件,配置流程引擎创建工具的基本参数和数据库连接池参数

4. 5种数据库表
Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。用途也和服务的API对应。
ACT_RE_*: ’RE’表示repository。 这个前缀的表包含了流程定义和流程静态资源(图片,规则,等等)。
ACT_RU_*: ’RU’表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
ACT_ID_*: ’ID’表示identity。 这些表包含身份信息,比如用户,组等等。
ACT_HI_*: ’HI’表示history。 这些表包含历史数据,比如历史流程实例,变量,任务等等。
ACT_GE_*: 通用数据,用于不同场景下,如存放资源文件。

5. 23张表
不同的表存放不同方面的数据,有流程定义表、任务结点表、流程变量表、任务历史表等等。
6. 5项Service
不同的Service类对应不同的功能。
比如TaskService,是activiti的任务服务类。可以从这个类中获取任务的信息。
而HistoryService,则是activiti的查询历史信息的类。在一个流程执行完成后,这个对象为我们提供查询历史信息。

7. 7项基本操作
设计流程图(各种组件,如连线、用户任务、网关)
流程定义增删改查
流程变量增删改查
启动流程定义
任务增删改查
完成任务
历史信息查询

activiti工作流怎样定时启动工作流

Activiti中提供了多实例任务(for-each)将多实例应到到UserTask中可以实现会签功能。
一.多实例用户任务的XML表示:
Xml代码
《userTask id="task" name="多实例任务"》
《multiInstanceLoopCharacteristics isSequential="false"》
《loopDataInputRef》assigneeList《/loopDataInputRef》
《inputDataItem name="assignee"》《/inputDataItem》
《!-- userIdList --》
《completionCondition》${nrOfCompletedInstances/nrOfInstances 》= 0.6}《/completionCondition》
《/multiInstanceLoopCharacteristics》
《/userTask》
《userTask id="task" name="多实例任务"》
《multiInstanceLoopCharacteristics isSequential="false"》
《loopDataInputRef》assigneeList《/loopDataInputRef》
《inputDataItem name="assignee"》《/inputDataItem》
《!-- userIdList --》
《completionCondition》${nrOfCompletedInstances/nrOfInstances 》= 0.6}《/completionCondition》
《/multiInstanceLoopCharacteristics》
《/userTask》
在每个多实例创建后都会有3个变量
nrOfInstances 实例总数
nrOfActiveInstances 当前还没有完成的实例
nrOfCompleteInstances 已经完成的实例个数
multiInstanceLoopCharacteristics 是用了指定用户任务为多实例任务,isSequential
指定多实例是按照并行或者串行的方式进行,如果使用串行方式nrOfActiveInstances 变量始终是1.
loopDataInputRef
指定一个流程变量的引用,该变量是一个List,可以在发起或这执行任务之前作为流程变量放到引擎中,该list中的每一个元素将创建一个任务。元素的值通过
inputDataItem 元素的指定的变量来获取
如 在这个实例中 assigneeList =
Arrays.asList("liyagn","cooperay","other"); 这会创建3个用户任务,每个用户任务中都有一个 assignee
的变量,来分别得到list中的值。
completionCondition 结束任务的条件,该示例中是任务完成 60% 结束
二.给用户任务指定代理人
xml表示:
Xml代码
《userTask id="thisTask2" name="myTask2"》
《humanPerformer》
《resourceAssignmentExpression》
《formalExpression》liyang《/formalExpression》
《/resourceAssignmentExpression》
《/humanPerformer》
《/userTask》
《userTask id="thisTask2" name="myTask2"》
《humanPerformer》
《resourceAssignmentExpression》
《formalExpression》liyang《/formalExpression》
《/resourceAssignmentExpression》
《/humanPerformer》
《/userTask》
上面的描述将该用户任务分配给用户 liyang 可以通过
taskService.createTaskQuery.taskAssignee("liyang").list();来获取该任务
三.通过上面两部 将 用户任务做成了多任务,也可以将 任务分配给指定的代理人,现在只用将上面两个步骤进行结合
在第一步中我们知道变量 assignee 是 会签人员的标识,只需要将指定代理人的地方用表达式来指定 assignee 变量就行了
完整XML:
Xml代码
《userTask id="thisTask2" name="myTask2"》
《humanPerformer》
《resourceAssignmentExpression》
《formalExpression》${assignee}《/formalExpression》
《/resourceAssignmentExpression》
《/humanPerformer》
《multiInstanceLoopCharacteristics isSequential="false"》
《loopDataInputRef》assigneeList《/loopDataInputRef》
《inputDataItem name="assignee"》《/inputDataItem》
《!-- userIdList --》
《completionCondition》${nrOfCompletedInstances/nrOfInstances 》= 0.6}《/completionCondition》
《/multiInstanceLoopCharacteristics》
《/userTask》《SPAN style="WHITE-SPACE: pre"》 《/SPAN》
《userTask id="thisTask2" name="myTask2"》
《humanPerformer》
《resourceAssignmentExpression》
《formalExpression》${assignee}《/formalExpression》
《/resourceAssignmentExpression》
《/humanPerformer》
《multiInstanceLoopCharacteristics isSequential="false"》
《loopDataInputRef》assigneeList《/loopDataInputRef》
《inputDataItem name="assignee"》《/inputDataItem》
《!-- userIdList --》
《completionCondition》${nrOfCompletedInstances/nrOfInstances 》= 0.6}《/completionCondition》
《/multiInstanceLoopCharacteristics》
《/userTask》
完工。

activiti 工作流 启动时如何取消自动建表到mysql数据库中

《property name="databaseSchemaUpdate" 》
false: 默认值。activiti在启动时,会对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常。
true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建。
create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)。
drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)。
从以上几种情况看,无法取消自动创建表。仅供参考。

怎样提高activiti工作流引擎查询数据的速度

在“文件”菜单上指向“新建”,然后选择“项目”。此时将打开“新建项目”对话框。在“项目类型”窗格中,选择“Visual C#”或“Visual Basic”(位于“其他语言”下),然后选择“工作流”。在“模板”窗格中,选择“工作流 Activity 库”。

基于Activiti6.0工作流结束退回

工作流结束退回,一般是跨流程使用,一般有其他解决方案,Activiti本身不支持退回;正常退回操作,在流程图画退回流程即可,但是,有些时候,我们只有正向流程,通过代码进行反向退回操作。

话不多说,上代码!

通过以上代码,可以实现平滑的工作流退回操作。不喜勿喷

关于activiti工作流状态工作流activity流程图 红色线条有什么意义,如果你有更妙的比喻或更独到的见解,欢迎在评论区“踢馆”,让我们共同进步。
本文编辑:admin

更多文章:


entirety是什么意思(its是什么意思)

entirety是什么意思(its是什么意思)

大家好,如果您对entirety是什么意思还心存疑问,别着急,今天这篇文章就将围绕its是什么意思为您展开详细解说。

2026年4月3日 22:40

maven仓库jar网站(如何利用maven向本地仓库导入官网没有的jar包)

maven仓库jar网站(如何利用maven向本地仓库导入官网没有的jar包)

还记得第一次接触maven仓库jar网站时的茫然吗?是如何利用maven向本地仓库导入官网没有的jar包这个概念,像一盏灯照亮了后续的路。本文将为你点亮这盏灯。

2026年4月3日 22:20

站长工具2021最新国产(站长推荐在线)

站长工具2021最新国产(站长推荐在线)

本文旨在为您说清楚两件事:一是站长工具2021最新国产到底是什么,二是如何理解站长推荐在线。内容不长,但都是干货,希望能对您有所帮助。

2026年4月3日 22:00

网页对话框不能粘贴(网页禁止复制粘贴怎样破解)

网页对话框不能粘贴(网页禁止复制粘贴怎样破解)

今天给各位分享网页禁止复制粘贴怎样破解的知识,其中也会对网页禁止复制粘贴怎样破解进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年4月3日 21:40

forests怎么读音(forests怎么读音)

forests怎么读音(forests怎么读音)

最新数据显示,关注forests怎么读音的人中,超过70%都对forests怎么读音抱有浓厚兴趣。本文将满足这一核心需求。

2026年4月3日 21:20

activiti工作流状态(工作流activity流程图 红色线条有什么意义)

activiti工作流状态(工作流activity流程图 红色线条有什么意义)

从我第一次听说activiti工作流状态到真正弄懂工作流activity流程图 红色线条有什么意义,也走过一些弯路。下面就把我的学习心得分享给大家,希望能让您的入门之路更顺畅。

2026年4月3日 21:00

1 6随机数字(excel怎么从1到6随机出123456)

1 6随机数字(excel怎么从1到6随机出123456)

很多朋友初次接触1 6随机数字可能会觉得有点陌生,这很正常。今天这篇文章,咱们就一起把excel怎么从1到6随机出123456这事儿聊透,希望能帮您理清思路。

2026年4月3日 20:40

argumentexception什么意思(unity3d里ArgumentException是什么意思呀)

argumentexception什么意思(unity3d里ArgumentException是什么意思呀)

常言道:“万丈高楼平地起”。理解argumentexception什么意思这座大厦,也必须从unity3d里ArgumentException是什么意思呀这块基石开始。

2026年4月3日 20:20

androidapi开发文档(android studio怎么生成api文档)

androidapi开发文档(android studio怎么生成api文档)

大家好,今天小编来为大家解答以下的问题,关于androidapi开发文档,android studio怎么生成api文档这个很多人还不知道,现在让我们一起来看看吧!

2026年4月3日 20:00

如何创建初始化数组(如何创建,初始化匿名数组)

如何创建初始化数组(如何创建,初始化匿名数组)

你是否好奇,为什么人人都在谈如何创建初始化数组?它和如何创建,初始化匿名数组之间究竟存在着怎样微妙的联系?答案就在下文。

2026年4月3日 19:40

最近更新

entirety是什么意思(its是什么意思)
2026-04-03 22:40:01 浏览:0
forests怎么读音(forests怎么读音)
2026-04-03 21:20:01 浏览:0
argumentexception什么意思(unity3d里ArgumentException是什么意思呀)
2026-04-03 20:20:01 浏览:0
androidapi开发文档(android studio怎么生成api文档)
2026-04-03 20:00:01 浏览:0
热门文章

html link(html5 link标签什么意思)
2026-04-03 12:20:02 浏览:0
springboot注解事务(SpringBoot 之@Transactional事务回滚)
2026-04-03 17:40:01 浏览:0
argumentexception什么意思(unity3d里ArgumentException是什么意思呀)
2026-04-03 20:20:01 浏览:0
标签列表