在Java中将值插入Workflow Payload

时间:2013-12-06 05:55:00

标签: java adobe workflow cq5 osgi-bundle

您可以将值插入工作流有效负载吗?

使用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();

1 个答案:

答案 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);
...

full example code ref here