本部分为对流程节点的控制和查看。
1 submitDoc公文创建者提交公文
public void submitDoc() {
Document doc = (Document) getJbpmContext().getSession().load(
Document.class, 3);
ProcessInstance processInstance = getJbpmContext().getProcessInstance(
doc.getProcessIntanceId());
// 触发流程实例走向下一步
processInstance.getRootToken().signal();
getJbpmContext().close();
log.info("____________________公文创建者提交公文!");
}
2 getNode当前所处的节点
public void getNode() {
Document doc = (Document) getJbpmContext().getSession().load(
Document.class, 3);
ProcessInstance processInstance = getJbpmContext().getProcessInstance(
doc.getProcessIntanceId());
// 当前节点?
log.error(processInstance.getRootToken().getNode().getName());
getJbpmContext().close();
log.info("____________________公文在流程中的节点!");
}
3 getTask某用户的是否有公文等待其审批
public void getTask() {
List tasks = getJbpmContext().getTaskMgmtSession().findTaskInstances(
"张三");
System.err.println("张三的文档有:");
for (Iterator iter = tasks.iterator(); iter.hasNext();) {
TaskInstance taskInstance = (TaskInstance) iter.next();
System.err.println(taskInstance.getId());
Integer docId = (Integer) taskInstance.getVariable("document");
System.err.println(docId);
}
List tasks1 = getJbpmContext().getTaskMgmtSession().findTaskInstances(
"李四");
System.err.println("李四的文档有:");
for (Iterator iter = tasks1.iterator(); iter.hasNext();) {
TaskInstance taskInstance = (TaskInstance) iter.next();
System.err.println(taskInstance.getId());
Integer docId = (Integer) taskInstance.getVariable("document");
System.err.println(docId);
}
List tasks2 = getJbpmContext().getTaskMgmtSession().findTaskInstances(
"王五");
System.err.println("王五的文档有:");
for (Iterator iter = tasks2.iterator(); iter.hasNext();) {
TaskInstance taskInstance = (TaskInstance) iter.next();
System.err.println(taskInstance.getId());
Integer docId = (Integer) taskInstance.getVariable("document");
System.err.println(docId);
}
getJbpmContext().close();
log.info("____________________某用户的是否有公文等待其审批!");
}
4 goNext查找到当前的任务对应的公文之后,即可对其审批,并继续流转
因为本示例程序当中有三个节点,要分别执行testFlowNextNode();testFlowNextNode2();testFlowNextNode3();三个方法到下一级节点。
public void goNext() {
testFlowNextNode();
//testFlowNextNode2();
//testFlowNextNode3();
log.info("____________________查找到当前的任务对应的公文之后,即可对其审批,并继续流转!");
}
/** *********************不同角色人员进行审批公文******************************************** */
// 张三审批
public void testFlowNextNode() {
List tasks = getJbpmContext().getTaskMgmtSession().findTaskInstances(
"张三");
System.err.println("张三的文档有:");
for (Iterator iter = tasks.iterator(); iter.hasNext();) {
TaskInstance taskInstance = (TaskInstance) iter.next();
Integer docId = (Integer) taskInstance.getVariable("document");
System.err.println(docId);
}
// 依次对张三的公文进行提交
for (Iterator iter = tasks.iterator(); iter.hasNext();) {
TaskInstance taskInstance = (TaskInstance) iter.next();
// 张三已经审批结束,继续提交,这将触发流程继续向下流动!
taskInstance.end();
Integer docId = (Integer) taskInstance.getVariable("document");
System.err.println(docId + "已被审批完成");
}
getJbpmContext().close();
}
// 李四审批
public void testFlowNextNode2() {
List tasks = getJbpmContext().getTaskMgmtSession().findTaskInstances(
"李四");
System.err.println("李四的文档有:");
for (Iterator iter = tasks.iterator(); iter.hasNext();) {
TaskInstance taskInstance = (TaskInstance) iter.next();
Integer docId = (Integer) taskInstance.getVariable("document");
System.err.println(docId);
}
// 依次对李四的公文进行提交
for (Iterator iter = tasks.iterator(); iter.hasNext();) {
TaskInstance taskInstance = (TaskInstance) iter.next();
// 李四已经审批结束,继续提交,这将触发流程继续向下流动!
taskInstance.end();
Integer docId = (Integer) taskInstance.getVariable("document");
System.err.println(docId + "已被审批完成");
}
getJbpmContext().close();
}
// 王五审批
public void testFlowNextNode3() {
List tasks = getJbpmContext().getTaskMgmtSession().findTaskInstances(
"王五");
System.err.println("王五的文档有:");
for (Iterator iter = tasks.iterator(); iter.hasNext();) {
TaskInstance taskInstance = (TaskInstance) iter.next();
Integer docId = (Integer) taskInstance.getVariable("document");
System.err.println(docId);
}
// 依次对王五的公文进行提交
for (Iterator iter = tasks.iterator(); iter.hasNext();) {
TaskInstance taskInstance = (TaskInstance) iter.next();
// 王五已经审批结束,继续提交,这将触发流程继续向下流动!
taskInstance.end();
Integer docId = (Integer) taskInstance.getVariable("document");
System.err.println(docId + "已被审批完成");
}
getJbpmContext().close();
}
5 isFinish到达终点
判断流程是否结束
public void isFinish() {
Document doc = (Document) getJbpmContext().getSession().load(
Document.class, 3);
ProcessInstance processInstance = getJbpmContext().getProcessInstance(
doc.getProcessIntanceId());
System.err.println("流程已结束? - " + processInstance.hasEnded());
getJbpmContext().close();
log.info("____________________到达终点!");
}