Вставить значение в полезную нагрузку рабочего процесса в Java

Можете ли вы вставить значения в полезную нагрузку рабочего процесса?

Используя пакет OSGI, я создал процесс Java и в нем создал счетчик «idValue», который увеличивается на единицу после каждого рабочего процесса.

Затем я привязываю процесс к рабочему процессу, и рабочий процесс начинается с формы.

Что я хочу сделать, так это вставить idValue в полезную нагрузку рабочего процесса, чтобы каждый рабочий процесс имел уникальное значение idValue, и, наконец, отобразить полезную нагрузку в шаблоне электронной почты, созданном при каждой отправке формы.

Ниже приведен мой класс JAVA для создания idValue. Как я могу вставить его в полезную нагрузку рабочего процесса?

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

person mmmpieee    schedule 06.12.2013    source источник
comment
Не публикуйте половину кода... Мы не сможем помочь вам должным образом с помощью такого количества кода.   -  person Vicky Thakor    schedule 06.12.2013


Ответы (1)


Вы можете получить узел из 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);
...

ссылка на полный пример кода здесь

person kfaerber    schedule 07.12.2013