一个用OFBiz2.0 beta1 Workflow Engine开发的文档传签系统代码片...

来源:百度文库 编辑:神马文学网 时间:2024/04/26 16:53:36
流程上基本是单一的往下跑的,reject的话user可以modify后重新跑, 由于ofbiz2.0beta1没有实现loop的方式,在Transition定义里用一个小技巧实现了loop(具体请看trans1_9_1,在module_owner_approve这个Activity是parallel sign off的.
每个Activity里用Service调用一些send email, assign performer的方法, example:
public static Map assignSectionManager(DispatchContext ctx, Map context) {
Map result = null;
String workEffortId = context.get("workEffortId").toString();
GenericValue gv = getApplicationData(ctx, context);
String partyId = gv.getString("sectionManager");
String proxyId = ProxyFactory.getCurrentProxyId(partyId,
"XXX Sign Off");
if (proxyId != null && proxyId.length() > 0)
partyId = proxyId;
//get a dispacther and set up the context
LocalDispatcher dispatcher = ctx.getDispatcher();
context = UtilMisc.toMap("workEffortId", workEffortId, "partyId",
partyId, "roleTypeId", "sectionManagers",
"removeOldAssignments", "true");
//run workflow assignment service
try {
result = dispatcher.runSync("wfAssignActivity", context);
} catch (GenericServiceException gse) {
Debug.logError(gse);
}
//update the gv state
try {
gv.setString("currentState", "Section Manager: " + partyId);
gv.store();
} catch (GenericEntityException gee) {
Debug.logError(gee);
}
//send email to section manager
MiscUtil.sendEmail(partyId, "EMPLOYEE", gv, ctx);
return result;
}