protected void addField(String name, JsonNode elementNode, ServiceTask task) { FieldExtension field = new FieldExtension(); field.setFieldName(name.substring(8)); String value = getPropertyValueAsString(name, elementNode); if (StringUtils.isNotEmpty(value)) { if ((value.contains("${") || value.contains("#{")) && value.contains("}")) { field.setExpression(value); } else { field.setStringValue(value); } task.getFieldExtensions().add(field); } }
protected void addField(String name, String propertyName, JsonNode elementNode, ServiceTask task) { FieldExtension field = new FieldExtension(); field.setFieldName(name); String value = getPropertyValueAsString(propertyName, elementNode); if (StringUtils.isNotEmpty(value)) { if ((value.contains("${") || value.contains("#{")) && value.contains("}")) { field.setExpression(value); } else { field.setStringValue(value); } task.getFieldExtensions().add(field); } }
extension.setExpression(xtr.getAttributeValue(null, ATTRIBUTE_FIELD_EXPRESSION)); extension.setExpression(xtr.getElementText().trim());
fieldExtension.setExpression(getValueAsString(PROPERTY_FIELD_EXPRESSION, fieldNode));
field.setStringValue(getValueAsString(PROPERTY_SERVICETASK_FIELD_STRING, itemNode)); } else if (StringUtils.isNotEmpty(getValueAsString(PROPERTY_SERVICETASK_FIELD_EXPRESSION, itemNode))) { field.setExpression(getValueAsString(PROPERTY_SERVICETASK_FIELD_EXPRESSION, itemNode));
protected void addField(String name, JsonNode elementNode, ServiceTask task) { FieldExtension field = new FieldExtension(); field.setFieldName(name.substring(8)); String value = getPropertyValueAsString(name, elementNode); if (StringUtils.isNotEmpty(value)) { if ((value.contains("${") || value.contains("#{")) && value.contains("}")) { field.setExpression(value); } else { field.setStringValue(value); } task.getFieldExtensions().add(field); } }
protected void addField(String name, String propertyName, JsonNode elementNode, ServiceTask task) { FieldExtension field = new FieldExtension(); field.setFieldName(name); String value = getPropertyValueAsString(propertyName, elementNode); if (StringUtils.isNotEmpty(value)) { if ((value.contains("${") || value.contains("#{")) && value.contains("}")) { field.setExpression(value); } else { field.setStringValue(value); } task.getFieldExtensions().add(field); } }
extension.setExpression(xtr.getAttributeValue(null, ATTRIBUTE_FIELD_EXPRESSION)); extension.setExpression(xtr.getElementText().trim());
extension.setExpression(xtr.getAttributeValue(null, ATTRIBUTE_FIELD_EXPRESSION)); extension.setExpression(xtr.getElementText().trim());
private List<FieldExtension> getScriptStepsFieldExtension() { List<FieldExtension> fieldExtensionList = new ArrayList<>(); FieldExtension exceptionField = new FieldExtension(); exceptionField.setFieldName("scriptLocation"); exceptionField.setExpression("${scriptLocation}"); fieldExtensionList.add(exceptionField); exceptionField = new FieldExtension(); exceptionField.setFieldName("scriptArguments"); exceptionField.setExpression("${scriptArguments}"); fieldExtensionList.add(exceptionField); return fieldExtensionList; } }
protected FieldExtension buildFieldExtension(String name, String expression) { FieldExtension exceptionField = new FieldExtension(); exceptionField.setFieldName(name); exceptionField.setExpression(expression); return exceptionField; }
private List<FieldExtension> getOptionalFieldExtensions() { List<FieldExtension> fieldExtensionList = new ArrayList<>(); FieldExtension fieldExtension = new FieldExtension(); fieldExtension.setFieldName("emrClusterId"); fieldExtension.setExpression("${createClusterServiceTask_emrClusterId}"); fieldExtensionList.add(fieldExtension); fieldExtension = new FieldExtension(); fieldExtension.setFieldName("verbose"); fieldExtension.setExpression("${verbose}"); fieldExtensionList.add(fieldExtension); fieldExtension = new FieldExtension(); fieldExtension.setFieldName("retrieveInstanceFleets"); fieldExtension.setExpression("${retrieveInstanceFleets}"); fieldExtensionList.add(fieldExtension); return fieldExtensionList; } }
@Test public void testAddHadoopJarStep() throws Exception { List<FieldExtension> fieldExtensionList = new ArrayList<>(); FieldExtension exceptionField = new FieldExtension(); exceptionField.setFieldName("jarLocation"); exceptionField.setExpression("${jarLocation}"); fieldExtensionList.add(exceptionField); exceptionField = new FieldExtension(); exceptionField.setFieldName("mainClass"); exceptionField.setExpression("${mainClass}"); fieldExtensionList.add(exceptionField); exceptionField = new FieldExtension(); exceptionField.setFieldName("scriptArguments"); exceptionField.setExpression("${scriptArguments}"); fieldExtensionList.add(exceptionField); List<Parameter> parameters = new ArrayList<>(getCommonParameters("Hadoop jar Step")); Parameter parameter = new Parameter("jarLocation", "s3://test-bucket-managed/app-a/test/hadoop-mapreduce-examples-2.4.0.jar"); parameters.add(parameter); parameter = new Parameter("mainClass", "wordcount"); parameters.add(parameter); parameter = new Parameter("scriptArguments", "arg1|arg/|withpipe|arg2|arg3"); parameters.add(parameter); testActivitiAddEmrStepSuccess(AddEmrHadoopJarStep.class.getCanonicalName(), fieldExtensionList, parameters); }
/** * This method tests the scenario where a RuntimeException occurs but not thrown by java delegate. */ @Test public void testDelegateRuntimeError() throws Exception { BpmnModel bpmnModel = getBpmnModelForXmlResource(ACTIVITI_XML_HERD_WORKFLOW); ServiceTask serviceTask = (ServiceTask) bpmnModel.getProcesses().get(0).getFlowElement("servicetask1"); serviceTask.setImplementation(MockJavaDelegate.class.getCanonicalName()); FieldExtension exceptionField = new FieldExtension(); exceptionField.setFieldName("exceptionToThrow"); exceptionField.setExpression("${exceptionToThrow}"); serviceTask.getFieldExtensions().clear(); serviceTask.getFieldExtensions().add(exceptionField); List<Parameter> parameters = new ArrayList<>(); Parameter parameter = new Parameter("exceptionToThrow", MockJavaDelegate.EXCEPTION_RUNTIME); parameters.add(parameter); executeWithoutLogging(Arrays.asList(ActivitiRuntimeHelper.class, BaseJavaDelegate.class), () -> { jobServiceTestHelper.createJobFromActivitiXml(getActivitiXmlFromBpmnModel(bpmnModel), parameters); }); }
FieldExtension fieldExtension = new FieldExtension(); fieldExtension.setFieldName("emrStepId"); fieldExtension.setExpression("${addHiveStepServiceTask_emrStepId}"); fieldExtensions.add(fieldExtension);
fieldExtension.setExpression("${addHiveStepServiceTask_emrStepId}"); fieldExtensions.add(fieldExtension);
fieldExtension.setExpression("${addHiveStepServiceTask_emrStepId}"); fieldExtensions.add(fieldExtension);
@Test public void testCheckClusterByClusterIdStepIdNoActiveStep() throws Exception { List<FieldExtension> fieldExtensions = getOptionalFieldExtensions(); FieldExtension fieldExtension = new FieldExtension(); fieldExtension.setFieldName("emrStepId"); fieldExtension.setExpression("${addHiveStepServiceTask_emrStepId}"); fieldExtensions.add(fieldExtension); // Run a job with Activiti XML that will start cluster, check status and terminate. Job job = jobServiceTestHelper.createJobForCreateClusterForActivitiXml(getCheckClusterActivitiXml(fieldExtensions), getParameters(false, "false", "false")); assertNotNull(job); HistoricProcessInstance hisInstance = activitiHistoryService.createHistoricProcessInstanceQuery().processInstanceId(job.getId()).includeProcessVariables().singleResult(); Map<String, Object> variables = hisInstance.getProcessVariables(); String hiveStepId = (String) variables.get("addHiveStepServiceTask" + ActivitiRuntimeHelper.TASK_VARIABLE_MARKER + "emrStepId"); assertNotNull(hiveStepId); String emrStepId = (String) variables.get("checkClusterServiceTask" + ActivitiRuntimeHelper.TASK_VARIABLE_MARKER + "step_id"); assertEquals(hiveStepId, emrStepId); String emrStepJarLocation = (String) variables.get("checkClusterServiceTask" + ActivitiRuntimeHelper.TASK_VARIABLE_MARKER + "step_jarLocation"); assertNull(emrStepJarLocation); String activeStepId = (String) variables.get("checkClusterServiceTask" + ActivitiRuntimeHelper.TASK_VARIABLE_MARKER + "activeStep_id"); assertNull(activeStepId); }
/** * This method tests the scenario when an error that is not workflow related is throws while workflow is executing an Async type task like Timer. This error * is logged as ERROR. */ @Test(expected = ActivitiException.class) public void testActivitiReportableError() throws Exception { BpmnModel bpmnModel = getBpmnModelForXmlResource(ACTIVITI_XML_HERD_TIMER_WITH_CLASSPATH); ServiceTask serviceTask = (ServiceTask) bpmnModel.getProcesses().get(0).getFlowElement("servicetask1"); FieldExtension exceptionField = new FieldExtension(); exceptionField.setFieldName("exceptionToThrow"); exceptionField.setExpression("${exceptionToThrow}"); serviceTask.getFieldExtensions().add(exceptionField); jobDefinitionServiceTestHelper.createJobDefinitionForActivitiXml(getActivitiXmlFromBpmnModel(bpmnModel)); List<Parameter> parameters = new ArrayList<>(); Parameter parameter = new Parameter("exceptionToThrow", MockJavaDelegate.EXCEPTION_BPMN_ERROR); parameters.add(parameter); Job job = jobService.createAndStartJob(jobServiceTestHelper.createJobCreateRequest(TEST_ACTIVITI_NAMESPACE_CD, TEST_ACTIVITI_JOB_NAME, parameters)); org.activiti.engine.runtime.Job timer = activitiManagementService.createJobQuery().processInstanceId(job.getId()).timers().singleResult(); if (timer != null) { executeWithoutLogging(Arrays.asList(ActivitiRuntimeHelper.class, TimerExecuteNestedActivityJobHandler.class), () -> { activitiManagementService.executeJob(timer.getId()); }); } }
@Test public void testCheckClusterByRetrieveInstanceFleets() throws Exception { // Run a job with Activiti XML that will start cluster, check status and terminate. List<FieldExtension> fieldExtensions = getOptionalFieldExtensions(); FieldExtension fieldExtension = new FieldExtension(); fieldExtension.setFieldName("emrStepId"); fieldExtension.setExpression("${addHiveStepServiceTask_emrStepId}"); fieldExtensions.add(fieldExtension); Job job = jobServiceTestHelper.createJobForCreateClusterForActivitiXml(getCheckClusterActivitiXml(fieldExtensions), getParameters(true, "true", "true")); assertNotNull(job); HistoricProcessInstance hisInstance = activitiHistoryService.createHistoricProcessInstanceQuery().processInstanceId(job.getId()).includeProcessVariables().singleResult(); Map<String, Object> variables = hisInstance.getProcessVariables(); String emrClusterInstanceFleetJson = (String) variables.get("checkClusterServiceTask" + ActivitiRuntimeHelper.TASK_VARIABLE_MARKER + "instance_fleets"); assertNotNull(emrClusterInstanceFleetJson); }