牵着代码走流程的activiti

在工作中遇到了一个问题,有一个任务单需要多个任务组签收处理,而这几个任务组之间处理时存在着先后顺序,单凭着各个任务组之间的是否完成的状态来判断下个任务组是否可以进行处理的话,在流程处理上是比较容易出现问题的,而且也不好记录各组的工作时间,那有什么好的办法能让程序跟着我们所规定的流程走呢,那就可以用到activiti工作流了。

定义

学习activiti之前当然要知道它的定义啦,这个英文在字典里可查不到,它仅代表了这个工作流:Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM平台,创始人Tom Baeyens是JBoss jBPM的项目架构师,开发人员可以通过插件直接绘画出业务流程图。

安装activiti插件

第一步:在idea安装activiti插件,1:点击菜单中的File(最左上角),选择settings。

在plugins,查找actiBPM插件,在最右边点击install安装一下就可以。

按照设计的流程画出流程图

按照下图操作点击左上角的File按钮,新建一个BPMN文件,我们就可以画出一个流程图。

在画图之前 ,我们当然要了解一下右边栏的元素各代表什么含义啦,这里只是节结合我们的流程做一个见简单的粗略的介绍,详细的还是要各位去看文档,在这里我们先做一个最简单的请假流程吧:请假人(阿勇)------>提交申请----->主管审批----->总监审批----->请假成功。

首先选择Start按钮,拖到白色区域,这是一个流程的开始按钮,点击一个按钮,然后可以输入按钮的id和name,Event Type里有多重选择,这个开始按钮也有多种类型,接着我们就要请假人与审批了。

接着再选择一个UserTask按钮,表示一个需要人为处理的任务,后面的两个和第一个一样,加上主管和总监。

最后选择一个EndEvent按钮,表示流程的结束,将各个按钮进行连线。(将鼠标放到每个按钮的“正中心”,会出现人头鼠标,然后拖着到想要链接的另外一个按钮即可,出现线条)。

最后这个流程可以生成一个png文件,选把文件后缀名加上.xml,点击右键。

点击只有自动生成png文件。

点击红色框框的按钮图片就会保存下来,之后可以将文件的后缀改回来,之后部署流程还需要流程图。

导入activiti需要的jar包

接着,我们就可以开始部署流程了,但是在部署流程之前当然不能忘记导入activiti的jar包,这里是通过maven统一管理了,创建一个application.properties文件。这个主要是用于存放后面acitivi部署流程中,创建的相关联的一些表。

创建activiti自带的表

创建一个数据库生成,要保证本地有对应名字的数据库和上面配置文件里配置的一样。

运行了这个test之后,数据库里会自动生成25张表,是activiti所需要用的。

大致了解这些表的功能也很重要:

Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。

ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。

ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。

ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。

ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。

ACT_GE_*: 通用数据, 用于不同场景下,如存放资源文件。

资源库流程规则表

1) act_re_deployment 部署信息表

2) act_re_model 流程设计模型部署表

3) act_re_procdef 流程定义数据表

运行时数据库表

1) act_ru_execution运行时流程执行实例表

2) act_ru_identitylink运行时流程人员表,主要存储任务节点与参与者的相关信息

3) act_ru_task运行时任务节点表

4) act_ru_variable运行时流程变量数据表

历史数据库表

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历史变量表

组织机构表

1) act_id_group用户组信息表

2) act_id_info用户扩展信息表

3) act_id_membership用户与用户组对应信息表

4) act_id_user用户信息表

这四张表很常见,基本的组织机构管理,关于用户认证方面建议还是用自己的一套,组件自带的功能太简单,使用中有很多需求难以满足

通用数据表

1) act_ge_bytearray二进制数据表

2) act_ge_property属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录

根据流程图部署流程,完成请假

下面我们就正式开始部署流程了,部署流程的第一步:

act_ge_property表自动多出了三条数据:

act_re_procdef 流程定义数据表中就多了一条我们定义的流程咯~

到这里这个流程就部署完成了 我们可以开始进行各个环节人员的测试,一个个@test过程中注意act_get_bytearray,act_ru_task和act_re_procdef,三张表 ,每一步都会出现变化,最后就会走完整个流程完成请假申请。

act_hi_taskinst 表中会出现对应数据:

每一次执行完,在act_ru_task表中都会出现一条对应的数据,流程进行到下一次时会覆盖原有数据,生成新的数据,当最后一步执行完时数据会删除。

执行结果:

执行完成的任务:3

所有的总任务数(执行完和当前未执行完):3

这上面就是关于对于项目部署以及Actitivi项目流程的一些介绍了。当然,对于Actitivi这个框架,提供的只是部分的API接口,而且当我们刚开始接触的时候,对于里面内部存在的表的关系还会很模糊,需要不断地学习。

“睿盾资讯”

“睿盾资讯”是专业抗DDoS信息分享平台,汇聚政企、金融、游戏、视频等行业的网络安全解决方案、攻击态势一手资讯、抗D前沿技术分析。平台拥有云清联盟、C-CSA等多个专业信息渠道,为用户提供最具价值内容。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180930G1GDUC00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券