Как вызвать процесс из другого проекта, используя подпроцесс в jbpm 7 - PullRequest
0 голосов
/ 21 апреля 2020

, чтобы вызвать процесс другого проекта с использованием подпроцесса ниже необходимых конфигураций. Пожалуйста, расскажите, как это сделать в верстаке jbpm 7.0+ version.

Есть ли возможность создать kbase & ksession без их использования по умолчанию.

Создать повторно используемый проект (ProjectA, ProjectB), который будет включать подпроцессы многократного использования (processA, processB). Убедитесь, что что kbase и ksession, настроенные для этого проекта, не будут использоваться по умолчанию.

1 Ответ

0 голосов
/ 21 апреля 2020

Вы можете использовать WorkItemHandler, пользовательскую задачу, которую вы можете создать, которая может вести себя так, как вы хотите. Это будет похоже на подпроцесс в этом WorkItemHandler, который вы вызываете для другого процесса из другого проекта, используя удаленный java API.

  • посмотрите здесь , чтобы узнать, как использовать WorkItemHandler
  • и здесь , чтобы узнать больше об удаленной службе jbpm

код, который вы можете использовать

package com.example;
import org.kie.api.runtime.process.WorkItem;
import java.util.HashMap;
import java.util.Map;    
import org.drools.core.process.instance.WorkItemHandler;
import org.kie.api.runtime.process.WorkItemManager;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.manager.RuntimeEngine;
import org.kie.api.runtime.process.ProcessInstance;
import org.kie.remote.client.api.RemoteRuntimeEngineFactory;

public class WorkItemTest implements WorkItemHandler {

    @Override
    public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
        RuntimeEngine jbpmEngine = RemoteRuntimeEngineFactory.newRestBuilder()
                                    .addUrl(new URL("http://localhost:8080/jbpm-console/"))
                                    .addDeploymentId("com.abc.sasa:1.0"); //put here your DeploymentId
                                    .addUserName("admin")
                                    .addPassword("admin")
                                    .addTimeout(180)
                                    .build();
        KieSession ksession = jbpmEngine.getKieSession();         
        Map<String, Object> params = new HashMap<String, Object>();
        int value = xxx..;
        params.put("var",value); //here you put the parameters you want to pass to the process
        manager.completeWorkItem(workItem.getId(), resultMap);
        ProcessInstance processInstance = ksession.startProcess("NewbillcomOTNPicasso.remountPicassoWF",params);
    }

    @Override
    public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
        System.out.println("Aborted ! ");

    }

}
...