博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
activiti 自定义任务事件扩展
阅读量:6041 次
发布时间:2019-06-20

本文共 2063 字,大约阅读时间需要 6 分钟。

最近工作上一直在用activiti作工作流,发现工作流程使用起来真的挺费劲的!

这不,业务需求有来有,用户希望在回复沟通时,能触发回复沟通事件,而用户通过该事件触发他的业务事件。
回复沟通是这边流程的自定义的操作, activti没这种操作,怎么办?看来只能动手自己扩展了
1.Web端
要扩展,首先要在页面上要有地方配置,因为这个跟任务绑定在一起的,放在任务监听器中
找到页面task-listeners-popup.html(这边用的是activiti-explorer),发现很简单,只需要在下拉里加入配置即可

如上表格所示,在select中扩展了自己的操作

显示结果如下

img_bbabe4738284dc7df2f46e2d004da891.png
clipboard.png

OK,前端改造完成,用户可以选择了.

2.后端代码

跟一下代码,发现对象TaskEntity有发布事件的方法fireEvent,那急急的加入以下代码

TaskEntity task = (TaskEntity) taskService.createTaskQuery().taskId(taskId).singleResult();   //发布操作事件   task.fireEvent("drafter_submit");

成功了吗?测试一下,Oh,Shit,报错了!

java.lang.NullPointerException: null at org.activiti.engine.impl.persistence.entity.TaskEntity.getTaskDefinition(TaskEntity.java:797) at org.activiti.engine.impl.persistence.entity.TaskEntity.fireEvent(TaskEntity.java:728)

经分析,是里面的Context没有,怎么办呢??考虑了一下,命令模式有这个东东呀,那我直接用命令模式来实现试试.

import java.util.Map;import org.activiti.engine.impl.cmd.NeedsActiveTaskCmd;import org.activiti.engine.impl.context.Context;import org.activiti.engine.impl.interceptor.CommandContext;import org.activiti.engine.impl.persistence.entity.TaskEntity; public class OperationCommand extends NeedsActiveTaskCmd
{ public OperationCommand(String taskId) { super(taskId); // TODO Auto-generated constructor stub } private Map
formData; private String operationCode; @Override protected Boolean execute(CommandContext commandContext, TaskEntity task) { // TODO Auto-generated method stub Context.getCommandContext().getProcessEngineConfiguration().getTaskService().complete(task.getId(), formData); // 发布操作事件 task.fireEvent(operationCode); return true; } public OperationCommand(String taskId, Map
formData, String operationCode) { super(taskId); this.formData = formData; this.operationCode = operationCode; }}

原来的执行的代码改为

((RuntimeServiceImpl)runtimeService).getCommandExecutor().execute(new OperationCommand(taskId,formData,“specCode”));

经测试,意外惊喜,成功了!

至此,流程任务自定义事件扩展成功!

转载地址:http://cxghx.baihongyu.com/

你可能感兴趣的文章
神奇语言 python 初识函数
查看>>
Windows安装Composer出现【Composer Security Warning】警告
查看>>
企业架构研究总结(22)——TOGAF架构开发方法(ADM)之信息系统架构阶段
查看>>
frameset分帧问题
查看>>
特殊样式:ime-mode禁汉字,tabindex焦点
查看>>
linux
查看>>
Layout父元素点击不到的解决办法
查看>>
【面试次体验】堆糖前端开发实习生
查看>>
基于apache实现负载均衡调度请求至后端tomcat服务器集群的实现
查看>>
C#+QQEmail自动发送邮件
查看>>
[Hadoop]MapReduce多输出
查看>>
Android Activity详解(一)
查看>>
让我去健身的不是漂亮小姐姐,居然是贝叶斯统计!
查看>>
MySQL 数据约束
查看>>
我的友情链接
查看>>
SERVLET容器简介与JSP的关系
查看>>
《服务器SSH Public Key认证指南》-补充
查看>>
我的友情链接
查看>>
Java break continue return 的区别
查看>>
算法(Algorithms)第4版 练习 1.3.4
查看>>