Search in sources :

Example 1 with ProcessInstanceMigrationService

use of org.jbpm.services.api.admin.ProcessInstanceMigrationService in project droolsjbpm-integration by kiegroup.

the class JbpmKieServerExtension method configureServices.

protected void configureServices(KieServerImpl kieServer, KieServerRegistry registry) {
    KieServerConfig config = registry.getConfig();
    // loaded from system property as callback info isn't stored as configuration in kie server repository
    String callbackConfig = System.getProperty(KieServerConstants.CFG_HT_CALLBACK);
    // if no other callback set, use Elytron or jaas by default
    if (callbackConfig == null || callbackConfig.isEmpty()) {
        if (ElytronIdentityProvider.available()) {
            System.setProperty(KieServerConstants.CFG_HT_CALLBACK, "custom");
            String name = ElytronUserGroupCallbackImpl.class.getName();
            ElytronUserGroupCallbackImpl.addExternalUserGroupAdapter(new JMSUserGroupAdapter());
            System.setProperty(KieServerConstants.CFG_HT_CALLBACK_CLASS, name);
        } else {
            System.setProperty(KieServerConstants.CFG_HT_CALLBACK, "jaas");
            JAASUserGroupCallbackImpl.addExternalUserGroupAdapter(new JMSUserGroupAdapter());
        }
    }
    this.isExecutorAvailable = isExecutorOnClasspath();
    EntityManagerFactory emf = build(getPersistenceProperties(config));
    EntityManagerFactoryManager.get().addEntityManagerFactory(persistenceUnitName, emf);
    formManagerService = new FormManagerServiceImpl();
    // build definition service
    definitionService = new BPMN2DataServiceImpl();
    // build deployment service
    deploymentService = new KModuleDeploymentService();
    ((KModuleDeploymentService) deploymentService).setBpmn2Service(definitionService);
    ((KModuleDeploymentService) deploymentService).setEmf(emf);
    ((KModuleDeploymentService) deploymentService).setIdentityProvider(registry.getIdentityProvider());
    ((KModuleDeploymentService) deploymentService).setManagerFactory(new RuntimeManagerFactoryImpl());
    ((KModuleDeploymentService) deploymentService).setFormManagerService(formManagerService);
    // configure user group callback
    UserGroupCallback userGroupCallback = UserDataServiceProvider.getUserGroupCallback();
    UserInfo userInfo = UserDataServiceProvider.getUserInfo();
    TaskService taskService = HumanTaskServiceFactory.newTaskServiceConfigurator().entityManagerFactory(emf).userGroupCallback(userGroupCallback).userInfo(userInfo).getTaskService();
    // build runtime data service
    runtimeDataService = new RuntimeDataServiceImpl();
    ((RuntimeDataServiceImpl) runtimeDataService).setCommandService(new TransactionalCommandService(emf));
    ((RuntimeDataServiceImpl) runtimeDataService).setIdentityProvider(registry.getIdentityProvider());
    ((RuntimeDataServiceImpl) runtimeDataService).setTaskService(taskService);
    ((RuntimeDataServiceImpl) runtimeDataService).setTaskAuditService(TaskAuditServiceFactory.newTaskAuditServiceConfigurator().setTaskService(taskService).getTaskAuditService());
    ((KModuleDeploymentService) deploymentService).setRuntimeDataService(runtimeDataService);
    // build process service
    processService = new ProcessServiceImpl();
    ((ProcessServiceImpl) processService).setDataService(runtimeDataService);
    ((ProcessServiceImpl) processService).setDeploymentService(deploymentService);
    // build user task service
    userTaskService = new UserTaskServiceImpl();
    ((UserTaskServiceImpl) userTaskService).setDataService(runtimeDataService);
    ((UserTaskServiceImpl) userTaskService).setDeploymentService(deploymentService);
    // build query service
    queryService = new QueryServiceImpl();
    ((QueryServiceImpl) queryService).setIdentityProvider(registry.getIdentityProvider());
    ((QueryServiceImpl) queryService).setCommandService(new TransactionalCommandService(emf));
    Function<String, String> kieServerDataSourceResolver = input -> {
        String dataSource = input;
        Matcher matcher = PARAMETER_MATCHER.matcher(dataSource);
        while (matcher.find()) {
            String paramName = matcher.group(1);
            KieServerConfig configuration = context.getStateRepository().load(KieServerEnvironment.getServerId()).getConfiguration();
            dataSource = configuration.getConfigItemValue(paramName, "java:jboss/datasources/ExampleDS");
            logger.info("Data source expression {} resolved to {}", input, dataSource);
        }
        return dataSource;
    };
    ((QueryServiceImpl) queryService).setDataSourceResolver(kieServerDataSourceResolver);
    ((QueryServiceImpl) queryService).init();
    // set runtime data service as listener on deployment service
    ((KModuleDeploymentService) deploymentService).addListener(((RuntimeDataServiceImpl) runtimeDataService));
    ((KModuleDeploymentService) deploymentService).addListener(((BPMN2DataServiceImpl) definitionService));
    ((KModuleDeploymentService) deploymentService).addListener(((QueryServiceImpl) queryService));
    if (config.getConfigItemValue(KieServerConstants.CFG_EXECUTOR_DISABLED, "false").equalsIgnoreCase("false")) {
        String executorQueueName = config.getConfigItemValue(KieServerConstants.CFG_EXECUTOR_JMS_QUEUE, "queue/KIE.SERVER.EXECUTOR");
        // build executor service
        executorService = ExecutorServiceFactory.newExecutorService(emf);
        executorService.setInterval(Integer.parseInt(config.getConfigItemValue(KieServerConstants.CFG_EXECUTOR_INTERVAL, "0")));
        executorService.setRetries(Integer.parseInt(config.getConfigItemValue(KieServerConstants.CFG_EXECUTOR_RETRIES, "3")));
        executorService.setThreadPoolSize(Integer.parseInt(config.getConfigItemValue(KieServerConstants.CFG_EXECUTOR_POOL, "1")));
        executorService.setTimeunit(TimeUnit.valueOf(config.getConfigItemValue(KieServerConstants.CFG_EXECUTOR_TIME_UNIT, "SECONDS")));
        ((ExecutorImpl) ((ExecutorServiceImpl) executorService).getExecutor()).setQueueName(executorQueueName);
        ((KModuleDeploymentService) deploymentService).setExecutorService(executorService);
    }
    // admin services
    this.processInstanceMigrationService = new ProcessInstanceMigrationServiceImpl();
    this.processInstanceAdminService = new ProcessInstanceAdminServiceImpl();
    ((ProcessInstanceAdminServiceImpl) this.processInstanceAdminService).setProcessService(processService);
    ((ProcessInstanceAdminServiceImpl) this.processInstanceAdminService).setRuntimeDataService(runtimeDataService);
    ((ProcessInstanceAdminServiceImpl) this.processInstanceAdminService).setCommandService(new TransactionalCommandService(emf));
    ((ProcessInstanceAdminServiceImpl) this.processInstanceAdminService).setIdentityProvider(registry.getIdentityProvider());
    this.userTaskAdminService = new UserTaskAdminServiceImpl();
    ((UserTaskAdminServiceImpl) this.userTaskAdminService).setRuntimeDataService(runtimeDataService);
    ((UserTaskAdminServiceImpl) this.userTaskAdminService).setUserTaskService(userTaskService);
    ((UserTaskAdminServiceImpl) this.userTaskAdminService).setIdentityProvider(context.getIdentityProvider());
    ((UserTaskAdminServiceImpl) this.userTaskAdminService).setCommandService(new TransactionalCommandService(emf));
    this.advanceRuntimeDataService = new AdvanceRuntimeDataServiceImpl();
    ((AdvanceRuntimeDataServiceImpl) this.advanceRuntimeDataService).setEmf(emf);
    ((AdvanceRuntimeDataServiceImpl) this.advanceRuntimeDataService).setCommandService(new TransactionalCommandService(emf));
    this.kieContainerCommandService = new JBPMKieContainerCommandServiceImpl(context, deploymentService, new DefinitionServiceBase(definitionService, context), new ProcessServiceBase(processService, definitionService, runtimeDataService, context), new UserTaskServiceBase(userTaskService, context), new RuntimeDataServiceBase(runtimeDataService, advanceRuntimeDataService, context), new ExecutorServiceBase(executorService, context), new QueryDataServiceBase(queryService, context), new DocumentServiceBase(context), new ProcessAdminServiceBase(processInstanceMigrationService, processInstanceAdminService, runtimeDataService, context), new UserTaskAdminServiceBase(userTaskAdminService, context));
}
Also used : FormManagerServiceImpl(org.jbpm.kie.services.impl.FormManagerServiceImpl) Arrays(java.util.Arrays) Enumeration(java.util.Enumeration) QueryService(org.jbpm.services.api.query.QueryService) AuditMode(org.kie.internal.runtime.conf.AuditMode) KieServerConstants(org.kie.server.api.KieServerConstants) KieServerMode(org.kie.server.api.model.KieServerMode) UserGroupCallback(org.kie.api.task.UserGroupCallback) DeploymentDescriptor(org.kie.internal.runtime.conf.DeploymentDescriptor) Matcher(java.util.regex.Matcher) QueryServiceImpl(org.jbpm.kie.services.impl.query.QueryServiceImpl) Map(java.util.Map) ProcessInstanceDesc(org.jbpm.services.api.model.ProcessInstanceDesc) Message(org.kie.server.api.model.Message) InitialContext(javax.naming.InitialContext) PersistenceProviderResolverHolder(javax.persistence.spi.PersistenceProviderResolverHolder) UserTaskServiceImpl(org.jbpm.kie.services.impl.UserTaskServiceImpl) KieModuleMetaData(org.kie.scanner.KieModuleMetaData) PersistenceUnitInfoImpl(org.kie.server.services.jbpm.jpa.PersistenceUnitInfoImpl) PersistenceUnitInfo(javax.persistence.spi.PersistenceUnitInfo) Set(java.util.Set) QueryContext(org.kie.api.runtime.query.QueryContext) KieServerRegistry(org.kie.server.services.api.KieServerRegistry) IOUtils(org.apache.commons.io.IOUtils) EntityManagerFactory(javax.persistence.EntityManagerFactory) ExecutorServiceImpl(org.jbpm.executor.impl.ExecutorServiceImpl) DeploymentDescriptorMerger(org.jbpm.runtime.manager.impl.deploy.DeploymentDescriptorMerger) RuntimeManagerFactoryImpl(org.jbpm.runtime.manager.impl.RuntimeManagerFactoryImpl) ExceptionUtils(org.apache.commons.lang3.exception.ExceptionUtils) SupportedTransports(org.kie.server.services.api.SupportedTransports) ObjectModel(org.kie.internal.runtime.conf.ObjectModel) FormManagerServiceImpl(org.jbpm.kie.services.impl.FormManagerServiceImpl) ProcessInstanceAdminService(org.jbpm.services.api.admin.ProcessInstanceAdminService) ArrayList(java.util.ArrayList) ProcessInstanceAdminServiceImpl(org.jbpm.kie.services.impl.admin.ProcessInstanceAdminServiceImpl) DeploymentService(org.jbpm.services.api.DeploymentService) QueryNotFoundException(org.jbpm.services.api.query.QueryNotFoundException) JAASUserGroupCallbackImpl(org.jbpm.services.task.identity.JAASUserGroupCallbackImpl) TaskAuditServiceFactory(org.jbpm.services.task.audit.TaskAuditServiceFactory) ExecutorImpl(org.jbpm.executor.impl.ExecutorImpl) TaskService(org.kie.api.task.TaskService) MarshallingException(org.kie.server.api.marshalling.MarshallingException) InternalKieContainer(org.drools.core.impl.InternalKieContainer) AbstractDeploymentService(org.jbpm.kie.services.impl.AbstractDeploymentService) UserDataServiceProvider(org.jbpm.runtime.manager.impl.identity.UserDataServiceProvider) PersistenceUnitExtensionsLoader(org.kie.server.services.jbpm.jpa.PersistenceUnitExtensionsLoader) IOException(java.io.IOException) ProcessInstanceMigrationService(org.jbpm.services.api.admin.ProcessInstanceMigrationService) QueryMapperRegistry(org.jbpm.services.api.query.QueryMapperRegistry) PersistenceProvider(javax.persistence.spi.PersistenceProvider) HumanTaskServiceFactory(org.jbpm.services.task.HumanTaskServiceFactory) AdvanceRuntimeDataService(org.jbpm.services.api.AdvanceRuntimeDataService) KieServerApplicationComponentsService(org.kie.server.services.api.KieServerApplicationComponentsService) FormManagerService(org.jbpm.kie.services.impl.FormManagerService) UserTaskAdminServiceBase(org.kie.server.services.jbpm.admin.UserTaskAdminServiceBase) DeploymentDescriptorManager(org.kie.internal.runtime.manager.deploy.DeploymentDescriptorManager) UserInfo(org.kie.internal.task.api.UserInfo) URL(java.net.URL) LoggerFactory(org.slf4j.LoggerFactory) DeploymentDescriptorManagerUtil(org.jbpm.runtime.manager.impl.deploy.DeploymentDescriptorManagerUtil) AdvanceRuntimeDataServiceImpl(org.jbpm.kie.services.impl.AdvanceRuntimeDataServiceImpl) ReleaseId(org.kie.api.builder.ReleaseId) DocumentImpl(org.jbpm.document.service.impl.DocumentImpl) ProcessInstanceMigrationServiceImpl(org.jbpm.kie.services.impl.admin.ProcessInstanceMigrationServiceImpl) MarshallingFormat(org.kie.server.api.marshalling.MarshallingFormat) RuntimeDataServiceImpl(org.jbpm.kie.services.impl.RuntimeDataServiceImpl) Collection(java.util.Collection) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) ExecutorServiceFactory(org.jbpm.executor.ExecutorServiceFactory) ElytronIdentityProvider(org.kie.server.services.impl.security.ElytronIdentityProvider) ServiceLoader(java.util.ServiceLoader) JMSUserGroupAdapter(org.kie.server.services.jbpm.security.JMSUserGroupAdapter) MergeMode(org.kie.internal.runtime.conf.MergeMode) ElytronUserGroupCallbackImpl(org.kie.server.services.jbpm.security.ElytronUserGroupCallbackImpl) FileNotFoundException(java.io.FileNotFoundException) KieContainerInstance(org.kie.server.services.api.KieContainerInstance) PersistenceUnitInfoLoader(org.kie.server.services.jbpm.jpa.PersistenceUnitInfoLoader) List(java.util.List) UserTaskAdminService(org.jbpm.services.api.admin.UserTaskAdminService) KieSessionModel(org.kie.api.builder.model.KieSessionModel) RuntimeStrategy(org.kie.internal.runtime.conf.RuntimeStrategy) KModuleDeploymentUnit(org.jbpm.kie.services.impl.KModuleDeploymentUnit) KModuleDeploymentService(org.jbpm.kie.services.impl.KModuleDeploymentService) Pattern(java.util.regex.Pattern) ProcessServiceImpl(org.jbpm.kie.services.impl.ProcessServiceImpl) ProcessService(org.jbpm.services.api.ProcessService) PreUndeployOperations(org.jbpm.kie.services.impl.utils.PreUndeployOperations) KieServerConfig(org.kie.server.api.model.KieServerConfig) HashMap(java.util.HashMap) Function(java.util.function.Function) TransactionalCommandService(org.jbpm.shared.services.impl.TransactionalCommandService) HashSet(java.util.HashSet) KieServerExtension(org.kie.server.services.api.KieServerExtension) ExecutorService(org.kie.api.executor.ExecutorService) ProcessInstance(org.kie.api.runtime.process.ProcessInstance) QueryDefinition(org.kie.server.api.model.definition.QueryDefinition) Charset(java.nio.charset.Charset) ProcessAdminServiceBase(org.kie.server.services.jbpm.admin.ProcessAdminServiceBase) Severity(org.kie.server.api.model.Severity) UserTaskService(org.jbpm.services.api.UserTaskService) EntityManagerFactoryManager(org.jbpm.runtime.manager.impl.jpa.EntityManagerFactoryManager) MarshallerFactory(org.kie.server.api.marshalling.MarshallerFactory) Logger(org.slf4j.Logger) UserTaskAdminServiceImpl(org.jbpm.kie.services.impl.admin.UserTaskAdminServiceImpl) KieServerEnvironment(org.kie.server.api.KieServerEnvironment) FileInputStream(java.io.FileInputStream) DefinitionService(org.jbpm.services.api.DefinitionService) TimeUnit(java.util.concurrent.TimeUnit) RuntimeDataService(org.jbpm.services.api.RuntimeDataService) KieContainerCommandService(org.kie.server.services.api.KieContainerCommandService) BPMN2DataServiceImpl(org.jbpm.kie.services.impl.bpmn2.BPMN2DataServiceImpl) KieServerImpl(org.kie.server.services.impl.KieServerImpl) DeployedUnit(org.jbpm.services.api.model.DeployedUnit) NamedObjectModel(org.kie.internal.runtime.conf.NamedObjectModel) InputStream(java.io.InputStream) BPMN2DataServiceImpl(org.jbpm.kie.services.impl.bpmn2.BPMN2DataServiceImpl) UserTaskAdminServiceImpl(org.jbpm.kie.services.impl.admin.UserTaskAdminServiceImpl) Matcher(java.util.regex.Matcher) UserTaskAdminServiceBase(org.kie.server.services.jbpm.admin.UserTaskAdminServiceBase) UserInfo(org.kie.internal.task.api.UserInfo) UserGroupCallback(org.kie.api.task.UserGroupCallback) AdvanceRuntimeDataServiceImpl(org.jbpm.kie.services.impl.AdvanceRuntimeDataServiceImpl) KModuleDeploymentService(org.jbpm.kie.services.impl.KModuleDeploymentService) ProcessServiceImpl(org.jbpm.kie.services.impl.ProcessServiceImpl) ProcessInstanceMigrationServiceImpl(org.jbpm.kie.services.impl.admin.ProcessInstanceMigrationServiceImpl) QueryServiceImpl(org.jbpm.kie.services.impl.query.QueryServiceImpl) RuntimeManagerFactoryImpl(org.jbpm.runtime.manager.impl.RuntimeManagerFactoryImpl) TaskService(org.kie.api.task.TaskService) UserTaskService(org.jbpm.services.api.UserTaskService) ExecutorImpl(org.jbpm.executor.impl.ExecutorImpl) KieServerConfig(org.kie.server.api.model.KieServerConfig) UserTaskServiceImpl(org.jbpm.kie.services.impl.UserTaskServiceImpl) ProcessInstanceAdminServiceImpl(org.jbpm.kie.services.impl.admin.ProcessInstanceAdminServiceImpl) ProcessAdminServiceBase(org.kie.server.services.jbpm.admin.ProcessAdminServiceBase) AdvanceRuntimeDataServiceImpl(org.jbpm.kie.services.impl.AdvanceRuntimeDataServiceImpl) RuntimeDataServiceImpl(org.jbpm.kie.services.impl.RuntimeDataServiceImpl) EntityManagerFactory(javax.persistence.EntityManagerFactory) TransactionalCommandService(org.jbpm.shared.services.impl.TransactionalCommandService) JMSUserGroupAdapter(org.kie.server.services.jbpm.security.JMSUserGroupAdapter)

Example 2 with ProcessInstanceMigrationService

use of org.jbpm.services.api.admin.ProcessInstanceMigrationService in project droolsjbpm-integration by kiegroup.

the class JbpmRestApplicationComponentsService method getAppComponents.

@Override
public Collection<Object> getAppComponents(String extension, SupportedTransports type, Object... services) {
    // skip calls from other than owning extension
    if (!OWNER_EXTENSION.equals(extension)) {
        return Collections.emptyList();
    }
    ProcessService processService = null;
    RuntimeDataService runtimeDataService = null;
    DefinitionService definitionService = null;
    UserTaskService userTaskService = null;
    ExecutorService executorService = null;
    QueryService queryService = null;
    ProcessInstanceMigrationService processInstanceMigrationService = null;
    ProcessInstanceAdminService processInstanceAdminService = null;
    UserTaskAdminService userTaskAdminService = null;
    KieServerRegistry context = null;
    AdvanceRuntimeDataService advanceRuntimeDataService = null;
    for (Object object : services) {
        // in case given service is null (meaning was not configured) continue with next one
        if (object == null) {
            continue;
        }
        if (ProcessService.class.isAssignableFrom(object.getClass())) {
            processService = (ProcessService) object;
            continue;
        } else if (RuntimeDataService.class.isAssignableFrom(object.getClass())) {
            runtimeDataService = (RuntimeDataService) object;
            continue;
        } else if (DefinitionService.class.isAssignableFrom(object.getClass())) {
            definitionService = (DefinitionService) object;
            continue;
        } else if (UserTaskService.class.isAssignableFrom(object.getClass())) {
            userTaskService = (UserTaskService) object;
            continue;
        } else if (ExecutorService.class.isAssignableFrom(object.getClass())) {
            executorService = (ExecutorService) object;
            continue;
        } else if (QueryService.class.isAssignableFrom(object.getClass())) {
            queryService = (QueryService) object;
            continue;
        } else if (ProcessInstanceMigrationService.class.isAssignableFrom(object.getClass())) {
            processInstanceMigrationService = (ProcessInstanceMigrationService) object;
            continue;
        } else if (ProcessInstanceAdminService.class.isAssignableFrom(object.getClass())) {
            processInstanceAdminService = (ProcessInstanceAdminService) object;
            continue;
        } else if (UserTaskAdminService.class.isAssignableFrom(object.getClass())) {
            userTaskAdminService = (UserTaskAdminService) object;
            continue;
        } else if (KieServerRegistry.class.isAssignableFrom(object.getClass())) {
            context = (KieServerRegistry) object;
            continue;
        } else if (AdvanceRuntimeDataService.class.isAssignableFrom(object.getClass())) {
            advanceRuntimeDataService = (AdvanceRuntimeDataService) object;
            continue;
        }
    }
    List<Object> components = new ArrayList<Object>(6);
    DefinitionServiceBase definitionServiceBase = new DefinitionServiceBase(definitionService, context);
    ProcessServiceBase processServiceBase = new ProcessServiceBase(processService, definitionService, runtimeDataService, context);
    UserTaskServiceBase userTaskServiceBase = new UserTaskServiceBase(userTaskService, context);
    RuntimeDataServiceBase runtimeDataServiceBase = new RuntimeDataServiceBase(runtimeDataService, advanceRuntimeDataService, context);
    ExecutorServiceBase executorServiceBase = new ExecutorServiceBase(executorService, context);
    QueryDataServiceBase queryDataServiceBase = new QueryDataServiceBase(queryService, context);
    DocumentServiceBase documentServiceBase = new DocumentServiceBase(context);
    ProcessAdminServiceBase processAdminServiceBase = new ProcessAdminServiceBase(processInstanceMigrationService, processInstanceAdminService, runtimeDataService, context);
    UserTaskAdminServiceBase userTaskAdminServiceBase = new UserTaskAdminServiceBase(userTaskAdminService, context);
    components.add(new ProcessResource(processServiceBase, runtimeDataServiceBase, context));
    components.add(new RuntimeDataResource(runtimeDataServiceBase, context));
    components.add(new DefinitionResource(definitionServiceBase, context));
    components.add(new UserTaskResource(userTaskServiceBase, runtimeDataServiceBase, context));
    components.add(new ExecutorResource(executorServiceBase, context));
    components.add(new QueryDataResource(queryDataServiceBase, context));
    components.add(new DocumentResource(documentServiceBase, context));
    components.add(new ProcessAdminResource(processAdminServiceBase, context));
    components.add(new UserTaskAdminResource(userTaskAdminServiceBase, context));
    return components;
}
Also used : UserTaskAdminResource(org.kie.server.remote.rest.jbpm.admin.UserTaskAdminResource) ArrayList(java.util.ArrayList) UserTaskAdminServiceBase(org.kie.server.services.jbpm.admin.UserTaskAdminServiceBase) DefinitionServiceBase(org.kie.server.services.jbpm.DefinitionServiceBase) AdvanceRuntimeDataService(org.jbpm.services.api.AdvanceRuntimeDataService) KieServerRegistry(org.kie.server.services.api.KieServerRegistry) ProcessAdminResource(org.kie.server.remote.rest.jbpm.admin.ProcessAdminResource) ProcessInstanceMigrationService(org.jbpm.services.api.admin.ProcessInstanceMigrationService) ProcessService(org.jbpm.services.api.ProcessService) UserTaskServiceBase(org.kie.server.services.jbpm.UserTaskServiceBase) AdvanceRuntimeDataService(org.jbpm.services.api.AdvanceRuntimeDataService) RuntimeDataService(org.jbpm.services.api.RuntimeDataService) DefinitionService(org.jbpm.services.api.DefinitionService) ProcessInstanceAdminService(org.jbpm.services.api.admin.ProcessInstanceAdminService) RuntimeDataServiceBase(org.kie.server.services.jbpm.RuntimeDataServiceBase) DocumentServiceBase(org.kie.server.services.jbpm.DocumentServiceBase) ExecutorServiceBase(org.kie.server.services.jbpm.ExecutorServiceBase) ProcessAdminServiceBase(org.kie.server.services.jbpm.admin.ProcessAdminServiceBase) QueryService(org.jbpm.services.api.query.QueryService) UserTaskAdminService(org.jbpm.services.api.admin.UserTaskAdminService) ExecutorService(org.kie.api.executor.ExecutorService) ProcessServiceBase(org.kie.server.services.jbpm.ProcessServiceBase) UserTaskService(org.jbpm.services.api.UserTaskService) QueryDataServiceBase(org.kie.server.services.jbpm.QueryDataServiceBase)

Example 3 with ProcessInstanceMigrationService

use of org.jbpm.services.api.admin.ProcessInstanceMigrationService in project droolsjbpm-integration by kiegroup.

the class CaseKieServerExtension method configureServices.

protected void configureServices(KieServerImpl kieServer, KieServerRegistry registry) {
    KieServerExtension jbpmExtension = registry.getServerExtension("jBPM");
    List<Object> jbpmServices = jbpmExtension.getServices();
    RuntimeDataService runtimeDataService = null;
    ProcessService processService = null;
    DeploymentService deploymentService = null;
    ProcessInstanceMigrationService processInstanceMigrationService = null;
    for (Object object : jbpmServices) {
        // in case given service is null (meaning was not configured) continue with next one
        if (object == null) {
            continue;
        }
        if (RuntimeDataService.class.isAssignableFrom(object.getClass())) {
            runtimeDataService = (RuntimeDataService) object;
            continue;
        } else if (ProcessService.class.isAssignableFrom(object.getClass())) {
            processService = (ProcessService) object;
            continue;
        } else if (DeploymentService.class.isAssignableFrom(object.getClass())) {
            deploymentService = (DeploymentService) object;
            continue;
        } else if (ProcessInstanceMigrationService.class.isAssignableFrom(object.getClass())) {
            processInstanceMigrationService = (ProcessInstanceMigrationService) object;
            continue;
        }
    }
    CaseIdGenerator caseIdGenerator = getCaseIdGenerator();
    EntityManagerFactory emf = EntityManagerFactoryManager.get().getOrCreate(persistenceUnitName);
    // build case runtime data service
    caseRuntimeDataService = new CaseRuntimeDataServiceImpl();
    ((CaseRuntimeDataServiceImpl) caseRuntimeDataService).setCaseIdGenerator(caseIdGenerator);
    ((CaseRuntimeDataServiceImpl) caseRuntimeDataService).setRuntimeDataService(runtimeDataService);
    ((CaseRuntimeDataServiceImpl) caseRuntimeDataService).setCommandService(new TransactionalCommandService(EntityManagerFactoryManager.get().getOrCreate(persistenceUnitName)));
    ((CaseRuntimeDataServiceImpl) caseRuntimeDataService).setIdentityProvider(registry.getIdentityProvider());
    // build case service
    CaseServiceImpl caseService = new CaseServiceImpl();
    ((CaseServiceImpl) caseService).setCaseIdGenerator(caseIdGenerator);
    ((CaseServiceImpl) caseService).setCaseRuntimeDataService(caseRuntimeDataService);
    ((CaseServiceImpl) caseService).setProcessService(processService);
    ((CaseServiceImpl) caseService).setDeploymentService(deploymentService);
    ((CaseServiceImpl) caseService).setRuntimeDataService(runtimeDataService);
    ((CaseServiceImpl) caseService).setCommandService(new TransactionalCommandService(emf));
    ((CaseServiceImpl) caseService).setAuthorizationManager(new AuthorizationManagerImpl(registry.getIdentityProvider(), new TransactionalCommandService(EntityManagerFactoryManager.get().getOrCreate(persistenceUnitName))));
    ((CaseServiceImpl) caseService).setIdentityProvider(registry.getIdentityProvider());
    // build case configuration on deployment listener
    CaseConfigurationDeploymentListener configurationListener = new CaseConfigurationDeploymentListener(registry.getIdentityProvider());
    // configure case mgmt services as listeners
    ((KModuleDeploymentService) deploymentService).addListener((CaseRuntimeDataServiceImpl) caseRuntimeDataService);
    ((KModuleDeploymentService) deploymentService).addListener(configurationListener);
    CaseInstanceMigrationService caseInstanceMigrationService = new CaseInstanceMigrationServiceImpl();
    ((CaseInstanceMigrationServiceImpl) caseInstanceMigrationService).setCaseRuntimeDataService(caseRuntimeDataService);
    ((CaseInstanceMigrationServiceImpl) caseInstanceMigrationService).setCommandService(new TransactionalCommandService(EntityManagerFactoryManager.get().getOrCreate(persistenceUnitName)));
    ((CaseInstanceMigrationServiceImpl) caseInstanceMigrationService).setProcessInstanceMigrationService(processInstanceMigrationService);
    ((CaseInstanceMigrationServiceImpl) caseInstanceMigrationService).setProcessService(processService);
    advanceCaseRuntimeDataService = new AdvanceCaseRuntimeDataServiceImpl();
    ((AdvanceCaseRuntimeDataServiceImpl) advanceCaseRuntimeDataService).setEmf(emf);
    ((AdvanceCaseRuntimeDataServiceImpl) advanceCaseRuntimeDataService).setCommandService(new TransactionalCommandService(emf));
    this.caseManagementServiceBase = new CaseManagementServiceBase(caseService, caseRuntimeDataService, registry);
    this.caseManagementRuntimeDataService = new CaseManagementRuntimeDataServiceBase(caseRuntimeDataService, advanceCaseRuntimeDataService, registry);
    this.caseAdminServiceBase = new CaseAdminServiceBase(caseInstanceMigrationService, registry);
}
Also used : CaseRuntimeDataService(org.jbpm.casemgmt.api.CaseRuntimeDataService) AdvanceCaseRuntimeDataService(org.jbpm.casemgmt.api.AdvanceCaseRuntimeDataService) RuntimeDataService(org.jbpm.services.api.RuntimeDataService) CaseConfigurationDeploymentListener(org.jbpm.casemgmt.impl.event.CaseConfigurationDeploymentListener) KieServerExtension(org.kie.server.services.api.KieServerExtension) CaseInstanceMigrationService(org.jbpm.casemgmt.api.admin.CaseInstanceMigrationService) CaseInstanceMigrationServiceImpl(org.jbpm.casemgmt.impl.admin.CaseInstanceMigrationServiceImpl) AdvanceCaseRuntimeDataServiceImpl(org.jbpm.casemgmt.impl.AdvanceCaseRuntimeDataServiceImpl) KModuleDeploymentService(org.jbpm.kie.services.impl.KModuleDeploymentService) TableCaseIdGenerator(org.jbpm.casemgmt.impl.generator.TableCaseIdGenerator) CaseIdGenerator(org.jbpm.casemgmt.api.generator.CaseIdGenerator) EntityManagerFactory(javax.persistence.EntityManagerFactory) DeploymentService(org.jbpm.services.api.DeploymentService) KModuleDeploymentService(org.jbpm.kie.services.impl.KModuleDeploymentService) ProcessInstanceMigrationService(org.jbpm.services.api.admin.ProcessInstanceMigrationService) TransactionalCommandService(org.jbpm.shared.services.impl.TransactionalCommandService) CaseServiceImpl(org.jbpm.casemgmt.impl.CaseServiceImpl) AdvanceCaseRuntimeDataServiceImpl(org.jbpm.casemgmt.impl.AdvanceCaseRuntimeDataServiceImpl) CaseRuntimeDataServiceImpl(org.jbpm.casemgmt.impl.CaseRuntimeDataServiceImpl) ProcessService(org.jbpm.services.api.ProcessService) AuthorizationManagerImpl(org.jbpm.casemgmt.impl.AuthorizationManagerImpl)

Aggregations

ArrayList (java.util.ArrayList)2 EntityManagerFactory (javax.persistence.EntityManagerFactory)2 KModuleDeploymentService (org.jbpm.kie.services.impl.KModuleDeploymentService)2 ProcessService (org.jbpm.services.api.ProcessService)2 RuntimeDataService (org.jbpm.services.api.RuntimeDataService)2 ProcessInstanceMigrationService (org.jbpm.services.api.admin.ProcessInstanceMigrationService)2 FileInputStream (java.io.FileInputStream)1 FileNotFoundException (java.io.FileNotFoundException)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 URL (java.net.URL)1 Charset (java.nio.charset.Charset)1 Arrays (java.util.Arrays)1 Collection (java.util.Collection)1 Enumeration (java.util.Enumeration)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 List (java.util.List)1 Map (java.util.Map)1 ServiceLoader (java.util.ServiceLoader)1