Activiti学习总结

本文介绍了Activiti工作流引擎在实际应用中遇到的问题及解决方案,包括解决流程图显示乱码的方法,详细讲解了业务与流程的关联方式,如`runtimeService.startProcessInstanceByKey`和`runtimeService.startProcessInstanceById`的使用场景,并探讨了不同状态任务的查询和业务对象关联。此外,还展示了任务委派的实现方式,包括如何进行任务签收、委派和完成操作。
摘要由CSDN通过智能技术生成
1.获得流程图乱码问题

修改源码

org.activiti.engine.impl.bpmn.diagram.ProcessDiagramCanvas

在构造方法

public ProcessDiagramCanvas(int width, int height)


中有一行代码是设置字体的,默认是用Arial字体,这就是乱码产生的原因,把字改为本地的中文字体即可,例如:


Font font = new Font("WenQuanYi Micro Hei", Font.BOLD, 11);


从5.12版本开始支持设置字体名称,在引擎中添加如下设置,在生成图片时即可使用微软雅黑设置图片中的文字。

<property name="activityFontName" value="微软雅黑"></property>


2.业务和流程的关联方式

runtimeService.startProcessInstanceByKey
javadoc对其说明:


startProcessInstanceByKey(String processDefinitionKey, Map variables) 
          Starts a new process instance in the latest version of the process definition with the given key


其中businessKey就是业务ID,例如要申请请假,那么先填写登记信息,然后(保存+启动流程),因为请假是单独设计的数据表,所以保存后得到实体ID就可以把它传给processInstanceBusinessKey方法启动流程。当需要根据businessKey查询流程的时候就可以通过API查询:


runtimeService.createProcessInstanceQuery().processInstanceBusinessKey(processInstanceBusinessKey, processDefinitionKey)


建议数据库冗余设计:在业务表设计的时候添加一列:PROCESS_INSTANCE_ID varchar2(64),在流程启动之后把流程ID更新到业务表中,这样不管从业务还是流程都可以查询到对方!

特别说明: 此方法启动时自动选择最新版本的流程定义。

runtimeService.startProcessInstanceById

javadoc对其说明:


startProcessInstanceById(String processDefinitionId, String businessKey, Map variables) 
          Starts a new process instance in the exactly specified version of the process definition with the given id.


processDefinitionId:这个参数的值可以通过repositoryService.createProcessDefinitionQuery()方法查询,对应数据库:ACT_RE_PROCDEF;每次部署一次流程定义就会添加一条数据,同名的版本号累加。

特别说明: 此可以指定不同版
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值