Activiti工作流小结

原创
2019/02/13 10:27
阅读数 352

最近公司做的项目用到了工作流,便买了一本书进行学习和应用,

感觉activiti限制颇多,很多功能实现不了中国式全自由流程,

自由流是一种选择,但是因为不能让用户选择领导部门,所以就把这个方案给否了。

然后就开始模仿activiti机制自己写一套流程机制,

从节点的类型【顺序节点、分支节点、结束节点、子流程节点等】

到自定义表单,表单对应当前模型,每个节点也对应的相关展示表单项,实现动态控制流程和表单

目前这种实现方案还在继续使用,但总归自己封装的,没有activiti机制封装的好

所以又采用 acitviti+自己定义的动态表单 实现一版,作为后续升级更新版本

个人感觉这个版本还挺方便的,虽然开发工作量大,

但后期使用和维护人员会很轻松,开发可以不介入创建流程等操作。

对于实现分方法做一个简单的总结,不足之处欢迎大家给我指出。

第一步:activiti-modeler模型设计器,在上几篇文章中有体现,包括代码什么的都很详细,具体的项目再百度云盘里,文章结尾有连接。

 设计节点期间,我没有采用activiti自带的用户和组相应机制,所以我这里除了开始节点、结束节点、和发起表单节点以外采用的都是统一格式

采用会签节点来放置一个 transactorIdList 容器,这样做比较灵活

我们可以在代码中动态获取下一节点id,然后根据配置的节点处理人动态来创建代办。

##############################################################################################

获取下一节点:

之后根据返回的节点id(这里包含了网关,任务接单,以及子例程等情况), 根据下一节点id 获取下一节点处理人这一块是自己配置的。

对于网关,可在线上写流转条件, 然后在 上图 variables动态设置流转条件。

###############################################################################

 

流程发布时 保存节点和子节点信息

记得要去重, 这里我是根据节点id来去重的。

###################################################################################################

 

配置好以后在办理过程中就很简单了,回显方面可采用 自己创建的动态表单+历史表 创建视图进行回显。

如果时间允许,自己定义实例表单,存储自己需要的节点处理历史更好。

最理想的方式就是 activiti流转机制+动态表单+动态处理人   

activiti本身自带的组、用户、历史等全部可以丢掉,

发起办理时的表单、处理的时的表单回显(这里使用的freemaker直接生成的html代码块)、办理时获取节点处理人等我就不一一贴代码,业务不同,表结构不同获取方式也不同,

处理时遇到的子流程、调用活动、撤回、驳回、非正常结束等一些特殊节点和功能,会有特殊介绍。

 

运行效果:

模型配置表单

节点配置表单和处理人 :

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部