protected static <T extends Task> void writeCommonTaskAttributes(T task, XMLStreamWriter xtw) throws Exception { // Blocking if (StringUtils.isEmpty(task.getBlockingExpression())) { if (!task.isBlocking()) { // if omitted, by default assumed true xtw.writeAttribute(ATTRIBUTE_IS_BLOCKING, "false"); } } else { xtw.writeAttribute(ATTRIBUTE_IS_BLOCKING, "true"); } //isblockingexpression if (StringUtils.isNotEmpty(task.getBlockingExpression())){ xtw.writeAttribute(ATTRIBUTE_IS_BLOCKING_EXPRESSION, task.getBlockingExpression()); } // Async if (task.isAsync()) { xtw.writeAttribute(FLOWABLE_EXTENSIONS_PREFIX, FLOWABLE_EXTENSIONS_NAMESPACE, ATTRIBUTE_IS_ASYNCHRONOUS, String.valueOf(task.isAsync())); } if (task.isExclusive()) { xtw.writeAttribute(FLOWABLE_EXTENSIONS_PREFIX, FLOWABLE_EXTENSIONS_NAMESPACE, ATTRIBUTE_IS_EXCLUSIVE, String.valueOf(task.isAsync())); } }
protected void convertCommonTaskAttributes(XMLStreamReader xtr, Task task) { task.setName(xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_NAME)); String isBlockingString = xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_IS_BLOCKING); if (StringUtils.isNotEmpty(isBlockingString)) { task.setBlocking(Boolean.valueOf(isBlockingString)); } String isBlockingExpressionString = xtr.getAttributeValue(CmmnXmlConstants.FLOWABLE_EXTENSIONS_NAMESPACE, CmmnXmlConstants.ATTRIBUTE_IS_BLOCKING_EXPRESSION); if (StringUtils.isNotEmpty(isBlockingExpressionString)) { task.setBlockingExpression(isBlockingExpressionString); } String isAsyncString = xtr.getAttributeValue(CmmnXmlConstants.FLOWABLE_EXTENSIONS_NAMESPACE, CmmnXmlConstants.ATTRIBUTE_IS_ASYNCHRONOUS); if (StringUtils.isNotEmpty(isAsyncString)) { task.setAsync(Boolean.valueOf(isAsyncString.toLowerCase())); } String isExclusiveString = xtr.getAttributeValue(CmmnXmlConstants.FLOWABLE_EXTENSIONS_NAMESPACE, CmmnXmlConstants.ATTRIBUTE_IS_EXCLUSIVE); if (StringUtils.isNotEmpty(isExclusiveString)) { task.setExclusive(Boolean.valueOf(isExclusiveString)); } } }
@Override public TaskActivityBehavior createTaskActivityBehavior(PlanItem planItem, Task task) { return new TaskActivityBehavior(task.isBlocking(), task.getBlockingExpression()); }
protected boolean isAsync() { if (planItemInstanceEntity.getPlanItem().getPlanItemDefinition() instanceof Task) { Task task = (Task) planItemInstanceEntity.getPlanItem().getPlanItemDefinition(); if (task.isAsync()) { return true; } } return false; }
protected void createAsyncJob(Task task) { JobService jobService = CommandContextUtil.getCmmnEngineConfiguration(commandContext).getJobServiceConfiguration().getJobService(); JobEntity job = jobService.createJob(); job.setJobHandlerType(AsyncActivatePlanItemInstanceJobHandler.TYPE); job.setScopeId(planItemInstanceEntity.getCaseInstanceId()); job.setSubScopeId(planItemInstanceEntity.getId()); job.setScopeDefinitionId(planItemInstanceEntity.getCaseDefinitionId()); job.setScopeType(ScopeTypes.CMMN); job.setJobHandlerConfiguration(entryCriterionId); job.setTenantId(planItemInstanceEntity.getTenantId()); jobService.createAsyncJob(job, task.isExclusive()); jobService.scheduleAsyncJob(job); }
if (planItemDefinition instanceof Task) { Task task = (Task) planItemDefinition; if (!task.isBlocking() && StringUtils.isEmpty(task.getBlockingExpression())) { exitCriteriaAllowed = false;