Shark流程挂起过程
1) 得到执行管理器接口
ExecutionAdministration ea= Shark.getInstance().getAdminInterface()..getExecutionAdministration();
2) 连接工作流服务器
ea.connect(username, password, enginename, scope);
3) 用流程实例号获取流程
WfProcess wfp = ea.getProcess(processInsKey);
4) 挂起流程
wfp.suspend();
下面是挂起操作的具体分析
//状态不能是已经挂起
if (state(t).equals(SharkConstants.STATE_OPEN_NOT_RUNNING_SUSPENDED)) {
throw new AlreadySuspended("The process is already suspended");
}
//运行中的流程才能挂起
if (state(t).startsWith(SharkConstants.STATEPREFIX_OPEN_NOT_RUNNING)) {
throw new NotRunning("The process is not in the running state");
}
try {
//改变状态
change_state(t,SharkConstants.STATE_OPEN_NOT_RUNNING_SUSPENDED);
Iterator it=getActiveActivities(t).iterator();
while (it.hasNext()) {
WfActivityInternal act=(WfActivityInternal)it.next();
//对每个活动都做同样的操作
if (act.state(t).startsWith(SharkConstants.STATEPREFIX_OPEN)) {
act.suspend(t);
}
}
}
5) 断开连接
ea.disconnect();