📄 workeffortapplication.java
字号:
getContext(workEffort),
(String) workEffort.get("workEffortId"));
if (applicationContextSignatureName != null
&& applicationContextSignatureName.length() != 0
&& contextSignature != null)
pageContext.setAttribute(applicationContextSignatureName, contextSignature);
if (applicationResultSignatureName != null
&& applicationResultSignatureName.length() != 0
&& resultSignature != null)
pageContext.setAttribute(applicationResultSignatureName, resultSignature);
if (applicationContextName != null && applicationContextName.length() != 0)
pageContext.setAttribute(applicationContextName, context);
}
} catch (GenericEntityException gex) {
throw new WfException(
"Can't find Applications in Workeffort [" + workEffort.get("workEffortId") + "]",
gex);
}
}
private static Collection getApplications(GenericValue workEffort) throws GenericEntityException {
final String packageId = (String) workEffort.get("workflowPackageId");
final String packageVersion = (String) workEffort.get("workflowPackageVersion");
final String processId = (String) workEffort.get("workflowProcessId");
final String processVersion = (String) workEffort.get("workflowProcessVersion");
final String activityId = (String) workEffort.get("workflowActivityId");
final GenericDelegator delegator = workEffort.getDelegator();
Map expresions = new HashMap();
expresions.putAll(UtilMisc.toMap("packageId", packageId));
expresions.putAll(UtilMisc.toMap("packageVersion", packageVersion));
expresions.putAll(UtilMisc.toMap("processId", processId));
expresions.putAll(UtilMisc.toMap("processVersion", processVersion));
expresions.putAll(UtilMisc.toMap("activityId", activityId));
expresions.putAll(UtilMisc.toMap("toolTypeEnumId", "WTT_APPLICATION"));
return delegator.findByAnd("WorkflowActivityTool", expresions);
}
private static void getApplicationSignatures(
GenericDelegator delegator,
GenericValue application,
Map contextSignature,
Map resultSignature)
throws GenericEntityException {
final String packageId = (String) application.get("packageId");
final String packageVersion = (String) application.get("packageVersion");
final String processId = (String) application.get("processId");
final String processVersion = (String) application.get("processVersion");
final String applicationId = (String) application.get("toolId");
Map expresions = new HashMap();
expresions.putAll(UtilMisc.toMap("packageId", packageId));
expresions.putAll(UtilMisc.toMap("packageVersion", packageVersion));
expresions.putAll(UtilMisc.toMap("processId", processId));
expresions.putAll(UtilMisc.toMap("processVersion", processVersion));
expresions.putAll(UtilMisc.toMap("applicationId", applicationId));
final Collection params = delegator.findByAnd("WorkflowFormalParam", expresions);
Iterator i = params.iterator();
while (i.hasNext()) {
GenericValue param = (GenericValue) i.next();
String name = param.getString("formalParamId");
String mode = param.getString("modeEnumId");
String type = param.getString("dataTypeEnumId");
if (mode.equals("WPM_IN") || mode.equals("WPM_INOUT"))
contextSignature.put(name, WfUtil.getJavaType(type));
else if (mode.equals("WPM_OUT") || mode.equals("WPM_INOUT"))
resultSignature.put(name, WfUtil.getJavaType(type));
}
}
private static Map getApplicationContext(
GenericDelegator delegator,
Map contextSignature,
String actualParameters,
String extendedAttr,
Map context,
String workEffortId)
throws WfException {
List params = StringUtil.split(actualParameters, ",");
Map actualContext = new HashMap();
Map extendedAttributes = StringUtil.strToMap(extendedAttr);
if (extendedAttributes != null && extendedAttributes.size() > 0)
actualContext.putAll(extendedAttributes);
// setup some internal buffer parameters
// maintain synchronized w/ wfActivityImpl
GenericValue userLogin = null;
if (context.containsKey("runAsUser")) {
userLogin = getUserLogin(delegator, (String) context.get("runAsUser"));
actualContext.put("userLogin", userLogin);
} else if (context.containsKey("workflowOwnerId")) {
userLogin = getUserLogin(delegator, (String) context.get("workflowOwnerId"));
}
context.put("userLogin", userLogin);
context.put("workEffortId", workEffortId);
// /setup some internal bufer parameters
Iterator i = params.iterator();
while (i.hasNext()) {
Object keyExpr = i.next();
String keyExprStr = (String) keyExpr;
if (keyExprStr != null && keyExprStr.trim().toLowerCase().startsWith("expr:"))
try {
BshUtil.eval(keyExprStr.trim().substring(5).trim(), context);
} catch (EvalError e) {
throw new WfException("Error evaluating actual parameter: " + keyExprStr, e);
} else if (keyExprStr != null && keyExprStr.trim().toLowerCase().startsWith("name:")) {
List couple = StringUtil.split(keyExprStr.trim().substring(5).trim(), "=");
if (contextSignature.containsKey(((String) couple.get(0)).trim()))
actualContext.put(((String) couple.get(0)).trim(), context.get(couple.get(1)));
} else if (context.containsKey(keyExprStr)) {
if (contextSignature.containsKey(keyExprStr))
actualContext.put(keyExprStr, context.get(keyExprStr));
} else if (!actualContext.containsKey(keyExprStr))
throw new WfException("Context does not contain the key: '" + keyExprStr + "'");
}
return actualContext;
}
private static Map getContext(GenericValue dataObject) throws WfException {
String contextXML = null;
Map context = null;
if (dataObject.get("runtimeDataId") == null)
return context;
try {
GenericValue runtimeData = dataObject.getRelatedOne("RuntimeData");
contextXML = runtimeData.getString("runtimeInfo");
} catch (GenericEntityException e) {
throw new WfException(e.getMessage(), e);
}
// De-serialize the context
if (contextXML != null) {
try {
context = (Map) XmlSerializer.deserialize(contextXML, dataObject.getDelegator());
} catch (SerializeException e) {
throw new WfException(e.getMessage(), e);
} catch (IOException e) {
throw new WfException(e.getMessage(), e);
} catch (Exception e) {
throw new WfException(e.getMessage(), e);
}
}
return context;
}
// Gets a UserLogin object for service invocation
// This allows a workflow to invoke a service as a specific user
private static GenericValue getUserLogin(GenericDelegator delegator, String userId) throws WfException {
GenericValue userLogin = null;
try {
userLogin = delegator.findByPrimaryKey("UserLogin", UtilMisc.toMap("userLoginId", userId));
} catch (GenericEntityException e) {
throw new WfException(e.getMessage(), e);
}
return userLogin;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -