您可以将值插入工作流有效负载吗?
使用OSGI包,我创建了一个Java进程,并在其中创建了一个计数器“idValue”,它在每个工作流后递增1。
然后我将流程附加到工作流程,并将工作流程附加到表单。
我想要做的是将idValue插入到工作流有效负载中,这样每个工作流都有一个唯一的idValue,最后在每个表单提交时生成的电子邮件模板中显示有效负载。
下面是我创建idValue的JAVA类。如何将其插入工作流的有效负载中?
public void execute(WorkItem workItem, WorkflowSession session, MetaDataMap metaDataMap)
throws WorkflowException {
log.info("OrderBrochureIdGen called");
int setValue = 200000;
try {
log.info("Before getting item");
Session jcrSession = session.getSession();
Node root = session.getSession().getRootNode();
if (jcrSession.nodeExists("/content/Brochure/BrochureID")) {
Node idNode = (Node)session.getSession().getItem("/content/data/orderBrochure/brochureID");
log.info("idNode name is " + idNode.getProperty("idValue").getLong());
long newValue = idNode.getProperty("idValue").getLong() + 1;
idNode.setProperty("idValue", newValue);
}
else {
Node idNode = JcrUtil.createPath("/content/Brochure/BrochureID", "nt:unstructured", session.getSession());
log.info("added idNode " + idNode.getName());
idNode.setProperty("idValue", setValue);
}
session.getSession().save();
答案 0 :(得分:0)
您可以从workItem
获取节点,在节点上设置属性并保存。
获取节点的代码如下:
final Session session = workflowSession.getSession();
final WorkflowData data = workItem.getWorkflowData();
String path = null;
String type = data.getPayloadType();
try {
if (type.equals(TYPE_JCR_PATH) && data.getPayload() != null) {
String payloadData = (String) data.getPayload();
if (session.itemExists(payloadData)) {
path = payloadData;
}
}
NodeUtils nodeUtils = new NodeUtils();
if (path != null) {
final Node payloadNode = (Node) session.getItem(path);
final Node node = nodeUtils.getMainAsset(payloadNode, ASSET_NODE_TYPE, ROOT_NODE_TYPE);
...