activiti要点纪要

activiti要点纪要,第1张

act_re_model 用于存放流程模型

act_re_procdef 用于存放流程定义

act_re_deployment 用于存放流程部署

act_ge_bytearray 用于存放各种二进制文件信息(包括流程模型的json,流程定义的xml以及他们各自对应的预览图以及流程进行中的数组参数)

act_re_procdef中会记录该流程定义所对应的部署id

同时,act_ge_bytearray中会记录流程定义所对应的xml和预览图(通过bytearray表中的deploymentId来记录),NAME字段会明确写出是xml还是预览图

也会记录流程模型所对应的json和预览图(act_re_model表中,EDITOR_SOURCE_VALUE_ID_记录的是json,EDITOR_SOURCE_EXTRA_VALUE_ID_记录的是预览图,都对应是act_ge_bytearray表中的ID)

execution是流程实例中的执行器,会有不止一个。

首先要说明,execution和task是两个独立的概念。

每一个节点正在进行的时候,必然会有一个execution停留在这个节点上,但是未必会有task

只有task类节点(如UserTask/EmailTask等等)会生成task(进行中的task存在act_ru_task表中),所以用task是否存在来判断该节点是否在进行是不妥当的。

但是task类节点通常会阻塞,等待人为调用接口来让其流转(最典型的就是UserTask),所以流转的接口才需要传入task。

这时候,task会进入act_hi_taskinst表中。

0首先一个流程实例启动,必然会有一个根execution(我们后面称为exec0)

1随后,exec0会生成一个子exec1并放置于流程图的开始节点(可以在act_ru_execution表中找到,父子execution使用表中的PARENT_ID_进行关联)。

2接着,exec1会根据流程图向前走。如果遇到并行网关,则会分裂。这里假设并行网关有两条支线,则会分裂出一个exec2

exec1和exec2分别走向并行网关的两条支线。最后在并行网关会合时,exec2被销毁。exec1继续复用,走下面的流程。

3根据流程图的不同,execution会分裂出若干个同级/子exection。例如上文提到的并行网关,以及后面要讲解的“调用活动”(callActivity)

下面有一个callActivity对应的例子图,可以参考。

未完待续

在查询流程实例时,通过 businessKey(业务标识 )关联查询业务系统的请假单表,查询出请假天

数等信息。

*** 作流程定义为挂起状态,该流程定义下边所有的流程实例全部暂停:

流程定义为挂起状态该流程定义将不允许启动新的流程实例,同时该流程定义下所有的流程实例将

全部挂起暂停执行。

*** 作流程实例对象,针对单个流程执行挂起 *** 作,某个流程实例挂起则此流程不再继续执行,完成

该流程实例的当前任务将报异常。

讲bpmn流程文件中节点的assignee 使用UEL表达式赋值( ${assignee0} )

任务监听器是发生对应的任务相关事件时执行自定义 java 逻辑 或表达式。

Create:任务创建后触发

Assignment:任务分配后触发

Delete:任务完成后触发

All:所有事件发生都触发

定义任务监听类,且类必须实现 orgactivitienginedelegateTaskListener 接口

在部门经理审核前设置流程变量,变量值为请假单信息(包括请假天数),部门经理审核后可以根据

流程变量的值决定流程走向。

通过流程实例 id 设置全局变量,该流程实例必须未执行完成。

任务办理时设置 local 流程变量,当前运行的流程实例只能在该任务结束前使用,任务结束该变量无

法在当前流程实例使用,可以通过查询历史任务查询。

注意:

任务 id 必须是当前待办任务 id,act_ru_task 中存在。

1Activiti表结构设计

Activiti的表结构设计分为两种类型:运行时(ACT_RU)、历史(ACT_HI)。

11 运行时变量

所有运行时的变量都保存在表:ACT_RU_VARIABLE中,这些变量可以在启动流程、完成任务、动态添加的方式插入到数据库,以便流程在处理中可以根据变量的值决定流程的走向。

12 历史变量呢?

为什么没有ACT_HI_VARIABLE这张表呢?

我在开始的时候也是苦恼为什么没有这张表,导致在跟踪历史流程信息的时候不能获取变量。

2了解历史级别

Activit默认提供了4中历史级别:

none: 不保存任何历史记录,可以提高系统性能;

activity:保存所有的流程实例、任务、活动信息;

audit:也是Activiti的默认级别,保存所有的流程实例、任务、活动、表单属性;

full: 最完整的历史记录,除了包含audit级别的信息之外还能保存详细,例如:流程变量。

对于几种级别根据对功能的要求选择,如果需要日后跟踪详细可以开启full。

3配置历史级别

31 在XML中配置

在引擎BeanprocessEngineConfiguration中配置:

<bean id="processEngineConfiguration" class="orgactivitispringSpringProcessEngineConfiguration">

<property name="history" value="full">

</property></bean>

32 动态配置

ProcessEngine processEngine = ProcessEngineConfiguration

createProcessEngineConfigurationFromResourceDefault()

setHistory("full")

buildProcessEngine();

4读取历史变量

现在再重启你的应用,启动流程或者在任务complete之后查看ACT_HI_DETAIL表的数据已经记录了。

41 Java代码-510版本之前

List<HistoricDetail> list = historyServicecreateHistoricDetailQuery()processInstanceId(processInstancegetId())list();

for (HistoricDetail historicDetail : list) {

HistoricVariableUpdate variable = (HistoricVariableUpdate) historicDetail;

Systemoutprintln("variable: " + variablegetVariableName() + " = " + variablegetValue());

}

42 Java代码-511版本之后

511版本在变量保存方面做了变动,单独创建了一张表ACT_HI_VARINST保存变量,可以通过下面的代码读取变量。

在流程资源文件中,每一个节点元素在activiti中都有对应的元素属性承载类,比如,UserTask任务节点,它的元素属性承载类为UserTask,相同,startEvent开始节点的元素承载类为StartEvent,在bpmn流程文件进行解析时,也是将xml文档中每个元素解析为对应的承载类,从而进行组装成一个BmpnModel模型,我们可以直接由activiti将bpmn xml文件解析为一个实例模型(下图所示),也可以完成通过自定义手动创建模型。

关于模型校验器更多细节可查看 activiti源码剖析之BpmnModel模型校验器

以上就是关于activiti要点纪要全部的内容,包括:activiti要点纪要、Activiti7工作流引擎进阶、activity怎么获取历史的流程变量等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9676626.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存