博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
activity任意节点跳转
阅读量:6330 次
发布时间:2019-06-22

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

/**     *      * @Description (跳转任意目标节点)     * @author feizhou     * @Date 2018年3月28日上午10:23:00     * @version 1.0.0     * @param map     *            taskId,destTaskKey,rejectMessage,outcome     */    public void skipStipulationTask(Map
map) { String taskId = (String) map.get("taskId"); // 目标任务key String destTaskKey = (String) map.get("destTaskKey"); //审批消息 String rejectMessage = (String) map.get("rejectMessage"); //流程线 String outcome = (String) map.get("outcome"); //业务的用户ID String uid = (String) map.get("uid"); //审批消息 String message = (String) map.get("message"); // 使用任务ID,获取任务信息 Task taskEntity = getTask(taskId); // 获得当前任务的流程实例ID String processInstanceId = taskEntity.getProcessInstanceId(); // 获得当前任务的流程定义ID String processDefinitionId = taskEntity.getProcessDefinitionId(); // 当前任务key String currtaskDefKey = taskEntity.getTaskDefinitionKey(); // 获得当前活动节点和驳回的目标节点"draft" ActivityImpl currActiviti = null;// 当前活动节点 ActivityImpl destActiviti = null;// 驳回目标节点 currActiviti = getActivityImpl(currtaskDefKey, processDefinitionId); destActiviti = getActivityImpl(destTaskKey, processDefinitionId); // 保存当前活动节点的流程流出参数 List
hisPvmTransitionList = new ArrayList
(0); for (PvmTransition pvmTransition : currActiviti.getOutgoingTransitions()) { hisPvmTransitionList.add(pvmTransition); } // 清空当前活动节点的所有流出项 currActiviti.getOutgoingTransitions().clear(); // 为当前节点动态创建新的流出项 TransitionImpl newTransitionImpl = currActiviti.createOutgoingTransition(); // 为当前活动节点新的流出项指定为目标流程节点 newTransitionImpl.setDestination(destActiviti); // 保存驳回意见 taskEntity.setDescription(rejectMessage);// 设置驳回意见 taskService.saveTask(taskEntity); /** * 注意:添加批注的时候,由于Activiti底层代码是使用: String userId = * Authentication.getAuthenticatedUserId(); CommentEntity comment = new * CommentEntity(); comment.setUserId(userId); * 所有需要从Session中获取当前登录人,作为该任务的办理人(审核人),对应act_hi_comment表中的User_ID的字段, * 不添加审核人,该字段为null * 所以要求,添加配置执行使用Authentication.setAuthenticatedUserId();添加当前任务的审核人 */ Authentication.setAuthenticatedUserId(uid); taskService.addComment(taskId, processInstanceId, message); // 设定驳回标志 Map
variables = new HashMap
(0); variables.put("outcome", outcome); // 执行当前任务驳回到目标任务draft taskService.complete(taskEntity.getId(), variables); // 清除目标节点的新流入项 destActiviti.getIncomingTransitions().remove(newTransitionImpl); // 清除原活动节点的临时流程项 currActiviti.getOutgoingTransitions().clear(); // 还原原活动节点流出项参数 currActiviti.getOutgoingTransitions().addAll(hisPvmTransitionList); }
/**     *      * @Description (通过任务key,获取对应的节点信息)     * @author feizhou     * @Date 2018年3月28日下午1:53:29     * @version 1.0.0     * @param taskKey     * @return     */    public ActivityImpl getActivityImpl(String destTaskKey, String processDefinitionId) {        // 获得当前流程的定义模型        ProcessDefinitionEntity processDefinition = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService)                .getDeployedProcessDefinition(processDefinitionId);        // 获得当前流程定义模型的所有任务节点        List
activitilist = processDefinition.getActivities(); // 获得当前活动节点和驳回的目标节点"draft" ActivityImpl descActiviti = null;// 当前活动节点 for (ActivityImpl activityImpl : activitilist) { // 获取节点对应的key String taskKey = activityImpl.getId(); // 确定当前活动activiti节点 if (destTaskKey.equals(taskKey)) { descActiviti = activityImpl; break; } } return descActiviti; }

转载于:https://www.cnblogs.com/feiZhou/p/9344031.html

你可能感兴趣的文章
EOS主网上线只是开始,如何运营决定未来
查看>>
不用Visual Studio,5分钟轻松实现一张报表
查看>>
(译)如何使用cocos2d和box2d来制作一个Breakout游戏:第一部分
查看>>
计算机图形学(一) 图形系统综述
查看>>
持续集成(CI)- 几种测试的区别(摘录)
查看>>
多用户虚拟Web3D环境Deep MatrixIP9 1.04发布
查看>>
求高手,求解释
查看>>
[MSSQL]NTILE另类分页有么有?!
查看>>
winform datagridview 通过弹出小窗口来隐藏列 和冻结窗口
查看>>
C机顶盒开发实战常用初始化类型:数组、结构、指针
查看>>
Jquery闪烁提示特效
查看>>
最佳6款用于移动网站开发的 jQuery 图片滑块插件
查看>>
C++ String
查看>>
获取系统托盘图标的坐标及文本
查看>>
log4j Test
查看>>
HDU 1255 覆盖的面积(矩形面积交)
查看>>
Combinations
查看>>
SQL数据库无法附加,提示 MDF" 已压缩,但未驻留在只读数据库或文件组中。必须将此文件解压缩。...
查看>>
第二十一章流 3用cin输入
查看>>
在workflow中,无法为实例 ID“...”传递接口类型“...”上的事件“...” 问题的解决方法。...
查看>>