public boolean validate(Long ksessionId, Long processInstanceId) { Long mapped = this.mapper.findMapping(ProcessInstanceIdContext.get(processInstanceId), this.identifier); if (Objects.equals(mapped, ksessionId)) { return true; } return false; }
protected void createLockOnGetEngine(Context<?> context, RuntimeEngine runtime) { if (!isUseLocking()) { logger.debug("Locking on runtime manager disabled"); return; } if (context instanceof ProcessInstanceIdContext) { Long piId = ((ProcessInstanceIdContext) context).getContextId(); createLockOnGetEngine(piId, runtime); } }
@Override public void signalEvent(String type, Object event) { RuntimeEngine runtimeEngine = getRuntimeEngine(EmptyContext.get()); runtimeEngine.getKieSession().signalEvent(type, event); if (canDispose(runtimeEngine)) { disposeRuntimeEngine(runtimeEngine); } }
@Test(timeout=10000) public void testPerCaseMultiInstanceCallactivityCompleteAtTheSameTime() { RuntimeEnvironment environment = createEnvironment(); manager = RuntimeManagerFactory.Factory.get().newPerCaseRuntimeManager(environment, "first"); assertNotNull(manager); testMultiInstanceCallactivityCompleteAtTheSameTime(CaseContext.get("CASE-00000001")); }
public boolean validate(Long ksessionId, Long processInstanceId) { Long mapped = this.mapper.findMapping(ProcessInstanceIdContext.get(processInstanceId), this.identifier); if (Objects.equals(mapped, ksessionId)) { return true; } return false; }
protected KieRuntime getKieRuntimeForSubprocess() { KieRuntime kruntime = ((ProcessInstance) getProcessInstance()).getKnowledgeRuntime(); RuntimeManager manager = (RuntimeManager) kruntime.getEnvironment().get(EnvironmentName.RUNTIME_MANAGER); if (manager != null) { org.kie.api.runtime.manager.Context<?> context = ProcessInstanceIdContext.get(); String caseId = (String) kruntime.getEnvironment().get(EnvironmentName.CASE_ID); if (caseId != null) { context = CaseContext.get(caseId); } RuntimeEngine runtime = manager.getRuntimeEngine(context); kruntime = (KieRuntime) runtime.getKieSession(); } return kruntime; }
@Override public void run() { try { Thread.sleep(1000); RuntimeEngine engine = runtimeManager.getRuntimeEngine(EmptyContext.get());// only for singleton logger.debug("staring a thread...."); engine.getKieSession().insert("doing it async"); logger.debug("Completing the work item"); engine.getKieSession().getWorkItemManager().completeWorkItem(workItem.getId(), null); runtimeManager.disposeRuntimeEngine(engine); } catch (Exception e) { logger.error("Error when executing async operation", e); } }
protected void releaseAndCleanLock(RuntimeEngine runtime) { if (!isUseLocking()) { logger.debug("Locking on runtime manager disabled"); return; } if (((RuntimeEngineImpl)runtime).getContext() instanceof ProcessInstanceIdContext) { Long piId = ((ProcessInstanceIdContext) ((RuntimeEngineImpl)runtime).getContext()).getContextId(); if (piId != null) { releaseAndCleanLock(piId, runtime); } } }
public Context getProcessInstanceByCorrelationKey(CorrelationKey correlationKey, EntityManager em) { Query processInstancesForEvent = em.createNamedQuery( "GetProcessInstanceIdByCorrelation" ); processInstancesForEvent.setParameter( "ckey", correlationKey.toExternalForm()); try { return ProcessInstanceIdContext.get((Long) processInstancesForEvent.getSingleResult()); } catch (NonUniqueResultException e) { return null; } catch (NoResultException e) { return null; } }
private void startProcessWithParamsAndTrigger(String processId, Map<String, Object> params, String type, boolean dispose) { RuntimeManager manager = (RuntimeManager) kruntime.getEnvironment().get(EnvironmentName.RUNTIME_MANAGER); if (manager != null) { org.kie.api.runtime.manager.Context<?> context = ProcessInstanceIdContext.get(); String caseId = (String) kruntime.getEnvironment().get(EnvironmentName.CASE_ID); if (caseId != null) { context = CaseContext.get(caseId); } RuntimeEngine runtime = manager.getRuntimeEngine(context); KieSession ksession = runtime.getKieSession(); try { ksession.execute(new StartProcessWithTypeCommand(processId, params, type)); } finally { if (dispose) { manager.disposeRuntimeEngine(runtime); } } } else { startProcess( processId, params, type ); } }
@Test public void testNoSecurityManager() { RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() .newEmptyBuilder() .userGroupCallback(userGroupCallback) .addAsset(ResourceFactory.newClassPathResource("BPMN2-ScriptTask.bpmn2"), ResourceType.BPMN2) .get(); manager = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment); assertNotNull(manager); RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get()); assertNotNull(runtime); manager.disposeRuntimeEngine(runtime); }
protected Map<Long, List<TimerInstance>> cancelActiveTimersBeforeMigration(RuntimeManager manager) { RuntimeEngine engineBefore = manager.getRuntimeEngine(ProcessInstanceIdContext.get(migrationSpec.getProcessInstanceId())); try { Map<Long, List<TimerInstance>> timerMigrated = engineBefore.getKieSession().execute(new ExecutableCommand<Map<Long, List<TimerInstance>>>() {
public void cancel() { super.cancel(); if (getSubProcessNode() == null || !getSubProcessNode().isIndependent()) { ProcessInstance processInstance = null; InternalKnowledgeRuntime kruntime = ((ProcessInstance) getProcessInstance()).getKnowledgeRuntime(); RuntimeManager manager = (RuntimeManager) kruntime.getEnvironment().get(EnvironmentName.RUNTIME_MANAGER); if (manager != null) { try { org.kie.api.runtime.manager.Context<?> context = ProcessInstanceIdContext.get(processInstanceId); String caseId = (String) kruntime.getEnvironment().get(EnvironmentName.CASE_ID); if (caseId != null) { context = CaseContext.get(caseId); } RuntimeEngine runtime = manager.getRuntimeEngine(context); KieRuntime managedkruntime = (KieRuntime) runtime.getKieSession(); processInstance = (ProcessInstance) managedkruntime.getProcessInstance(processInstanceId); } catch (SessionNotFoundException e) { // in case no session is found for parent process let's skip signal for process instance completion } } else { processInstance = (ProcessInstance) kruntime.getProcessInstance(processInstanceId); } if (processInstance != null) { processInstance.setState(ProcessInstance.STATE_ABORTED); } } }
protected void rescheduleTimersAfterMigration(RuntimeManager manager, Map<Long, List<TimerInstance>> timerMigrated) { RuntimeEngine engine = manager.getRuntimeEngine(ProcessInstanceIdContext.get(migrationSpec.getProcessInstanceId())); try { engine.getKieSession().execute(new ExecutableCommand<Void>() {
@Override public void execute(JobContext ctx) { RuntimeManager runtimeManager = null; RuntimeEngine engine = null; CommandExecutor executor = null; if (deploymentId != null && processInstanceId != null) { runtimeManager = RuntimeManagerRegistry.get().getManager(deploymentId); engine = runtimeManager.getRuntimeEngine(ProcessInstanceIdContext.get(processInstanceId)); executor = engine.getTaskService(); } else { executor = TaskDeadlinesServiceImpl.getInstance(); } try { executor.execute(new ExecuteDeadlinesCommand(taskId, deadlineId, type)); } catch (NullPointerException e) { logger.error("TaskDeadlineService instance is not available, most likely was not properly initialized - Job did not run!"); } finally { if (runtimeManager != null && engine != null) { runtimeManager.disposeRuntimeEngine(engine); } } }
@Test(timeout=10000) public void testPerProcessInstanceMultiInstanceCallactivityCompleteAtTheSameTime() { RuntimeEnvironment environment = createEnvironment(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment, "first"); assertNotNull(manager); testMultiInstanceCallactivityCompleteAtTheSameTime(ProcessInstanceIdContext.get()); }
@Test(timeout=10000) public void testSingletonMultiInstanceCallactivityCompleteAtTheSameTime() { RuntimeEnvironment environment = createEnvironment(); manager = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment, "first"); assertNotNull(manager); testMultiInstanceCallactivityCompleteAtTheSameTime(ProcessInstanceIdContext.get()); }
@Override public void beforeProcessStarted(ProcessStartedEvent event) { mapper.saveMapping(new EnvironmentAwareProcessInstanceContext(event.getKieRuntime().getEnvironment(), event.getProcessInstance().getId()), ksessionId, managerId); saveLocalRuntime(caseId, event.getProcessInstance().getId(), runtime); ((RuntimeEngineImpl) runtime).setContext(ProcessInstanceIdContext.get(event.getProcessInstance().getId())); }
@Override public void beforeProcessStarted(ProcessStartedEvent event) { mapper.saveMapping(new EnvironmentAwareProcessInstanceContext( event.getKieRuntime().getEnvironment(), event.getProcessInstance().getId()), ksessionId, managerId); saveLocalRuntime(event.getProcessInstance().getId(), runtime); ((RuntimeEngineImpl)runtime).setContext(ProcessInstanceIdContext.get(event.getProcessInstance().getId())); createLockOnNewProcessInstance(event.getProcessInstance().getId(), runtime); }