首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

自个儿改别人的会签-2.2

2012-06-28 
自己改别人的会签-2.2请不要骂我,我在别人的基础上改的,但是可以跑通的。完成子任务:public void signal(Ac

自己改别人的会签-2.2
请不要骂我,我在别人的基础上改的,但是可以跑通的。

完成子任务:
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();
}
}

热点排行