protected Map<String, Object> getParametersMap(RuntimeEngine runtime) { RuntimeManager manager = ((RuntimeEngineImpl)runtime).getManager(); Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("ksession", runtime.getKieSession()); try { parameters.put("taskService", runtime.getTaskService()); } catch (UnsupportedOperationException e) { // in case task service was not configured } parameters.put("runtimeManager", manager); parameters.put("classLoader", getRuntimeManager().getEnvironment().getClassLoader()); parameters.put("entityManagerFactory", runtime.getKieSession().getEnvironment().get(EnvironmentName.ENTITY_MANAGER_FACTORY)); parameters.put("kieContainer", getRuntimeManager().getKieContainer()); return parameters; }
@Override public List<ProcessEventListener> getProcessEventListeners(RuntimeEngine runtime) { List<ProcessEventListener> defaultListeners = new ArrayList<ProcessEventListener>(); DeploymentDescriptor descriptor = getRuntimeManager().getDeploymentDescriptor(); if (descriptor == null) { AbstractAuditLogger logger = AuditLoggerFactory.newJPAInstance(runtime.getKieSession().getEnvironment()); logger.setBuilder(getAuditBuilder(runtime)); defaultListeners.add(logger); logger = AuditLoggerFactory.newJPAInstance(runtime.getKieSession().getEnvironment()); } else { Environment env = EnvironmentFactory.newEnvironment();
contextId = manager.getIdentifier(); return localRuntime.getKieSession(); ksessionId = mapper.findMapping(context, manager.getIdentifier()); if (ksessionId == null) { ksession = factory.newKieSession(); ksessionId = ksession.getIdentifier(); if (context instanceof CaseContext) { ksession.execute(new SaveMappingCommand(mapper, context, ksessionId, manager.getIdentifier())); registerItems(engine); attachManager(engine); registerDisposeCallback(engine, new DisposeSessionTransactionSynchronization(manager, engine), ksession.getEnvironment()); ksession.addEventListener(new MaintainMappingListener(ksessionId, engine, manager.getIdentifier(), contextId.toString())); ksession.getEnvironment().set("CaseId", context.getContextId()); } else { Object contexts = mapper.findContextId(ksession.getIdentifier(), manager.getIdentifier()); if (contexts instanceof Collection) { KieSession finalKieSession = ksession;
protected List<TaskLifeCycleEventListener> getTaskListenersFromDescriptor() { List<TaskLifeCycleEventListener> defaultListeners = new ArrayList<TaskLifeCycleEventListener>(); DeploymentDescriptor descriptor = getRuntimeManager().getDeploymentDescriptor(); if (descriptor != null) { Map<String, Object> params = new HashMap<String, Object>(); params.put("runtimeManager", getRuntimeManager()); params.put("classLoader", getRuntimeManager().getEnvironment().getClassLoader()); params.put("kieContainer", getRuntimeManager().getKieContainer()); for (ObjectModel model : descriptor.getTaskEventListeners()) { Object taskListener = getInstanceFromModel(model, getRuntimeManager().getEnvironment().getClassLoader(), params); if (taskListener != null) { defaultListeners.add((TaskLifeCycleEventListener) taskListener); } } } return defaultListeners; }
protected Map<String, WorkItemHandler> getWorkItemHandlersFromDescriptor(RuntimeEngine runtime) { Map<String, WorkItemHandler> defaultHandlers = new HashMap<String, WorkItemHandler>(); DeploymentDescriptor descriptor = getRuntimeManager().getDeploymentDescriptor(); if (descriptor != null) { Map<String, Object> params = getParametersMap(runtime); for (NamedObjectModel model : descriptor.getWorkItemHandlers()) { Object hInstance = getInstanceFromModel(model, getRuntimeManager().getEnvironment().getClassLoader(), params); if (hInstance != null) { defaultHandlers.put(model.getName(), (WorkItemHandler) hInstance); } } } return defaultHandlers; }
RegisterableItemsFactory factory = internalManager.getEnvironment().getRegisterableItemsFactory(); assertNotNull(factory); assertTrue(factory instanceof InternalRegisterableItemsFactory); DeploymentDescriptor descriptor = internalManager.getDeploymentDescriptor(); assertNotNull(descriptor); assertEquals("org.jbpm.persistence.jpa", descriptor.getPersistenceUnit()); assertEquals(0, descriptor.getRequiredRoles().size()); RuntimeEngine engine = manager.getRuntimeEngine(ProcessInstanceIdContext.get()); assertNotNull(engine); KieSession kieSession = engine.getKieSession(); assertEquals(((SessionConfiguration) kieSession.getSessionConfiguration()).getSignalManagerFactory(), DefaultSignalManagerFactory.class.getName()); BusinessCalendar bc = (BusinessCalendar) kieSession.getEnvironment().get("jbpm.business.calendar"); assertNotNull(bc); assertTrue(bc instanceof TestBusinessCalendar); Object service = kieSession.getGlobal("service"); assertNotNull(service); assertTrue(service instanceof ArrayList); assertNull(kieSession.getProcessInstance(processInstanceId));
assertNotNull(manager); RuntimeEngine runtime1 = manager.getRuntimeEngine(CaseContext.get("Case-1")); KieSession ksession1 = runtime1.getKieSession(); ksession1.signalEvent("SampleEvent", null); ((InternalRuntimeManager) manager).deactivate(); runtime1 = manager.getRuntimeEngine(CaseContext.get("Case-1")); ksession1 = runtime1.getKieSession(); ksession1.signalEvent("SampleEvent", null); logs = runtime1.getAuditService().findProcessInstances(); manager.disposeRuntimeEngine(runtime1); ((InternalRuntimeManager) manager).activate(); runtime1 = manager.getRuntimeEngine(CaseContext.get("Case-1")); ksession1 = runtime1.getKieSession(); ksession1.signalEvent("SampleEvent", null); logs = runtime1.getAuditService().findProcessInstances();
getDeploymentDescriptor()).setAuditPersistenceUnit("org.jbpm.persistence.spring.jta"); ((DeploymentDescriptorImpl) ((InternalRuntimeManager) firstManager). getDeploymentDescriptor()).setPersistenceUnit("org.jbpm.persistence.spring.jta"); getDeploymentDescriptor()).setAuditPersistenceUnit("org.jbpm.persistence.spring.jta"); ((DeploymentDescriptorImpl) ((InternalRuntimeManager) secondManager). getDeploymentDescriptor()).setPersistenceUnit("org.jbpm.persistence.spring.jta"); RuntimeEngine engine = firstManager.getRuntimeEngine(runtimeManagerContext); ProcessInstance instance = engine.getKieSession().startProcess(ADDTASKAFTERACTIVE_ID_V1); assertNotNull(instance); assertNotNull(processInstanceId); org.kie.api.runtime.manager.audit.ProcessInstanceLog log = engine.getAuditService().findProcessInstance(processInstanceId); assertEquals(ProcessInstance.STATE_ACTIVE, log.getStatus().intValue()); assertEquals(ADDTASKAFTERACTIVE_ID_V1, log.getProcessId()); MigrationSpec migrationSpec = new MigrationSpec(firstManager.getIdentifier(), processInstanceId, secondManager.getIdentifier(), ADDTASKAFTERACTIVE_ID_V2); MigrationManager migrationManager = new MigrationManager(migrationSpec); assertTrue(report.isSuccessful()); log = engine.getAuditService().findProcessInstance(processInstanceId); assertEquals(ProcessInstance.STATE_ACTIVE, log.getStatus().intValue()); assertEquals(ADDTASKAFTERACTIVE_ID_V2, log.getProcessId());
assertNotNull(manager); final AtomicBoolean active = new AtomicBoolean(false); ((InternalRuntimeManager) manager).setSecurityManager(new org.kie.internal.runtime.manager.SecurityManager() { RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); ProcessInstance processInstance = ksession.startProcess("ScriptTask"); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); manager.disposeRuntimeEngine(runtime); runtime = manager.getRuntimeEngine(EmptyContext.get()); ksession = runtime.getKieSession(); processInstance = runtime.getKieSession().getProcessInstance(processInstance.getId()); assertNull(processInstance);
RegisterableItemsFactory factory = internalManager.getEnvironment().getRegisterableItemsFactory(); assertNotNull(factory); assertTrue(factory instanceof InternalRegisterableItemsFactory); DeploymentDescriptor descriptor = internalManager.getDeploymentDescriptor(); assertNotNull(descriptor); assertEquals("org.jbpm.persistence.jpa", descriptor.getPersistenceUnit()); assertEquals(0, descriptor.getRequiredRoles().size()); RuntimeEngine engine = manager.getRuntimeEngine(EmptyContext.get()); assertNotNull(engine); Object service = engine.getKieSession().getGlobal("service"); assertNotNull(service); assertTrue(service instanceof ArrayList);
RuntimeEngine runtime1 = manager.getRuntimeEngine(ProcessInstanceIdContext.get()); List<? extends ProcessInstanceLog> logs = runtime1.getAuditService().findProcessInstances(); assertEquals(1, logs.size()); manager.disposeRuntimeEngine(runtime1); ((InternalRuntimeManager) manager).deactivate(); runtime1 = manager.getRuntimeEngine(ProcessInstanceIdContext.get()); logs = runtime1.getAuditService().findProcessInstances(); assertEquals(1, logs.size()); manager.disposeRuntimeEngine(runtime1); ((InternalRuntimeManager) manager).activate(); runtime1 = manager.getRuntimeEngine(ProcessInstanceIdContext.get()); logs = runtime1.getAuditService().findProcessInstances(); assertEquals(2, logs.size()); manager.disposeRuntimeEngine(runtime1);
@Override public Map<String, Object> getGlobals(RuntimeEngine runtime) { Map<String, Object> globals = new HashMap<String, Object>(); RuntimeManager manager = ((RuntimeEngineImpl)runtime).getManager(); Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("ksession", runtime.getKieSession()); parameters.put("taskService", runtime.getTaskService()); parameters.put("runtimeManager", manager); parameters.put("kieContainer", getRuntimeManager().getKieContainer()); try { parameters.put("executorService", executorService.get()); } catch (Exception e) { logger.debug("Executor service not available due to {}", e.getMessage()); } try { for (GlobalProducer producer : globalProducer) { globals.putAll(producer.getGlobals(manager.getIdentifier(), parameters)); } } catch (Exception e) { // do nothing as work item handler is considered optional logger.warn("Exception while evalutating globals prodcuers {}", e.getMessage()); } // add globals from descriptor globals.putAll(getGlobalsFromDescriptor(runtime)); return globals; }
@Test(expected=SecurityException.class) public void testCustomSecurityManager() { 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); final User user = new User("john"); ((InternalRuntimeManager) manager).setSecurityManager(new SecurityManager() { @Override public void checkPermission() throws SecurityException { if ("mary".equals(user.getName())) { throw new SecurityException("Mary is not allowed to use runtime manager"); } } }); RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get()); assertNotNull(runtime); manager.disposeRuntimeEngine(runtime); user.setName("mary"); manager.getRuntimeEngine(EmptyContext.get()); }
DeploymentDescriptor descriptor = getRuntimeManager().getDeploymentDescriptor(); AbstractAuditLogger auditLogger = null; if ("true".equals(System.getProperty("jbpm.audit.jms.enabled")) || descriptor.getAuditMode() == AuditMode.JMS) { try { Properties properties = new Properties(); properties.load(getRuntimeManager().getEnvironment().getClassLoader().getResourceAsStream("/jbpm.audit.jms.properties")); } else if (descriptor.getAuditMode() == AuditMode.JPA){ if (descriptor.getPersistenceUnit().equals(descriptor.getAuditPersistenceUnit())) { auditLogger = AuditLoggerFactory.newJPAInstance(engine.getKieSession().getEnvironment()); } else { auditLogger = new JPAWorkingMemoryDbLogger(EntityManagerFactoryManager.get().getOrCreate(descriptor.getAuditPersistenceUnit()));
@Test(expected=SecurityException.class) public void testDenyAllSecurityManager() { 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); ((InternalRuntimeManager) manager).setSecurityManager(new SecurityManager() { @Override public void checkPermission() throws SecurityException { throw new SecurityException("Deny all on purpose"); } }); manager.getRuntimeEngine(EmptyContext.get()); }
InternalRuntimeManager toBeManager = (InternalRuntimeManager) RuntimeManagerRegistry.get().getManager(migrationSpec.getToDeploymentId()); boolean migrateExecutorJobs = ((SimpleRuntimeEnvironment)currentManager.getEnvironment()).getEnvironmentTemplate().get("ExecutorService") != null; validate(migrateExecutorJobs); Map<Long, List<TimerInstance>> timerMigrated = null; txm = TransactionManagerFactory.get().newTransactionManager(currentManager.getEnvironment().getEnvironment()); transactionOwner = txm.begin(); org.kie.api.definition.process.Process toBeProcess = toBeManager.getEnvironment().getKieBase().getProcess(migrationSpec.getToProcessId()); String auditPu = currentManager.getDeploymentDescriptor().getAuditPersistenceUnit(); report.addEntry(Type.INFO, "Executor Jobs updated = " + executorRequestsUpdated + " for process instance id " + migrationSpec.getProcessInstanceId()); current = JPAKnowledgeService.newStatefulKnowledgeSession(currentManager.getEnvironment().getKieBase(), null, currentManager.getEnvironment().getEnvironment()); tobe = toBeManager.getEnvironment().getKieBase().newKieSession(); upgradeProcessInstance(current, tobe, migrationSpec.getProcessInstanceId(), migrationSpec.getToProcessId(), nodeMapping, em, toBeManager.getIdentifier()); if (current != null) { try { current.destroy(); } catch (SessionNotFoundException e) { tobe.destroy(); } catch (SessionNotFoundException e) {
@Override public AuditService getAuditService() { if (auditService == null) { boolean usePersistence = ((InternalRuntimeManager)manager).getEnvironment().usePersistence(); if (usePersistence) { auditService = new JPAAuditLogService(getKieSession().getEnvironment()); } else { throw new UnsupportedOperationException("AuditService was not configured, supported only with persistence"); } } return auditService; }
protected Properties loadJMSProperties() throws IOException { Properties properties = new Properties(); InputStream input = getRuntimeManager().getEnvironment().getClassLoader().getResourceAsStream("/jbpm.audit.jms.properties"); // required for junit test if (input == null) { input = getRuntimeManager().getEnvironment().getClassLoader().getResourceAsStream("jbpm.audit.jms.properties"); } properties.load(input); return properties; } }
if (manager.getEnvironment().getKieBase().getProcess(migrationSpec.getToProcessId()) == null) { report.addEntry(Type.ERROR, "No process found for " + migrationSpec.getToProcessId() + " in deployment " + migrationSpec.getToDeploymentId()); String auditPu = manager.getDeploymentDescriptor().getAuditPersistenceUnit();
@Test public void testDeployWithDefaultDeploymentDescriptor() throws Exception { KieServices ks = KieServices.Factory.get(); ReleaseId releaseId = ks.newReleaseId("org.jbpm.test.dd", "kjar-with-dd", "1.0.0"); String processString = IOUtils.toString(this.getClass().getResourceAsStream("/BPMN2-ScriptTask.bpmn2"), "UTF-8"); Map<String, String> resources = new HashMap<String, String>(); resources.put("src/main/resources/BPMN2-ScriptTask.bpmn2", processString); InternalKieModule kJar1 = createKieJar(ks, releaseId, resources); installKjar(releaseId, kJar1); RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() .newDefaultBuilder(releaseId) .userGroupCallback(userGroupCallback) .get(); manager = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment); assertNotNull(manager); InternalRuntimeManager internalManager = (InternalRuntimeManager) manager; DeploymentDescriptor descriptor = internalManager.getDeploymentDescriptor(); assertNotNull(descriptor); RegisterableItemsFactory factory = internalManager.getEnvironment().getRegisterableItemsFactory(); assertNotNull(factory); assertTrue(factory instanceof InternalRegisterableItemsFactory); assertNotNull(((InternalRegisterableItemsFactory) factory).getRuntimeManager()); String descriptorFromKjar = descriptor.toXml(); DeploymentDescriptorManager ddManager = new DeploymentDescriptorManager(); String defaultDescriptor = ddManager.getDefaultDescriptor().toXml(); assertEquals(defaultDescriptor, descriptorFromKjar); }