1. 业务流程图
(1)流程图
(2)业务需求
在经营管理部门经理节点,选择发起人上传会议纪要、部门分管领导、总经理是否加审。
2. 设计实现
(1)流程图
在流程图中财务部门经理下一个环节有“发起人上传会议纪要”、“部门分管领导”两个节点。两条线上设计变量path==11、path==22.
(2)流程配置
在财务部门经理节点增加规则配置,供程序调用
(3)代码实现
1、在规则函数中返回页面或条件指定的path值
public String intentFinanceDeptManager() {
String path = "default";
……
if(thisWorkitem.getExtralField().contains("addAuditUploadMeetDoc")||
IntentAuditConditions.isUploadMeetDoc(intentDao, busiId, province)){
path = "11";
}else {
……
} else{
path = "default";
}
return path;
}
2、在流程中获取下一步可用节点方法中getNextValidElement调用规则函数,根据规则函数返回值,返回符合的可用节点
private String getNextValidElement(String thisActId, Long processInstId,
Integer busiType, Long busiId) {
……
String className = "com.interfaces.workflow.common.auditconditions.AuditConditionClass";
String methodName = thisElementConf.getRuleName();
Object conditionRs = "default";
if (methodName != null && !"".equals(methodName)) {
Class clas = Class.forName(className);
Method method = clas.getMethod(methodName, new Class[] {});
Constructor constructor = clas.getConstructor(Integer.class,
Long.class);
Object instance = constructor.newInstance(busiType, busiId);
conditionRs = method.invoke(instance);
}
// 获取符合条件的下一步环节
TransitionElement[] trans = thisElement.getAfterTrans();
for (TransitionElement tran : trans) {
if (conditionRs.toString().equalsIgnoreCase(
tran.getRightValue())) {
……
}
}
……
return tran.getTo();
}