自己改别人的会签-2.2

本文详细阐述了一段用于改进活动执行流程、优化任务完成机制的代码实现。通过设置变量、判断条件和执行任务操作,确保了流程的顺畅进行。重点介绍了如何根据信号名称调整任务执行路径,以及在不同情况下如何处理任务完成状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

请不要骂我,我在别人的基础上改的,但是可以跑通的。

完成子任务:
public void signal(ActivityExecution activityExecution, String signalName,
Map<String, ?> parms) throws Exception {
ExecutionImpl executionImpl = (ExecutionImpl) activityExecution;
Object obj = executionImpl.getVariable("finalResult") ;
if(obj == null || "".equals(obj))
{
executionImpl.setVariable("finalResult", true) ;
}

boolean finalResult = (Boolean) executionImpl.getVariable("finalResult") ;
boolean temp = (Boolean)executionImpl.getVariable("tempResult") ;
executionImpl.setVariable("finalResult", finalResult & temp) ;

ProcessInstance pi = (ProcessInstance) executionImpl
.getProcessInstance();
TaskService taskService = Configuration.getProcessEngine()
.getTaskService();
Activity activity = executionImpl.getActivity();
List<Task> tasks = taskService.createTaskQuery().processInstanceId(
pi.getId()).list();

List<Task> subTask_list = taskService.getSubTasks(tasks.get(0).getId());
Iterator<Task> iter = subTask_list.iterator();
while (iter.hasNext()) {
Task subtask = iter.next();
if (parms.get("username").equals(subtask.getAssignee())) {
taskService.completeTask(subtask.getId());
}
}
if (subTask_list == null || subTask_list.size() == 1) {
Transition transition = null;
Transition transition1 = null;
Transition transition2 = null;
if ((signalName == null)
|| ((Task.STATE_COMPLETED.equals(signalName))
&& (activity.getOutgoingTransitions() != null) && (activity
.getOutgoingTransitions().size() == 1))) {
transition1 = activity.getOutgoingTransitions().get(0);
transition2 = activity.getOutgoingTransitions().get(1);
} else {
// 审批完成的情况
transition1 = activity.findOutgoingTransition(signalName);
}

// 判断走那一条路径
finalResult = (Boolean) executionImpl.getVariable("finalResult") ;
if(finalResult)
{
transition = transition1.getName().equals("归档") ? transition1 : transition2 ;
}
else
{
transition = transition1.getName().equals("审稿") ? transition1 : transition2 ;
}

// -----------------------------------------------------
executionImpl.setHistoryActivityInstanceDbid(executionImpl.getHistoryActivityInstanceDbid()-1);
DbSession dbsession = EnvironmentImpl.getFromCurrent(DbSession.class);
dbsession.update(executionImpl) ;
dbsession.flush() ;
// -----------------------------------------------------

taskService.completeTask(tasks.get(0).getId());
executionImpl.take(transition);
} else {
executionImpl.waitForSignal();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值