protected Stage getPlanModel(CaseInstanceEntity caseInstanceEntity) { return CaseDefinitionUtil.getCase(caseInstanceEntity.getCaseDefinitionId()).getPlanModel(); }
@Override public PlanItem getPlanItem() { if (planItem == null) { Case caze = CaseDefinitionUtil.getCase(caseDefinitionId); planItem = (PlanItem) caze.getAllCaseElements().get(elementId); } return planItem; }
public static void writeCase(Case caseModel, XMLStreamWriter xtw) throws Exception { xtw.writeStartElement(ELEMENT_CASE); xtw.writeAttribute(ATTRIBUTE_ID, caseModel.getId()); if (StringUtils.isNotEmpty(caseModel.getName())) { xtw.writeAttribute(ATTRIBUTE_NAME, caseModel.getName()); } if (StringUtils.isNotEmpty(caseModel.getInitiatorVariableName())) { xtw.writeAttribute(FLOWABLE_EXTENSIONS_PREFIX, FLOWABLE_EXTENSIONS_NAMESPACE, ATTRIBUTE_INITIATOR_VARIABLE_NAME, caseModel.getInitiatorVariableName()); } if (!caseModel.getCandidateStarterUsers().isEmpty()) { xtw.writeAttribute(FLOWABLE_EXTENSIONS_PREFIX, FLOWABLE_EXTENSIONS_NAMESPACE, ATTRIBUTE_CASE_CANDIDATE_USERS, CmmnXmlUtil.convertToDelimitedString(caseModel.getCandidateStarterUsers())); } if (!caseModel.getCandidateStarterGroups().isEmpty()) { xtw.writeAttribute(FLOWABLE_EXTENSIONS_PREFIX, FLOWABLE_EXTENSIONS_NAMESPACE, ATTRIBUTE_CASE_CANDIDATE_GROUPS, CmmnXmlUtil.convertToDelimitedString(caseModel.getCandidateStarterGroups())); } if (StringUtils.isNotEmpty(caseModel.getDocumentation())) { xtw.writeStartElement(ELEMENT_DOCUMENTATION); xtw.writeCharacters(caseModel.getDocumentation()); xtw.writeEndElement(); } } }
public void addAuthorizationsForNewCaseDefinition(Case caze, CaseDefinitionEntity caseDefinition) { addAuthorizationsFromIterator(caze.getCandidateStarterUsers(), caseDefinition, "user"); addAuthorizationsFromIterator(caze.getCandidateStarterGroups(), caseDefinition, "group"); }
public void processDI(CmmnModel cmmnModel, List<CaseDefinitionEntity> caseDefinitions) { if (caseDefinitions.isEmpty()) { return; } if (!cmmnModel.getLocationMap().isEmpty()) { List<String> planModelIds = new ArrayList<>(); for (Case caseObject : cmmnModel.getCases()) { planModelIds.add(caseObject.getPlanModel().getId()); } // Verify if all referenced elements exist for (String cmmnReference : cmmnModel.getLocationMap().keySet()) { if (planModelIds.contains(cmmnReference)) { continue; } if (cmmnModel.findPlanItem(cmmnReference) == null && cmmnModel.getCriterion(cmmnReference) == null) { logger.warn("Invalid reference in diagram interchange definition: could not find {}", cmmnReference); } } for (Case caseObject : cmmnModel.getCases()) { CaseDefinitionEntity caseDefinition = getCaseDefinition(caseObject.getId(), caseDefinitions); if (caseDefinition != null) { caseDefinition.setHasGraphicalNotation(true); } } } }
@Override protected void executeParse(CmmnParserImpl cmmnParser, CmmnParseResult cmmnParseResult, Case caze) { CaseDefinitionEntity caseDefinitionEntity = CommandContextUtil.getCaseDefinitionEntityManager().create(); caseDefinitionEntity.setKey(caze.getId()); caseDefinitionEntity.setName(caze.getName()); caseDefinitionEntity.setDescription(caze.getDocumentation()); caseDefinitionEntity.setCategory(cmmnParseResult.getCmmnModel().getTargetNamespace()); caseDefinitionEntity.setDeploymentId(cmmnParseResult.getResourceEntity().getDeploymentId()); cmmnParseResult.addCaseDefinition(caseDefinitionEntity, cmmnParseResult.getResourceEntity(), cmmnParseResult.getCmmnModel()); processPlanFragment(cmmnParser, cmmnParseResult, caze.getPlanModel()); }
protected void processCmmnElements(ConversionHelper conversionHelper) { CmmnModel cmmnModel = conversionHelper.getCmmnModel(); for (Case caze : cmmnModel.getCases()) { processPlanFragment(cmmnModel, caze.getPlanModel()); processSentries(caze.getPlanModel(), caze.getPlanModel()); for (CaseElement caseElement : conversionHelper.getCaseElements().get(caze)) { caze.getAllCaseElements().put(caseElement.getId(), caseElement);
protected CaseInstanceEntity createCaseInstanceEntityFromDefinition(CommandContext commandContext, CaseDefinition caseDefinition) { CaseInstanceEntityManager caseInstanceEntityManager = CommandContextUtil.getCaseInstanceEntityManager(commandContext); CaseInstanceEntity caseInstanceEntity = caseInstanceEntityManager.create(); caseInstanceEntity.setCaseDefinitionId(caseDefinition.getId()); caseInstanceEntity.setStartTime(CommandContextUtil.getCmmnEngineConfiguration(commandContext).getClock().getCurrentTime()); caseInstanceEntity.setState(CaseInstanceState.ACTIVE); caseInstanceEntity.setTenantId(caseDefinition.getTenantId()); String authenticatedUserId = Authentication.getAuthenticatedUserId(); caseInstanceEntity.setStartUserId(authenticatedUserId); caseInstanceEntityManager.insert(caseInstanceEntity); if (authenticatedUserId != null) { IdentityLinkUtil.createCaseInstanceIdentityLink(caseInstanceEntity, authenticatedUserId, null, IdentityLinkType.STARTER); } caseInstanceEntity.setSatisfiedSentryPartInstances(new ArrayList<>(1)); CmmnDeploymentManager deploymentManager = CommandContextUtil.getCmmnEngineConfiguration(commandContext).getDeploymentManager(); CmmnModel cmmnModel = deploymentManager.resolveCaseDefinition(caseDefinition).getCmmnModel(); Case caseModel = cmmnModel.getCaseById(caseDefinition.getKey()); if (caseModel.getInitiatorVariableName() != null) { caseInstanceEntity.setVariable(caseModel.getInitiatorVariableName(), Authentication.getAuthenticatedUserId()); } return caseInstanceEntity; }
xtw.writeStartElement(CMMNDI_PREFIX, ELEMENT_DI_DIAGRAM, CMMNDI_NAMESPACE); String caseId = model.getPrimaryCase().getId(); if (elementId.equals(model.getPrimaryCase().getPlanModel().getId())) { writePlanModel(model.getPrimaryCase().getPlanModel(), model, xtw);
protected List<FormDefinition> getFormDefinitionsFromModel(Case caseModel, CaseDefinition caseDefinition) { Set<String> formKeys = new HashSet<>(); List<FormDefinition> formDefinitions = new ArrayList<>(); // for all user tasks List<HumanTask> humanTasks = caseModel.getPlanModel().findPlanItemDefinitionsOfType(HumanTask.class, true); for (HumanTask humanTask : humanTasks) { if (StringUtils.isNotEmpty(humanTask.getFormKey())) { formKeys.add(humanTask.getFormKey()); } } for (String formKey : formKeys) { addFormDefinitionToCollection(formDefinitions, formKey, caseDefinition); } return formDefinitions; }
public void executeTaskListeners(TaskEntity taskEntity, String eventType) { if (taskEntity.getScopeDefinitionId() != null) { CmmnModel cmmnModel = CaseDefinitionUtil.getCmmnModel(taskEntity.getScopeDefinitionId()); CaseElement caseElement = cmmnModel.getPrimaryCase().getAllCaseElements().get(taskEntity.getTaskDefinitionKey()); if (caseElement instanceof HumanTask) { HumanTask humanTask = (HumanTask) caseElement; executeTaskListeners(humanTask, taskEntity, eventType); } } }
if (caseModel.getPlanModel().getPlanItems().isEmpty()) { Stage planModel = caseModel.getPlanModel();
protected List<DmnDecisionTable> getDecisionTablesFromModel(Case caseModel, CaseDefinition caseDefinition) { Set<String> decisionTableKeys = new HashSet<>(); List<DmnDecisionTable> decisionTables = new ArrayList<>(); List<DecisionTask> decisionTasks = caseModel.getPlanModel().findPlanItemDefinitionsOfType(DecisionTask.class, true); for (DecisionTask decisionTask : decisionTasks) { if (decisionTask.getFieldExtensions() != null && decisionTask.getFieldExtensions().size() > 0) { for (FieldExtension fieldExtension : decisionTask.getFieldExtensions()) { if ("decisionTableReferenceKey".equals(fieldExtension.getFieldName())) { String decisionTableReferenceKey = fieldExtension.getStringValue(); if (!decisionTableKeys.contains(decisionTableReferenceKey)) { addDecisionTableToCollection(decisionTables, decisionTableReferenceKey, caseDefinition); decisionTableKeys.add(decisionTableReferenceKey); } break; } } } } return decisionTables; }
public void addExitCriteriaToCurrentElement(Criterion exitCriterion) { addExitCriterion(exitCriterion); ListIterator<CmmnElement> iterator = currentCmmnElements.listIterator(currentCmmnElements.size()); HasExitCriteria hasExitCriteria = null; while (hasExitCriteria == null && iterator.hasPrevious()) { CmmnElement cmmnElement = iterator.previous(); if (cmmnElement instanceof HasExitCriteria) { hasExitCriteria = (HasExitCriteria) cmmnElement; } } if (hasExitCriteria == null) { hasExitCriteria = getCurrentCase().getPlanModel(); } if (StringUtils.isEmpty(exitCriterion.getId())) { // An id is expected by the evaluation algorithm, so setting an internal one if there isn't one exitCriterion.setId("exitCriterion_" + (hasExitCriteria.getExitCriteria().size() + 1)); } exitCriterion.setAttachedToRefId(hasExitCriteria.getId()); hasExitCriteria.getExitCriteria().add(exitCriterion); }
elementNode.put("id", caseObject.getPlanModel().getId()); elementNode.put("name", caseObject.getPlanModel().getName()); GraphicInfo graphicInfo = pojoModel.getGraphicInfo(caseObject.getPlanModel().getId()); if (graphicInfo != null) { fillGraphicInfo(elementNode, graphicInfo, true); elementArray.add(elementNode); processCriteria(caseObject.getPlanModel().getExitCriteria(), "ExitCriterion", pojoModel, elementArray); processElements(caseObject.getPlanModel().getPlanItems(), pojoModel, elementArray, associationArray, completedElements, activeElements, availableElements, diagramInfo);
elementNode.put("id", caseObject.getPlanModel().getId()); elementNode.put("name", caseObject.getPlanModel().getName()); GraphicInfo graphicInfo = pojoModel.getGraphicInfo(caseObject.getPlanModel().getId()); if (graphicInfo != null) { fillGraphicInfo(elementNode, graphicInfo, true); elementArray.add(elementNode); processCriteria(caseObject.getPlanModel().getExitCriteria(), "ExitCriterion", pojoModel, elementArray); processElements(caseObject.getPlanModel().getPlanItems(), pojoModel, elementArray, flowArray, diagramInfo);
List<Stage> stages = cmmnModel.getPrimaryCase().getPlanModel().findPlanItemDefinitionsOfType(Stage.class, true);
protected boolean isPlanModelComplete() { boolean allRequiredChildrenInEndState = isEndStateReachedForAllRequiredChildPlanItems(caseInstanceEntity); if (allRequiredChildrenInEndState) { caseInstanceEntity.setCompleteable(true); } boolean isAutoComplete = CaseDefinitionUtil.getCase(caseInstanceEntity.getCaseDefinitionId()).getPlanModel().isAutoComplete(); if (caseInstanceEntity.isCompleteable()) { if (isAutoComplete) { return true; } else { return isAvailableChildPlanCompletionNeutralOrNotActive(caseInstanceEntity); } } else { return false; } }
protected void setCaseDefinitionVersionsAndIds(CmmnParseResult parseResult, Map<CaseDefinitionEntity, CaseDefinitionEntity> mapNewToOldCaseDefinitions) { for (CaseDefinitionEntity caseDefinition : parseResult.getAllCaseDefinitions()) { int version = 1; CaseDefinitionEntity latest = mapNewToOldCaseDefinitions.get(caseDefinition); if (latest != null) { version = latest.getVersion() + 1; } caseDefinition.setVersion(version); if (usePrefixId) { caseDefinition.setId(caseDefinition.getIdPrefix() + idGenerator.getNextId()); } else { caseDefinition.setId(idGenerator.getNextId()); } Case caseObject = parseResult.getCmmnCaseForCaseDefinition(caseDefinition); if (caseObject.getPlanModel().getFormKey() != null) { caseDefinition.setHasStartFormKey(true); } } }
@Override public void run() { super.run(); Stage stage = CaseDefinitionUtil.getCase(caseInstanceEntity.getCaseDefinitionId()).getPlanModel(); createPlanItemInstances(commandContext, stage.getPlanItems(), caseInstanceEntity.getCaseDefinitionId(), caseInstanceEntity.getId(), null, caseInstanceEntity.getTenantId()); CommandContextUtil.getAgenda(commandContext).planEvaluateCriteriaOperation(caseInstanceEntity.getId()); }