activiti学习文档文档格式.docx
- 文档编号:19663260
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:20
- 大小:690.68KB
activiti学习文档文档格式.docx
《activiti学习文档文档格式.docx》由会员分享,可在线阅读,更多相关《activiti学习文档文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
这样运行时表可以一直很小速度很快。
3)ACT_ID_*:
ID'
表示identity。
这些表包含身份信息,比如用户,组等等。
4)ACT_HI_*:
HI'
表示history。
这些表包含历史数据,比如历史流程实例,变量,任务等等。
5)ACT_GE_*:
通用数据,用于不同场景下。
2.3.1资源库流程规则表
1)act_re_deployment部署信息表
2)act_re_model流程设计模型部署表
3)act_re_procdef流程定义数据表
2.3.2运行时数据库表
1)act_ru_execution运行时流程执行实例表
2)act_ru_identitylink运行时流程人员表,主要存储任务节点与参与者的相关信息
3)act_ru_task运行时任务节点表
4)act_ru_variable运行时流程变量数据表
2.3.3历史数据库表
1)act_hi_actinst历史节点表
2)act_hi_attachment历史附件表
3)act_hi_comment历史意见表
4)act_hi_identitylink历史流程人员表
5)act_hi_detail历史详情表,提供历史变量的查询
6)act_hi_procinst历史流程实例表
7)act_hi_taskinst历史任务实例表
8)act_hi_varinst历史变量表
2.3.4组织机构表
1)act_id_group用户组信息表JBPM_ID_MEMBERSHIP
2)act_id_info用户扩展信息表
3)act_id_membership用户与用户组对应信息表
4)act_id_user用户信息表
这四张表很常见,基本的组织机构管理,关于用户认证方面建议还是自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足
2.3.5通用数据表
1)act_ge_bytearray二进制数据表
act_ge_property属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录,
2.4核心API
流程引擎(ProcessEngine)在Activiti中最核心的类,其他的类都是由他而来。
产生方式:
ProcessEngines的getDefaultProceeEngine方法时会自动加载classpath下名为activiti.cfg.xml文件。
可以产生RepositoryService
可以产生RuntimeService
可以产生TaskService
RepositoryService
管理流程定义
RuntimeService
执行管理,包括启动、推进、删除流程实例等操作
TaskService
任务管理
HistoryService
历史管理(执行完的数据的管理)
IdentityService
组织机构管理
FormService
一个可选服务,任务表单管理
各个Service的作用:
三、activiti开发环境准备
Activiti特色是提供了Eclipse插件,开发人员可以通过插件直接绘画出业务流程图。
流程设计器按照方法:
3.1、在线安装步骤如下:
打开
Help->
InstallNewSoftware.在如下面板中:
1)在如下Install界面板中,点击Add按钮:
配置新装插件的地址和名称
2)然后填入下列字段
Name:
ActivitiBPMN2.0designer
Location:
http:
//activiti.org/designer/update/
如图所示:
3)回到Install界面,在面板正中列表中把所有展示出来的项目都勾上:
4)点击复选框
在Detail部分记得选中"
Contactallupdatessites.."
因为它会检查所有当前安装所需要的插件并可以被Eclipse下载.
5)安装完以后,点击新建工程new->
Other…打开面板,如果看到下图内容:
说明安装成功了。
3.2、离线安装步骤如下:
1.解压
2.把压缩包中的内容放入eclipse根目录的dropins文件夹下
3.重启eclipse,点击新建工程new->
说明安装成功。
3.3、对流程设计器的使用说明
打开菜单Windows->
Preferences->
Activiti->
Save下流程流程图片的生成方式:
虽然流程引擎在单独部署bpmn文件时会自动生成图片,但在实际开发过程中,自动生成的图片会导致和BPMN中的坐标有出入,在实际项目中展示流程当前位置图会有问题。
所在完成以上配置后,会由我们自己来管理流程图片。
在发布流程时把流程规则文件和流程图片一起上传就行了。
3.4、BPMN2.0
业务流程建模与标注(BusinessProcessModelandNotation,BPMN),描述流程的基本符号,包括这些图元如何组合成一个业务流程图(BusinessProcessDiagram)
常用的流程符号:
如上图中的空白区为流程设计区域,流程设计就是将工具区的元素放到设计区形成流程图并可以给流程里的元素在配置区里配置一些属性。
1、事件:
●空开始事件
描述:
空开始事件技术上意味着没有指定启动流程实例的触发条件,而是利用API通过调用startProcessInstanceByXXX方法启动流程。
ProcessInstanceprocessInstance=runtimeService.startProcessInstanceByXXX();
图标:
工具区符号:
流程图图标:
xml:
<
startEventid="
start"
name="
mystartevent"
/>
●空结束事件
引擎会直接结束当前执行的分支,不会做其他事情。
Xml:
endEventid="
end"
myendevent"
2、顺序流:
,流程图中效果图如下:
顺序流是连接两个流程节点的连线。
流程执行完一个节点后,会沿着节点的所有外出顺序流继续执行。
就是说,BPMN2.0默认的行为就是并发的:
两个外出顺序流会创造两个单独的,并发流程分支。
sequenceFlowid="
flow1"
sourceRef="
theStart"
targetRef="
theTask"
3、用户任务
用户任务用来设置必须由人员完成的工作。
当流程执行到用户任务,会创建一个新任务,并把这个新任务加入到分配人或群组的任务列表中。
userTaskid="
Importanttask"
4、网关
网关用来控制流程的流向。
图标是一个菱形,菱形里面的小图标决定了网关的类型。
●排他网关(异或网关)
流程执行到此网关,所有外出顺序流都被处理一遍,处理结果为true的会被选中,流程会按照此顺序流继续运行。
注意:
排他网关处理多个外出顺序流时其结果可能会有多个为true,但是只有第一个会被选中。
如下都表示一个排他网关
exclusiveGatewayid="
exclusiveGw"
name="
ExclusiveGateway"
/>
sequenceFlowid="
flow2"
sourceRef="
targetRef="
theTask1"
>
<
conditionExpressionxsi:
type="
tFormalExpression"
${input==1}<
/conditionExpression>
/sequenceFlow>
flow3"
theTask2"
${input==2}<
flow4"
theTask3"
${input==3}<
●并行网关
并行网关是最简单的网关,主要作用是分支和聚合
分支:
并行后的所有外出顺序流,为每个顺序流都创建一个并发分支。
汇聚:
所有到达并行网关,在此等待的进入分支,直到所有进入顺序流的分支都到达以后,流程就会通过汇聚网关。
parallelGatewayid="
myParallelGateway"
●包含网关
包含网关是排他网关和并行网关的功能结合。
可以说是排他网关可以有多个外出顺序流或并行网关有了条件判断
inclusiveGatewayid="
myInclusiveGateway"
实例流程图:
4、审批组管理,任务分配
形成流程图的过程中需要给流程中的图元设置属性,如用户任务设置办理人、网关设置判断条件等。
4.1、审批组管理
点击“增加”一个组,用于某个环节的审批组;
选中一个组,点击“管理组内用户”跳转到管理组内用户界面;
在管理组内用户界面中,点击“选择组内用户”,弹出系统用户列表,然后选中审批人点击“添加”按钮,将系统用户同步到activiti工作流管理系统组织机构表中。
4.2、任务分配
4.2.1使用流程变量
使用流程变量,动态获取任务的办理者。
选择一个审批环节,如“经理审批环节”,有三种任务分配的配置项:
Assignee:
表示个人任务,只有一个可以查看、办理任务
Candidateusers:
表示为多人任务,多个人都可以查看、认领办理任务
Candidategroups:
表示为组任务,组内的成员都可以查看、认领办理任务。
通过流程变量设置他们的值,如Assignee设置为${inputUser},其中inputUser为流程变量,在程序中给流程变量赋值,那么这个任务就会分配给流程中设置的这个用户,当登录的时候就可以审核、办理这个任务了。
4.2.2使用任务处理器
使用任务处理器进行任务分配的步骤:
1)编写一个实现TaskListener接口的java类
2)实现相应逻辑,获取审批组管理中预先配置给这个环节的审批组
3)配置任务处理器
如图选择listeners项进入监听配置界面,配置监听动态设置任务办理者。
在Listenerconfiguration界面里点击“Selectclass”按钮,选择上面编写好的Java类。
这样配置完成后,当流程流转到该环节时,就会触发监听获取Java类中获取到的组,这个组就拥有了这个任务。
5、流程定义管理、流程实例管理
首先理解两个概念:
流程定义(规则)和流程实例。
流程定义:
通过流程设计器设计出的流程图,就是一个流程定义,是我们定义好的流程规则,流程会以这个规则进行流转。
流程实例:
启动流程会产生一个流程实例对象,流程实例对象是用来描述流程执行过程,流程实例对象会指向当前活动节点;
而每个活动节点都会对应一个节点执行对象,用来描述节点情况(比如活动节点id)。
(流程定义)(流程实例)
5.1、流程定义管理
●发布流程
方式一:
RepositoryService#createDeployment()
.name("
请假流程"
)//添加部署规则的显示别名
.addClasspathResource("
diagrams/Leave2.bpmn"
)//添加规则文件
diagrams/Leave2.png"
);
//添加规则图片
方式二:
.addZipInputStream(zipInputStream);
注意:
要同时发布bpmn和PNG文件,如果只发布bpmn文件,png自动生产的话流程图里会出现乱码。
发布流程表的变化,会在三张表中产生数据:
*act_ge_bytearray产生两条数据
*act_re_deployment产生一条数据
*act_re_procdef产生一条数据
●查看流程定义
ProcessDefinitionQuery#createProcessDefinitionQuery()
●删除流程
ProcessDefinitionQuery#deleteDeployment(deploymentId)
ProcessDefinitionQuery#deleteDeployment(deploymentId,true);
//也会删除历史记录
●查看流程图
查询资源--》转换为流--》保存为文件或浏览器显示
ProcessDefinitionQuery#getDeploymentResourceNames(deploymentId)
补充:
在act_re_procdef表key对应流程描述(bpmn)里的id
5.2、流程实例管理
数据库表的数据变化:
当流程到达一个节点时,会在act_ru_execution表中产生1条数据
如果当前节点是用户任务节点,这时会在act_ru_task表中产生1条数据(任务的办理人,任务的创建时间)
●启动流程实例
RuntimeService#startProcessInstanceByKey(key);
●查看任务
个人任务TaskQuery#taskAssignee(assignee)
组任务TaskQuery#taskCandidateUser(candidateAssignee)
●认领(拾取)任务TaskQuery#(taskId,userId)
●办理任务TaskQuery#complete()
●查看流程状态活的流程实例对象查看当前活动节点
TaskQuery#createProcessInstanceQuery().processInstanceId(processInstanceId)
ProcessInstance#getActivityId()
关于流程实例需要明确的几个问题:
1.一个流程只有一个流程实例对象
2.流程实例对象永远指向当前活动的节点
3.一个流程的流程实例的ID永远不会变
4.如果是单线流程,流程实例就是Execution;
如果是分支流程(并行流程),这时会在分支处产生一个Execution(root),分支流程中每个节点产生的execution,会统一挂在Execution(root)下
(单线流程)(并行流程)
6、流程历史
虽然已完成的任务在act_ru_task和act_ru_execution表中都已被删除,但是这些数据还存在activiti的数据库中,作为历史改由HistoryService来管理。
历史是一个组件,它可以捕获发生在进程执行中的信息并永久的保存,与运行时数据不同的是,当流程实例运行完成之后它还会存在于数据库中。
在流程引擎配置对象中可以设置历史记录规则:
由于数据库中保存着历史信息以及正在运行的流程实例信息,在实际项目中对已完成任务的查看频率远不及对代办和可接任务的查看,所以在activiti采用分开管理,把正在运行的交给runtimeService管理,而历史数据交给HistoryService来管理。
对已成为历史的数据主要进行查询操作,我们主要关心两种类型的历史数据:
HistoricProcessInstance包含当前和已经结束的流程实例信息。
HistoricActivityInstance包含一个活动(流程上的节点)的执行信息。
6.1查看历史流程实例
查看用户按照某个流程规则执行了多少次流程。
说明:
通常查询历史流程实例都需要指定一个过滤条件,指定processDefinitionId查看具体某一次部署所开启的流程或者指定processDefinitionKey查看某个规则下不限版本的所有流程。
可以选择性添加finished方法控制是否查询未完成的流程实例。
在流程开启时,activiti同时在act_ru_execution表和act_hi_procinst表中创建了一条记录,在流程完成之前act_hi_procinst表中实例的结束时间为空。
6.2查看历史流程活动
通常查询历史流程活动都需要指定一个过滤条件,指定processInstanceId查看具体某一次流程执行过程中所经历的步骤。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- activiti 学习 文档
