Вы можете использовать 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 ! ");
}
}