/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.kie.server.services.jbpm; import java.util.Collection; import java.util.Collections; import java.util.Map; import org.jbpm.services.api.DefinitionService; import org.jbpm.services.api.model.ProcessDefinition; import org.jbpm.services.api.model.UserTaskDefinition; import org.kie.server.api.model.definition.AssociatedEntitiesDefinition; import org.kie.server.api.model.definition.ServiceTasksDefinition; import org.kie.server.api.model.definition.SubProcessesDefinition; import org.kie.server.api.model.definition.TaskInputsDefinition; import org.kie.server.api.model.definition.TaskOutputsDefinition; import org.kie.server.api.model.definition.UserTaskDefinitionList; import org.kie.server.api.model.definition.VariablesDefinition; import org.kie.server.services.api.KieServerRegistry; import org.kie.server.services.impl.locator.ContainerLocatorProvider; public class DefinitionServiceBase { private DefinitionService definitionService; private KieServerRegistry context; public DefinitionServiceBase(DefinitionService definitionService, KieServerRegistry context) { this.definitionService = definitionService; this.context = context; } public org.kie.server.api.model.definition.ProcessDefinition getProcessDefinition(String containerId, String processId) { containerId = context.getContainerId(containerId, ContainerLocatorProvider.get().getLocator()); ProcessDefinition procDef = findProcessDefinition(containerId, processId); org.kie.server.api.model.definition.ProcessDefinition responseObject = org.kie.server.api.model.definition.ProcessDefinition.builder() .id(procDef.getId()) .name(procDef.getName()) .version(procDef.getVersion()) .packageName(procDef.getPackageName()) .containerId(procDef.getDeploymentId()) .entitiesAsCollection(procDef.getAssociatedEntities()) .serviceTasks(procDef.getServiceTasks()) .subprocesses(procDef.getReusableSubProcesses()) .variables(procDef.getProcessVariables()) .dynamic(procDef.isDynamic()) .build(); return responseObject; } public SubProcessesDefinition getReusableSubProcesses(String containerId, String processId) { containerId = context.getContainerId(containerId, ContainerLocatorProvider.get().getLocator()); findProcessDefinition(containerId, processId); Collection<String> reusableSubProcesses = definitionService.getReusableSubProcesses(containerId, processId); return new SubProcessesDefinition(reusableSubProcesses); } public VariablesDefinition getProcessVariables(String containerId, String processId) { containerId = context.getContainerId(containerId, ContainerLocatorProvider.get().getLocator()); findProcessDefinition(containerId, processId); Map<String, String> processVariables = definitionService.getProcessVariables(containerId, processId); return new VariablesDefinition(processVariables); } public ServiceTasksDefinition getServiceTasks(String containerId, String processId) { containerId = context.getContainerId(containerId, ContainerLocatorProvider.get().getLocator()); findProcessDefinition(containerId, processId); Map<String, String> serviceTasks = definitionService.getServiceTasks(containerId, processId); return new ServiceTasksDefinition(serviceTasks); } public AssociatedEntitiesDefinition getAssociatedEntities(String containerId, String processId) { containerId = context.getContainerId(containerId, ContainerLocatorProvider.get().getLocator()); findProcessDefinition(containerId, processId); Map<String, Collection<String>> entities = definitionService.getAssociatedEntities(containerId, processId); return AssociatedEntitiesDefinition.from(entities); } public UserTaskDefinitionList getTasksDefinitions(String containerId, String processId) { containerId = context.getContainerId(containerId, ContainerLocatorProvider.get().getLocator()); findProcessDefinition(containerId, processId); Collection<UserTaskDefinition> userTaskDefinitions = definitionService.getTasksDefinitions(containerId, processId); return convert(userTaskDefinitions); } public TaskInputsDefinition getTaskInputMappings(String containerId, String processId, String taskName) { containerId = context.getContainerId(containerId, ContainerLocatorProvider.get().getLocator()); findProcessDefinition(containerId, processId); Map<String, String> taskInputs = definitionService.getTaskInputMappings(containerId, processId, taskName); return new TaskInputsDefinition(taskInputs); } public TaskOutputsDefinition getTaskOutputMappings(String containerId, String processId, String taskName) { containerId = context.getContainerId(containerId, ContainerLocatorProvider.get().getLocator()); findProcessDefinition(containerId, processId); Map<String, String> taskOutputs = definitionService.getTaskOutputMappings(containerId, processId, taskName); return new TaskOutputsDefinition(taskOutputs); } protected ProcessDefinition findProcessDefinition(String containerId, String processId) { containerId = context.getContainerId(containerId, ContainerLocatorProvider.get().getLocator()); ProcessDefinition procDef = definitionService.getProcessDefinition(containerId, processId); if (procDef == null) { throw new IllegalStateException("Process definition " + containerId + " : " + processId + " not found"); } return procDef; } protected UserTaskDefinitionList convert(Collection<UserTaskDefinition> taskDefinitions) { org.kie.server.api.model.definition.UserTaskDefinition[] userTaskDefinitions = new org.kie.server.api.model.definition.UserTaskDefinition[taskDefinitions.size()]; int i = 0; for (UserTaskDefinition orig : taskDefinitions) { Collection<String> entities = orig.getAssociatedEntities(); if (entities == null) { entities = Collections.emptyList(); } org.kie.server.api.model.definition.UserTaskDefinition definition = org.kie.server.api.model.definition.UserTaskDefinition.builder() .name(orig.getName()) .comment(orig.getComment()) .createdBy(orig.getCreatedBy()) .priority(orig.getPriority()) .skippable(orig.isSkippable()) .entities(entities.toArray(new String[entities.size()])) .taskInputs(orig.getTaskInputMappings()) .taskOutputs(orig.getTaskOutputMappings()) .build(); userTaskDefinitions[i] = definition; i++; } return new UserTaskDefinitionList(userTaskDefinitions); } }