Search in sources :

Example 1 with ValuedDataObject

use of org.activiti.bpmn.model.ValuedDataObject in project Activiti by Activiti.

the class BpmnJsonConverter method convertToBpmnModel.

public BpmnModel convertToBpmnModel(JsonNode modelNode) {
    BpmnModel bpmnModel = new BpmnModel();
    bpmnModel.setTargetNamespace("http://activiti.org/test");
    Map<String, JsonNode> shapeMap = new HashMap<String, JsonNode>();
    Map<String, JsonNode> sourceRefMap = new HashMap<String, JsonNode>();
    Map<String, JsonNode> edgeMap = new HashMap<String, JsonNode>();
    Map<String, List<JsonNode>> sourceAndTargetMap = new HashMap<String, List<JsonNode>>();
    readShapeDI(modelNode, 0, 0, shapeMap, sourceRefMap, bpmnModel);
    filterAllEdges(modelNode, edgeMap, sourceAndTargetMap, shapeMap, sourceRefMap);
    readEdgeDI(edgeMap, sourceAndTargetMap, bpmnModel);
    ArrayNode shapesArrayNode = (ArrayNode) modelNode.get(EDITOR_CHILD_SHAPES);
    if (shapesArrayNode == null || shapesArrayNode.size() == 0)
        return bpmnModel;
    boolean nonEmptyPoolFound = false;
    Map<String, Lane> elementInLaneMap = new HashMap<String, Lane>();
    // first create the pool structure
    for (JsonNode shapeNode : shapesArrayNode) {
        String stencilId = BpmnJsonConverterUtil.getStencilId(shapeNode);
        if (STENCIL_POOL.equals(stencilId)) {
            Pool pool = new Pool();
            pool.setId(BpmnJsonConverterUtil.getElementId(shapeNode));
            pool.setName(JsonConverterUtil.getPropertyValueAsString(PROPERTY_NAME, shapeNode));
            pool.setProcessRef(JsonConverterUtil.getPropertyValueAsString(PROPERTY_PROCESS_ID, shapeNode));
            pool.setExecutable(JsonConverterUtil.getPropertyValueAsBoolean(PROPERTY_PROCESS_EXECUTABLE, shapeNode, true));
            bpmnModel.getPools().add(pool);
            Process process = new Process();
            process.setId(pool.getProcessRef());
            process.setName(pool.getName());
            process.setExecutable(pool.isExecutable());
            bpmnModel.addProcess(process);
            ArrayNode laneArrayNode = (ArrayNode) shapeNode.get(EDITOR_CHILD_SHAPES);
            for (JsonNode laneNode : laneArrayNode) {
                // should be a lane, but just check to be certain
                String laneStencilId = BpmnJsonConverterUtil.getStencilId(laneNode);
                if (STENCIL_LANE.equals(laneStencilId)) {
                    nonEmptyPoolFound = true;
                    Lane lane = new Lane();
                    lane.setId(BpmnJsonConverterUtil.getElementId(laneNode));
                    lane.setName(JsonConverterUtil.getPropertyValueAsString(PROPERTY_NAME, laneNode));
                    lane.setParentProcess(process);
                    process.getLanes().add(lane);
                    processJsonElements(laneNode.get(EDITOR_CHILD_SHAPES), modelNode, lane, shapeMap, bpmnModel);
                    if (CollectionUtils.isNotEmpty(lane.getFlowReferences())) {
                        for (String elementRef : lane.getFlowReferences()) {
                            elementInLaneMap.put(elementRef, lane);
                        }
                    }
                }
            }
        }
    }
    // Signal Definitions exist on the root level
    JsonNode signalDefinitionNode = BpmnJsonConverterUtil.getProperty(PROPERTY_SIGNAL_DEFINITIONS, modelNode);
    signalDefinitionNode = BpmnJsonConverterUtil.validateIfNodeIsTextual(signalDefinitionNode);
    // no idea why this needs to be done twice ..
    signalDefinitionNode = BpmnJsonConverterUtil.validateIfNodeIsTextual(signalDefinitionNode);
    if (signalDefinitionNode != null) {
        if (signalDefinitionNode instanceof ArrayNode) {
            ArrayNode signalDefinitionArrayNode = (ArrayNode) signalDefinitionNode;
            Iterator<JsonNode> signalDefinitionIterator = signalDefinitionArrayNode.iterator();
            while (signalDefinitionIterator.hasNext()) {
                JsonNode signalDefinitionJsonNode = signalDefinitionIterator.next();
                String signalId = signalDefinitionJsonNode.get(PROPERTY_SIGNAL_DEFINITION_ID).asText();
                String signalName = signalDefinitionJsonNode.get(PROPERTY_SIGNAL_DEFINITION_NAME).asText();
                String signalScope = signalDefinitionJsonNode.get(PROPERTY_SIGNAL_DEFINITION_SCOPE).asText();
                Signal signal = new Signal();
                signal.setId(signalId);
                signal.setName(signalName);
                signal.setScope((signalScope.toLowerCase().equals("processinstance")) ? Signal.SCOPE_PROCESS_INSTANCE : Signal.SCOPE_GLOBAL);
                bpmnModel.addSignal(signal);
            }
        }
    }
    if (nonEmptyPoolFound == false) {
        Process process = new Process();
        bpmnModel.getProcesses().add(process);
        process.setId(BpmnJsonConverterUtil.getPropertyValueAsString(PROPERTY_PROCESS_ID, modelNode));
        process.setName(BpmnJsonConverterUtil.getPropertyValueAsString(PROPERTY_NAME, modelNode));
        String namespace = BpmnJsonConverterUtil.getPropertyValueAsString(PROPERTY_PROCESS_NAMESPACE, modelNode);
        if (StringUtils.isNotEmpty(namespace)) {
            bpmnModel.setTargetNamespace(namespace);
        }
        process.setDocumentation(BpmnJsonConverterUtil.getPropertyValueAsString(PROPERTY_DOCUMENTATION, modelNode));
        JsonNode processExecutableNode = JsonConverterUtil.getProperty(PROPERTY_PROCESS_EXECUTABLE, modelNode);
        if (processExecutableNode != null && StringUtils.isNotEmpty(processExecutableNode.asText())) {
            process.setExecutable(JsonConverterUtil.getPropertyValueAsBoolean(PROPERTY_PROCESS_EXECUTABLE, modelNode));
        }
        BpmnJsonConverterUtil.convertJsonToMessages(modelNode, bpmnModel);
        BpmnJsonConverterUtil.convertJsonToListeners(modelNode, process);
        JsonNode eventListenersNode = BpmnJsonConverterUtil.getProperty(PROPERTY_EVENT_LISTENERS, modelNode);
        if (eventListenersNode != null) {
            eventListenersNode = BpmnJsonConverterUtil.validateIfNodeIsTextual(eventListenersNode);
            BpmnJsonConverterUtil.parseEventListeners(eventListenersNode.get(PROPERTY_EVENTLISTENER_VALUE), process);
        }
        JsonNode processDataPropertiesNode = modelNode.get(EDITOR_SHAPE_PROPERTIES).get(PROPERTY_DATA_PROPERTIES);
        if (processDataPropertiesNode != null) {
            List<ValuedDataObject> dataObjects = BpmnJsonConverterUtil.convertJsonToDataProperties(processDataPropertiesNode, process);
            process.setDataObjects(dataObjects);
            process.getFlowElements().addAll(dataObjects);
        }
        processJsonElements(shapesArrayNode, modelNode, process, shapeMap, bpmnModel);
    } else {
        // sequence flows are on root level so need additional parsing for pools
        for (JsonNode shapeNode : shapesArrayNode) {
            if (STENCIL_SEQUENCE_FLOW.equalsIgnoreCase(BpmnJsonConverterUtil.getStencilId(shapeNode)) || STENCIL_ASSOCIATION.equalsIgnoreCase(BpmnJsonConverterUtil.getStencilId(shapeNode))) {
                String sourceRef = BpmnJsonConverterUtil.lookForSourceRef(shapeNode.get(EDITOR_SHAPE_ID).asText(), modelNode.get(EDITOR_CHILD_SHAPES));
                if (sourceRef != null) {
                    Lane lane = elementInLaneMap.get(sourceRef);
                    SequenceFlowJsonConverter flowConverter = new SequenceFlowJsonConverter();
                    if (lane != null) {
                        flowConverter.convertToBpmnModel(shapeNode, modelNode, this, lane, shapeMap, bpmnModel);
                    } else {
                        flowConverter.convertToBpmnModel(shapeNode, modelNode, this, bpmnModel.getProcesses().get(0), shapeMap, bpmnModel);
                    }
                }
            }
        }
    }
    // sequence flows are now all on root level
    Map<String, SubProcess> subShapesMap = new HashMap<String, SubProcess>();
    for (Process process : bpmnModel.getProcesses()) {
        for (FlowElement flowElement : process.findFlowElementsOfType(SubProcess.class)) {
            SubProcess subProcess = (SubProcess) flowElement;
            fillSubShapes(subShapesMap, subProcess);
        }
        if (subShapesMap.size() > 0) {
            List<String> removeSubFlowsList = new ArrayList<String>();
            for (FlowElement flowElement : process.findFlowElementsOfType(SequenceFlow.class)) {
                SequenceFlow sequenceFlow = (SequenceFlow) flowElement;
                if (subShapesMap.containsKey(sequenceFlow.getSourceRef())) {
                    SubProcess subProcess = subShapesMap.get(sequenceFlow.getSourceRef());
                    if (subProcess.getFlowElement(sequenceFlow.getId()) == null) {
                        subProcess.addFlowElement(sequenceFlow);
                        removeSubFlowsList.add(sequenceFlow.getId());
                    }
                }
            }
            for (String flowId : removeSubFlowsList) {
                process.removeFlowElement(flowId);
            }
        }
    }
    Map<String, FlowWithContainer> allFlowMap = new HashMap<String, FlowWithContainer>();
    List<Gateway> gatewayWithOrderList = new ArrayList<Gateway>();
    // post handling of process elements
    for (Process process : bpmnModel.getProcesses()) {
        postProcessElements(process, process.getFlowElements(), edgeMap, bpmnModel, allFlowMap, gatewayWithOrderList);
    }
    // sort the sequence flows
    for (Gateway gateway : gatewayWithOrderList) {
        List<ExtensionElement> orderList = gateway.getExtensionElements().get("EDITOR_FLOW_ORDER");
        if (CollectionUtils.isNotEmpty(orderList)) {
            for (ExtensionElement orderElement : orderList) {
                String flowValue = orderElement.getElementText();
                if (StringUtils.isNotEmpty(flowValue)) {
                    if (allFlowMap.containsKey(flowValue)) {
                        FlowWithContainer flowWithContainer = allFlowMap.get(flowValue);
                        flowWithContainer.getFlowContainer().removeFlowElement(flowWithContainer.getSequenceFlow().getId());
                        flowWithContainer.getFlowContainer().addFlowElement(flowWithContainer.getSequenceFlow());
                    }
                }
            }
        }
        gateway.getExtensionElements().remove("EDITOR_FLOW_ORDER");
    }
    return bpmnModel;
}
Also used : ValuedDataObject(org.activiti.bpmn.model.ValuedDataObject) HashMap(java.util.HashMap) SequenceFlow(org.activiti.bpmn.model.SequenceFlow) ArrayList(java.util.ArrayList) ExtensionElement(org.activiti.bpmn.model.ExtensionElement) JsonNode(com.fasterxml.jackson.databind.JsonNode) Process(org.activiti.bpmn.model.Process) SubProcess(org.activiti.bpmn.model.SubProcess) BpmnModel(org.activiti.bpmn.model.BpmnModel) Signal(org.activiti.bpmn.model.Signal) Gateway(org.activiti.bpmn.model.Gateway) ArrayList(java.util.ArrayList) List(java.util.List) Pool(org.activiti.bpmn.model.Pool) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) SubProcess(org.activiti.bpmn.model.SubProcess) Lane(org.activiti.bpmn.model.Lane) FlowElement(org.activiti.bpmn.model.FlowElement)

Example 2 with ValuedDataObject

use of org.activiti.bpmn.model.ValuedDataObject in project Activiti by Activiti.

the class DataObjectConverterTest method validateModel.

private void validateModel(BpmnModel model) {
    FlowElement flowElement = model.getMainProcess().getFlowElement("start1");
    assertThat(flowElement).isNotNull();
    assertThat(flowElement).isInstanceOf(StartEvent.class);
    assertThat(flowElement.getId()).isEqualTo("start1");
    // verify the main process data objects
    List<ValuedDataObject> dataObjects = model.getMainProcess().getDataObjects();
    assertThat(dataObjects).hasSize(7);
    Map<String, ValuedDataObject> objectMap = new HashMap<String, ValuedDataObject>();
    for (ValuedDataObject valueObj : dataObjects) {
        objectMap.put(valueObj.getId(), valueObj);
    }
    ValuedDataObject dataObj = objectMap.get("dObj1");
    assertThat(dataObj.getId()).isEqualTo("dObj1");
    assertThat(dataObj.getName()).isEqualTo("StringTest");
    assertThat(dataObj.getItemSubjectRef().getStructureRef()).isEqualTo("xsd:string");
    dataObj = objectMap.get("dObj2");
    assertThat(dataObj.getName()).isEqualTo("BooleanTest");
    assertThat(dataObj.getItemSubjectRef().getStructureRef()).isEqualTo("xsd:boolean");
    dataObj = objectMap.get("dObj3");
    assertThat(dataObj.getName()).isEqualTo("DateTest");
    assertThat(dataObj.getItemSubjectRef().getStructureRef()).isEqualTo("xsd:datetime");
    dataObj = objectMap.get("dObj4");
    assertThat(dataObj.getName()).isEqualTo("DoubleTest");
    assertThat(dataObj.getItemSubjectRef().getStructureRef()).isEqualTo("xsd:double");
    dataObj = objectMap.get("dObj5");
    assertThat(dataObj.getName()).isEqualTo("IntegerTest");
    assertThat(dataObj.getItemSubjectRef().getStructureRef()).isEqualTo("xsd:int");
    dataObj = objectMap.get("dObj6");
    assertThat(dataObj.getName()).isEqualTo("LongTest");
    assertThat(dataObj.getItemSubjectRef().getStructureRef()).isEqualTo("xsd:long");
    dataObj = objectMap.get("dObjWithoutType");
    assertThat(dataObj.getName()).isEqualTo("UnknownTypeTest");
    assertThat(dataObj.getItemSubjectRef().getStructureRef()).isEqualTo("xsd:string");
    flowElement = model.getMainProcess().getFlowElement("userTask1");
    assertThat(flowElement).isNotNull();
    assertThat(flowElement).isInstanceOf(UserTask.class);
    assertThat(flowElement.getId()).isEqualTo("userTask1");
    UserTask userTask = (UserTask) flowElement;
    assertThat(userTask.getAssignee()).isEqualTo("kermit");
    flowElement = model.getMainProcess().getFlowElement("subprocess1");
    assertThat(flowElement).isNotNull();
    assertThat(flowElement).isInstanceOf(SubProcess.class);
    assertThat(flowElement.getId()).isEqualTo("subprocess1");
    SubProcess subProcess = (SubProcess) flowElement;
    assertThat(subProcess.getFlowElements()).hasSize(11);
    // verify the sub process data objects
    dataObjects = subProcess.getDataObjects();
    assertThat(dataObjects).hasSize(6);
    objectMap = new HashMap<String, ValuedDataObject>();
    for (ValuedDataObject valueObj : dataObjects) {
        objectMap.put(valueObj.getId(), valueObj);
    }
    dataObj = objectMap.get("dObj7");
    assertThat(dataObj.getId()).isEqualTo("dObj7");
    assertThat(dataObj.getName()).isEqualTo("StringSubTest");
    assertThat(dataObj.getItemSubjectRef().getStructureRef()).isEqualTo("xsd:string");
    dataObj = objectMap.get("dObj8");
    assertThat(dataObj.getId()).isEqualTo("dObj8");
    assertThat(dataObj.getName()).isEqualTo("BooleanSubTest");
    assertThat(dataObj.getItemSubjectRef().getStructureRef()).isEqualTo("xsd:boolean");
    dataObj = objectMap.get("dObj9");
    assertThat(dataObj.getId()).isEqualTo("dObj9");
    assertThat(dataObj.getName()).isEqualTo("DateSubTest");
    assertThat(dataObj.getItemSubjectRef().getStructureRef()).isEqualTo("xsd:datetime");
    dataObj = objectMap.get("dObj10");
    assertThat(dataObj.getId()).isEqualTo("dObj10");
    assertThat(dataObj.getName()).isEqualTo("DoubleSubTest");
    assertThat(dataObj.getItemSubjectRef().getStructureRef()).isEqualTo("xsd:double");
    dataObj = objectMap.get("dObj11");
    assertThat(dataObj.getId()).isEqualTo("dObj11");
    assertThat(dataObj.getName()).isEqualTo("IntegerSubTest");
    assertThat(dataObj.getItemSubjectRef().getStructureRef()).isEqualTo("xsd:int");
    dataObj = objectMap.get("dObj12");
    assertThat(dataObj.getId()).isEqualTo("dObj12");
    assertThat(dataObj.getName()).isEqualTo("LongSubTest");
    assertThat(dataObj.getItemSubjectRef().getStructureRef()).isEqualTo("xsd:long");
}
Also used : SubProcess(org.activiti.bpmn.model.SubProcess) ValuedDataObject(org.activiti.bpmn.model.ValuedDataObject) HashMap(java.util.HashMap) FlowElement(org.activiti.bpmn.model.FlowElement) UserTask(org.activiti.bpmn.model.UserTask)

Example 3 with ValuedDataObject

use of org.activiti.bpmn.model.ValuedDataObject in project Activiti by Activiti.

the class GetDataObjectCmd method execute.

public DataObject execute(CommandContext commandContext) {
    if (executionId == null) {
        throw new ActivitiIllegalArgumentException("executionId is null");
    }
    if (dataObjectName == null) {
        throw new ActivitiIllegalArgumentException("dataObjectName is null");
    }
    ExecutionEntity execution = commandContext.getExecutionEntityManager().findById(executionId);
    if (execution == null) {
        throw new ActivitiObjectNotFoundException("execution " + executionId + " doesn't exist", Execution.class);
    }
    DataObject dataObject = null;
    VariableInstance variableEntity = null;
    if (isLocal) {
        variableEntity = execution.getVariableInstanceLocal(dataObjectName, false);
    } else {
        variableEntity = execution.getVariableInstance(dataObjectName, false);
    }
    String localizedName = null;
    String localizedDescription = null;
    if (variableEntity != null) {
        ExecutionEntity executionEntity = commandContext.getExecutionEntityManager().findById(variableEntity.getExecutionId());
        while (!executionEntity.isScope()) {
            executionEntity = executionEntity.getParent();
        }
        BpmnModel bpmnModel = ProcessDefinitionUtil.getBpmnModel(executionEntity.getProcessDefinitionId());
        ValuedDataObject foundDataObject = null;
        if (executionEntity.getParentId() == null) {
            for (ValuedDataObject dataObjectDefinition : bpmnModel.getMainProcess().getDataObjects()) {
                if (dataObjectDefinition.getName().equals(variableEntity.getName())) {
                    foundDataObject = dataObjectDefinition;
                    break;
                }
            }
        } else {
            SubProcess subProcess = (SubProcess) bpmnModel.getFlowElement(execution.getActivityId());
            for (ValuedDataObject dataObjectDefinition : subProcess.getDataObjects()) {
                if (dataObjectDefinition.getName().equals(variableEntity.getName())) {
                    foundDataObject = dataObjectDefinition;
                    break;
                }
            }
        }
        if (locale != null && foundDataObject != null) {
            ObjectNode languageNode = Context.getLocalizationElementProperties(locale, foundDataObject.getId(), execution.getProcessDefinitionId(), withLocalizationFallback);
            if (variableEntity != null && languageNode != null) {
                JsonNode nameNode = languageNode.get(DynamicBpmnConstants.LOCALIZATION_NAME);
                if (nameNode != null) {
                    localizedName = nameNode.asText();
                }
                JsonNode descriptionNode = languageNode.get(DynamicBpmnConstants.LOCALIZATION_DESCRIPTION);
                if (descriptionNode != null) {
                    localizedDescription = descriptionNode.asText();
                }
            }
        }
        if (foundDataObject != null) {
            dataObject = new DataObjectImpl(variableEntity.getName(), variableEntity.getValue(), foundDataObject.getDocumentation(), foundDataObject.getType(), localizedName, localizedDescription, foundDataObject.getId());
        }
    }
    return dataObject;
}
Also used : SubProcess(org.activiti.bpmn.model.SubProcess) DataObjectImpl(org.activiti.engine.impl.DataObjectImpl) ValuedDataObject(org.activiti.bpmn.model.ValuedDataObject) DataObject(org.activiti.engine.runtime.DataObject) ValuedDataObject(org.activiti.bpmn.model.ValuedDataObject) ExecutionEntity(org.activiti.engine.impl.persistence.entity.ExecutionEntity) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) ActivitiIllegalArgumentException(org.activiti.engine.ActivitiIllegalArgumentException) JsonNode(com.fasterxml.jackson.databind.JsonNode) ActivitiObjectNotFoundException(org.activiti.engine.ActivitiObjectNotFoundException) VariableInstance(org.activiti.engine.impl.persistence.entity.VariableInstance) BpmnModel(org.activiti.bpmn.model.BpmnModel)

Example 4 with ValuedDataObject

use of org.activiti.bpmn.model.ValuedDataObject in project Activiti by Activiti.

the class GetTaskDataObjectsCmd method execute.

public Map<String, DataObject> execute(CommandContext commandContext) {
    if (taskId == null) {
        throw new ActivitiIllegalArgumentException("taskId is null");
    }
    TaskEntity task = commandContext.getTaskEntityManager().findById(taskId);
    if (task == null) {
        throw new ActivitiObjectNotFoundException("task " + taskId + " doesn't exist", Task.class);
    }
    Map<String, DataObject> dataObjects = null;
    Map<String, VariableInstance> variables = null;
    if (variableNames == null) {
        variables = task.getVariableInstances();
    } else {
        variables = task.getVariableInstances(variableNames, false);
    }
    if (variables != null) {
        dataObjects = new HashMap<>(variables.size());
        for (Entry<String, VariableInstance> entry : variables.entrySet()) {
            VariableInstance variableEntity = entry.getValue();
            String localizedName = null;
            String localizedDescription = null;
            ExecutionEntity executionEntity = commandContext.getExecutionEntityManager().findById(variableEntity.getExecutionId());
            while (!executionEntity.isScope()) {
                executionEntity = executionEntity.getParent();
            }
            BpmnModel bpmnModel = ProcessDefinitionUtil.getBpmnModel(executionEntity.getProcessDefinitionId());
            ValuedDataObject foundDataObject = null;
            if (executionEntity.getParentId() == null) {
                for (ValuedDataObject dataObject : bpmnModel.getMainProcess().getDataObjects()) {
                    if (dataObject.getName().equals(variableEntity.getName())) {
                        foundDataObject = dataObject;
                        break;
                    }
                }
            } else {
                SubProcess subProcess = (SubProcess) bpmnModel.getFlowElement(executionEntity.getActivityId());
                for (ValuedDataObject dataObject : subProcess.getDataObjects()) {
                    if (dataObject.getName().equals(variableEntity.getName())) {
                        foundDataObject = dataObject;
                        break;
                    }
                }
            }
            if (locale != null && foundDataObject != null) {
                ObjectNode languageNode = Context.getLocalizationElementProperties(locale, foundDataObject.getId(), task.getProcessDefinitionId(), withLocalizationFallback);
                if (languageNode != null) {
                    JsonNode nameNode = languageNode.get(DynamicBpmnConstants.LOCALIZATION_NAME);
                    if (nameNode != null) {
                        localizedName = nameNode.asText();
                    }
                    JsonNode descriptionNode = languageNode.get(DynamicBpmnConstants.LOCALIZATION_DESCRIPTION);
                    if (descriptionNode != null) {
                        localizedDescription = descriptionNode.asText();
                    }
                }
            }
            if (foundDataObject != null) {
                dataObjects.put(variableEntity.getName(), new DataObjectImpl(variableEntity.getName(), variableEntity.getValue(), foundDataObject.getDocumentation(), foundDataObject.getType(), localizedName, localizedDescription, foundDataObject.getId()));
            }
        }
    }
    return dataObjects;
}
Also used : SubProcess(org.activiti.bpmn.model.SubProcess) ValuedDataObject(org.activiti.bpmn.model.ValuedDataObject) TaskEntity(org.activiti.engine.impl.persistence.entity.TaskEntity) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) JsonNode(com.fasterxml.jackson.databind.JsonNode) ActivitiObjectNotFoundException(org.activiti.engine.ActivitiObjectNotFoundException) BpmnModel(org.activiti.bpmn.model.BpmnModel) DataObjectImpl(org.activiti.engine.impl.DataObjectImpl) DataObject(org.activiti.engine.runtime.DataObject) ValuedDataObject(org.activiti.bpmn.model.ValuedDataObject) ExecutionEntity(org.activiti.engine.impl.persistence.entity.ExecutionEntity) ActivitiIllegalArgumentException(org.activiti.engine.ActivitiIllegalArgumentException) VariableInstance(org.activiti.engine.impl.persistence.entity.VariableInstance)

Example 5 with ValuedDataObject

use of org.activiti.bpmn.model.ValuedDataObject in project Activiti by Activiti.

the class SubProcessConverterAutoLayoutTest method validateModel.

private void validateModel(BpmnModel model) {
    FlowElement flowElement = model.getMainProcess().getFlowElement("start1");
    assertThat(flowElement).isNotNull();
    assertThat(flowElement).isInstanceOf(StartEvent.class);
    assertThat(flowElement.getId()).isEqualTo("start1");
    flowElement = model.getMainProcess().getFlowElement("userTask1");
    assertThat(flowElement).isNotNull();
    assertThat(flowElement).isInstanceOf(UserTask.class);
    assertThat(flowElement.getId()).isEqualTo("userTask1");
    UserTask userTask = (UserTask) flowElement;
    assertThat(userTask.getCandidateUsers().size() == 1).isTrue();
    assertThat(userTask.getCandidateGroups().size() == 1).isTrue();
    flowElement = model.getMainProcess().getFlowElement("subprocess1");
    assertThat(flowElement).isNotNull();
    assertThat(flowElement).isInstanceOf(SubProcess.class);
    assertThat(flowElement.getId()).isEqualTo("subprocess1");
    SubProcess subProcess = (SubProcess) flowElement;
    assertThat(subProcess.getFlowElements().size() == 6).isTrue();
    List<ValuedDataObject> dataObjects = ((SubProcess) flowElement).getDataObjects();
    assertThat(dataObjects.size() == 1).isTrue();
    ValuedDataObject dataObj = dataObjects.get(0);
    assertThat(dataObj.getName()).isEqualTo("SubTest");
    assertThat(dataObj.getItemSubjectRef().getStructureRef()).isEqualTo("xsd:string");
    assertThat(dataObj.getValue()).isInstanceOf(String.class);
    assertThat(dataObj.getValue()).isEqualTo("Testing");
}
Also used : SubProcess(org.activiti.bpmn.model.SubProcess) ValuedDataObject(org.activiti.bpmn.model.ValuedDataObject) FlowElement(org.activiti.bpmn.model.FlowElement) UserTask(org.activiti.bpmn.model.UserTask)

Aggregations

ValuedDataObject (org.activiti.bpmn.model.ValuedDataObject)21 SubProcess (org.activiti.bpmn.model.SubProcess)14 JsonNode (com.fasterxml.jackson.databind.JsonNode)8 FlowElement (org.activiti.bpmn.model.FlowElement)8 BpmnModel (org.activiti.bpmn.model.BpmnModel)6 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)5 HashMap (java.util.HashMap)5 ExtensionElement (org.activiti.bpmn.model.ExtensionElement)5 ArrayList (java.util.ArrayList)4 BooleanDataObject (org.activiti.bpmn.model.BooleanDataObject)4 DateDataObject (org.activiti.bpmn.model.DateDataObject)4 DoubleDataObject (org.activiti.bpmn.model.DoubleDataObject)4 LongDataObject (org.activiti.bpmn.model.LongDataObject)4 StringDataObject (org.activiti.bpmn.model.StringDataObject)4 ActivitiIllegalArgumentException (org.activiti.engine.ActivitiIllegalArgumentException)4 ActivitiObjectNotFoundException (org.activiti.engine.ActivitiObjectNotFoundException)4 DataObjectImpl (org.activiti.engine.impl.DataObjectImpl)4 ExecutionEntity (org.activiti.engine.impl.persistence.entity.ExecutionEntity)4 VariableInstance (org.activiti.engine.impl.persistence.entity.VariableInstance)4 DataObject (org.activiti.engine.runtime.DataObject)4