super.writePlanItemDefinitionSpecificAttributes(serviceTask, xtw); if (StringUtils.isNotEmpty(serviceTask.getType())) { xtw.writeAttribute(FLOWABLE_EXTENSIONS_PREFIX, FLOWABLE_EXTENSIONS_NAMESPACE, ATTRIBUTE_TYPE, serviceTask.getType()); switch (serviceTask.getType()) { case ServiceTask.JAVA_TASK: if (StringUtils.isNotEmpty(serviceTask.getImplementation())) {
protected void processElements(List<PlanItem> planItemList, CmmnModel model, ArrayNode elementArray, ArrayNode flowArray, GraphicInfo diagramInfo) { for (PlanItem planItem : planItemList) { ObjectNode elementNode = objectMapper.createObjectNode(); elementNode.put("id", planItem.getId()); elementNode.put("name", planItem.getName()); GraphicInfo graphicInfo = model.getGraphicInfo(planItem.getId()); if (graphicInfo != null) { fillGraphicInfo(elementNode, graphicInfo, true); fillDiagramInfo(graphicInfo, diagramInfo); } PlanItemDefinition planItemDefinition = planItem.getPlanItemDefinition(); String className = planItemDefinition.getClass().getSimpleName(); elementNode.put("type", className); if (planItemDefinition instanceof ServiceTask) { ServiceTask serviceTask = (ServiceTask) planItemDefinition; if (HttpServiceTask.HTTP_TASK.equals(serviceTask.getType())) { elementNode.put("taskType", "http"); } } elementArray.add(elementNode); processCriteria(planItem.getEntryCriteria(), "EntryCriterion", model, elementArray); processCriteria(planItem.getExitCriteria(), "ExitCriterion", model, elementArray); if (planItemDefinition instanceof Stage) { Stage stage = (Stage) planItemDefinition; processElements(stage.getPlanItems(), model, elementArray, flowArray, diagramInfo); } } }
@Override protected void executePlanItemParse(CmmnParserImpl cmmnParser, CmmnParseResult cmmnParseResult, PlanItem planItem, ServiceTask serviceTask) { CmmnActivityBehaviorFactory activityBehaviorFactory = cmmnParser.getActivityBehaviorFactory(); switch (serviceTask.getType()) { case HttpServiceTask.HTTP_TASK: planItem.setBehavior(activityBehaviorFactory.createHttpActivityBehavior(planItem, serviceTask)); break; default: // java task type was not set in the version <= 6.2.0 that's why we have to assume that default service task type is java if (StringUtils.isNotEmpty(serviceTask.getImplementation())) { if (ImplementationType.IMPLEMENTATION_TYPE_CLASS.equals(serviceTask.getImplementationType())) { planItem.setBehavior(activityBehaviorFactory.createCmmnClassDelegate(planItem, serviceTask)); } else if (ImplementationType.IMPLEMENTATION_TYPE_EXPRESSION.equals(serviceTask.getImplementationType())) { planItem.setBehavior(activityBehaviorFactory.createPlanItemExpressionActivityBehavior(planItem, serviceTask)); } else if (ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION.equals(serviceTask.getImplementationType())) { planItem.setBehavior(activityBehaviorFactory.createPlanItemDelegateExpressionActivityBehavior(planItem, serviceTask)); } } break; } }