Search in sources :

Example 16 with RuleFlowProcessInstance

use of org.jbpm.ruleflow.instance.RuleFlowProcessInstance in project jbpm by kiegroup.

the class JavaScriptReturnValueConstraintEvaluatorBuilderTest method testSimpleReturnValueConstraintEvaluator.

@Test
public void testSimpleReturnValueConstraintEvaluator() throws Exception {
    final InternalKnowledgePackage pkg = new KnowledgePackageImpl("pkg1");
    ProcessDescr processDescr = new ProcessDescr();
    processDescr.setClassName("Process1");
    processDescr.setName("Process1");
    WorkflowProcessImpl process = new WorkflowProcessImpl();
    process.setName("Process1");
    process.setPackageName("pkg1");
    ReturnValueDescr descr = new ReturnValueDescr();
    descr.setText("function validate() {return value;} validate();");
    KnowledgeBuilderImpl pkgBuilder = new KnowledgeBuilderImpl(pkg);
    DialectCompiletimeRegistry dialectRegistry = pkgBuilder.getPackageRegistry(pkg.getName()).getDialectCompiletimeRegistry();
    ProcessBuildContext context = new ProcessBuildContext(pkgBuilder, pkg, process, processDescr, dialectRegistry, null);
    pkgBuilder.addPackageFromDrl(new StringReader("package pkg1;\n global Boolean value;\n"));
    ReturnValueConstraintEvaluator node = new ReturnValueConstraintEvaluator();
    final JavaScriptReturnValueEvaluatorBuilder builder = new JavaScriptReturnValueEvaluatorBuilder();
    builder.build(context, node, descr, null);
    final InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
    kbase.addPackages(Arrays.asList(pkgBuilder.getPackages()));
    final KieSession ksession = kbase.newKieSession();
    RuleFlowProcessInstance processInstance = new RuleFlowProcessInstance();
    processInstance.setKnowledgeRuntime((InternalKnowledgeRuntime) ksession);
    SplitInstance splitInstance = new SplitInstance();
    splitInstance.setProcessInstance(processInstance);
    ksession.setGlobal("value", true);
    assertTrue(node.evaluate(splitInstance, null, null));
    // Build second time with reutrn value evaulator returning false
    ReturnValueDescr descr2 = new ReturnValueDescr();
    descr.setText("function invalidate() {return false;} invalidate();");
    final JavaScriptReturnValueEvaluatorBuilder builder2 = new JavaScriptReturnValueEvaluatorBuilder();
    builder2.build(context, node, descr, null);
    assertFalse(node.evaluate(splitInstance, null, null));
}
Also used : RuleFlowProcessInstance(org.jbpm.ruleflow.instance.RuleFlowProcessInstance) ReturnValueDescr(org.drools.compiler.compiler.ReturnValueDescr) DialectCompiletimeRegistry(org.drools.compiler.compiler.DialectCompiletimeRegistry) ProcessDescr(org.drools.compiler.lang.descr.ProcessDescr) ReturnValueConstraintEvaluator(org.jbpm.process.instance.impl.ReturnValueConstraintEvaluator) WorkflowProcessImpl(org.jbpm.workflow.core.impl.WorkflowProcessImpl) SplitInstance(org.jbpm.workflow.instance.node.SplitInstance) KnowledgeBuilderImpl(org.drools.compiler.builder.impl.KnowledgeBuilderImpl) StringReader(java.io.StringReader) KieSession(org.kie.api.runtime.KieSession) KnowledgePackageImpl(org.drools.core.definitions.impl.KnowledgePackageImpl) JavaScriptReturnValueEvaluatorBuilder(org.jbpm.process.builder.dialect.javascript.JavaScriptReturnValueEvaluatorBuilder) InternalKnowledgeBase(org.drools.core.impl.InternalKnowledgeBase) InternalKnowledgePackage(org.drools.core.definitions.InternalKnowledgePackage) Test(org.junit.Test)

Example 17 with RuleFlowProcessInstance

use of org.jbpm.ruleflow.instance.RuleFlowProcessInstance in project jbpm by kiegroup.

the class ProcessInstanceResolverStrategy method unmarshal.

public Object unmarshal(Context context, ObjectInputStream is, byte[] object, ClassLoader classloader) throws IOException, ClassNotFoundException {
    long processInstanceId = PersisterHelper.byteArrayToLong(object);
    ProcessInstanceManager pim = retrieveProcessInstanceManager(is);
    // load it as read only to avoid any updates to the data base
    ProcessInstance processInstance = pim.getProcessInstance(processInstanceId, true);
    if (processInstance == null) {
        RuleFlowProcessInstance result = new RuleFlowProcessInstance();
        result.setId(processInstanceId);
        result.internalSetState(ProcessInstance.STATE_COMPLETED);
        return result;
    } else {
        connectProcessInstanceToRuntimeAndProcess(processInstance, is);
        return processInstance;
    }
}
Also used : ProcessInstanceManager(org.jbpm.process.instance.ProcessInstanceManager) RuleFlowProcessInstance(org.jbpm.ruleflow.instance.RuleFlowProcessInstance) RuleFlowProcessInstance(org.jbpm.ruleflow.instance.RuleFlowProcessInstance) ProcessInstance(org.kie.api.runtime.process.ProcessInstance)

Example 18 with RuleFlowProcessInstance

use of org.jbpm.ruleflow.instance.RuleFlowProcessInstance in project jbpm by kiegroup.

the class ProcessInstanceResolverStrategy method read.

public Object read(ObjectInputStream is) throws IOException, ClassNotFoundException {
    long processInstanceId = is.readLong();
    ProcessInstanceManager pim = retrieveProcessInstanceManager(is);
    ProcessInstance processInstance = pim.getProcessInstance(processInstanceId);
    if (processInstance == null) {
        RuleFlowProcessInstance result = new RuleFlowProcessInstance();
        result.setId(processInstanceId);
        result.internalSetState(ProcessInstance.STATE_COMPLETED);
        return result;
    } else {
        connectProcessInstanceToRuntimeAndProcess(processInstance, is);
        return processInstance;
    }
}
Also used : ProcessInstanceManager(org.jbpm.process.instance.ProcessInstanceManager) RuleFlowProcessInstance(org.jbpm.ruleflow.instance.RuleFlowProcessInstance) RuleFlowProcessInstance(org.jbpm.ruleflow.instance.RuleFlowProcessInstance) ProcessInstance(org.kie.api.runtime.process.ProcessInstance)

Example 19 with RuleFlowProcessInstance

use of org.jbpm.ruleflow.instance.RuleFlowProcessInstance in project jbpm by kiegroup.

the class MapPersistenceTest method signalEventTest.

@Test
public void signalEventTest() {
    String processId = "signalProcessTest";
    String eventType = "myEvent";
    RuleFlowProcess process = ProcessCreatorForHelp.newSimpleEventProcess(processId, eventType);
    KieBase kbase = createKieBase(process);
    StatefulKnowledgeSession crmPersistentSession = createSession(kbase);
    RuleFlowProcessInstance processInstance = (RuleFlowProcessInstance) crmPersistentSession.startProcess(processId);
    long processInstanceId = processInstance.getId();
    Assert.assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
    crmPersistentSession = createSession(kbase);
    crmPersistentSession.signalEvent(eventType, null);
    processInstance = (RuleFlowProcessInstance) crmPersistentSession.getProcessInstance(processInstanceId);
    Assert.assertNull(processInstance);
}
Also used : RuleFlowProcess(org.jbpm.ruleflow.core.RuleFlowProcess) RuleFlowProcessInstance(org.jbpm.ruleflow.instance.RuleFlowProcessInstance) KieBase(org.kie.api.KieBase) StatefulKnowledgeSession(org.kie.internal.runtime.StatefulKnowledgeSession) Test(org.junit.Test) AbstractBaseTest(org.jbpm.test.util.AbstractBaseTest)

Example 20 with RuleFlowProcessInstance

use of org.jbpm.ruleflow.instance.RuleFlowProcessInstance in project jbpm by kiegroup.

the class MapPersistenceTest method processWithNotNullStartDateTest.

@Test
public void processWithNotNullStartDateTest() {
    String processId = "signalProcessTest";
    String eventType = "myEvent";
    RuleFlowProcess process = ProcessCreatorForHelp.newSimpleEventProcess(processId, eventType);
    KieBase kbase = createKieBase(process);
    StatefulKnowledgeSession crmPersistentSession = createSession(kbase);
    RuleFlowProcessInstance processInstance = (RuleFlowProcessInstance) crmPersistentSession.startProcess(processId);
    InternalKnowledgeRuntime kruntime = processInstance.getKnowledgeRuntime();
    Assert.assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
    ProcessInstanceInfo processInstanceInfo = new ProcessInstanceInfo(processInstance);
    processInstance = (RuleFlowProcessInstance) processInstanceInfo.getProcessInstance(kruntime, crmPersistentSession.getEnvironment());
    Assert.assertNotNull(processInstance.getStartDate());
    Assert.assertEquals(processInstance.getStartDate(), processInstanceInfo.getStartDate());
}
Also used : InternalKnowledgeRuntime(org.drools.core.common.InternalKnowledgeRuntime) ProcessInstanceInfo(org.jbpm.persistence.processinstance.ProcessInstanceInfo) RuleFlowProcess(org.jbpm.ruleflow.core.RuleFlowProcess) RuleFlowProcessInstance(org.jbpm.ruleflow.instance.RuleFlowProcessInstance) KieBase(org.kie.api.KieBase) StatefulKnowledgeSession(org.kie.internal.runtime.StatefulKnowledgeSession) Test(org.junit.Test) AbstractBaseTest(org.jbpm.test.util.AbstractBaseTest)

Aggregations

RuleFlowProcessInstance (org.jbpm.ruleflow.instance.RuleFlowProcessInstance)23 KieSession (org.kie.api.runtime.KieSession)14 Test (org.junit.Test)12 AbstractBaseTest (org.jbpm.test.util.AbstractBaseTest)11 RegistryContext (org.drools.core.command.impl.RegistryContext)6 KieBase (org.kie.api.KieBase)6 ProcessInstanceNotFoundException (org.jbpm.services.api.ProcessInstanceNotFoundException)5 StringReader (java.io.StringReader)4 InternalKnowledgeBase (org.drools.core.impl.InternalKnowledgeBase)4 WorkflowProcessImpl (org.jbpm.workflow.core.impl.WorkflowProcessImpl)4 NodeInstance (org.kie.api.runtime.process.NodeInstance)4 KnowledgeBuilderImpl (org.drools.compiler.builder.impl.KnowledgeBuilderImpl)3 DialectCompiletimeRegistry (org.drools.compiler.compiler.DialectCompiletimeRegistry)3 ReturnValueDescr (org.drools.compiler.compiler.ReturnValueDescr)3 InternalKnowledgePackage (org.drools.core.definitions.InternalKnowledgePackage)3 KnowledgePackageImpl (org.drools.core.definitions.impl.KnowledgePackageImpl)3 ReturnValueConstraintEvaluator (org.jbpm.process.instance.impl.ReturnValueConstraintEvaluator)3 TimerManager (org.jbpm.process.instance.timer.TimerManager)3 ArrayList (java.util.ArrayList)2 ProcessDescr (org.drools.compiler.lang.descr.ProcessDescr)2