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