activiti 定时边界相关
来源:互联网 发布:lol符文法师咋样知乎 编辑:程序博客网 时间:2024/05/22 18:22
在activiti开发中经常会碰到节点之间互相跳转的需求,正常的跳转,用下面代码即可完成:
public class JumpCmd implements Command<Object> { private String activityId; private String processInstanceId; @Autowired private ManagementService managementService; @Autowired private RuntimeService runtimeService; public JumpCmd(String processInstanceId, String activityId){ this.activityId = activityId; this.processInstanceId = processInstanceId; } public Object execute(CommandContext commandContext) { List<Execution> executionList = runtimeService.createExecutionQuery().executionId(processInstanceId).list(); for (Execution execution : executionList) { String executionId = execution.getId(); managementService.executeCommand(new EndEntityCmd(processInstanceId, executionId, null)); } ExecutionEntity executionEntity = commandContext.getExecutionEntityManager().findExecutionById(processInstanceId); ProcessDefinitionImpl processDefinition = executionEntity.getProcessDefinition(); ActivityImpl activity = processDefinition.findActivity(activityId); executionEntity.executeActivity(activity); return null; }}
但是这里会有个问题 ,当跳转到带有定时边界任务的task时,定时job没有在job表中生成,做下面修改后即可:
public Object execute(CommandContext commandContext) { List<Execution> executionList = ActivitiUtil.runtimeService.createExecutionQuery().processInstanceId(processInstanceId).list(); for (Execution execution : executionList) { String executionId = execution.getId(); ActivitiUtil.managementService.executeCommand(new EndEntityCmd(processInstanceId, executionId, null)); } ExecutionEntity executionEntity = commandContext.getExecutionEntityManager().findExecutionById(processInstanceId); ProcessDefinitionImpl processDefinition = executionEntity.getProcessDefinition(); ActivityImpl activity = processDefinition.findActivity(activityId); InterpretableExecution propagatingExecution = null; if (activity.isScope()) { propagatingExecution = (InterpretableExecution) executionEntity.createExecution(); propagatingExecution.setActivity(activity); propagatingExecution.setTransition(executionEntity.getTransition()); executionEntity.setTransition(null); executionEntity.setActivity(null); executionEntity.setActive(false); propagatingExecution.initialize(); propagatingExecution.performOperation(AtomicOperation.TRANSITION_NOTIFY_LISTENER_START); } else {// propagatingExecution = executionEntity; executionEntity.executeActivity(activity); }// propagatingExecution.performOperation(AtomicOperation.TRANSITION_NOTIFY_LISTENER_START); return null; }
0 0
- activiti 定时边界相关
- 请教一个activiti定时边界事件的用法
- Activiti定时任务示例
- Activiti定时任务示例
- activiti定时流程
- 边界布局相关代码
- Activiti相关文档
- activiti jbpm相关资源
- Activiti相关信息
- activiti 表相关
- Activiti 错误结束事件和边界错误事件
- Activiti工作流面试相关知识!
- 快速入门Activiti相关资料
- 使用activiti相关API步骤
- Activiti工作流面试相关知识!
- Activiti工作流-流程实例相关
- activiti工作流的相关方法
- activiti工作流相关表查询
- android顶部状态栏透明化,并释放空间
- 正向代理和反向代理的区别
- 如何让myeclipse实现包的分层效果
- php四种基础算法:冒泡,选择,插入和快速排序法
- 使用logstash+elasticsearch+kibana快速搭建日志平台
- activiti 定时边界相关
- 简单谈谈对android studio 的单元测试
- boost 字符串与文本处理 -> lexical_cast
- LabVIEW——Case结构
- Linux CentOS 6.4/6.5 配置VPN【图文|详细教程】
- react配置之浅谈
- 获取web服务器状态
- 使用动态类型Dynamic Type
- Tomcat下Server.xml配置详解