public InType addCallActivityInType(final CallActivity callActivity) { final InType inType = modelFactory.createInType(); inType.setSource("ASD"); transactionalExecute( new RecordingCommand(editingDomain) { @Override protected void doExecute() { ExtensionUtil.addExtension(callActivity, IN_FEATURE, inType); } }); return inType; }
@Test @DiagramResource( "org/camunda/bpm/modeler/test/core/utils/ExtensionUtilTest.testAddAndRemoveExtensions.bpmn") public void testAddAndRemoveExtensions() { final CallActivity callActivity = findBusinessObjectById(diagram, "callActivity", CallActivity.class); List<ExtensionAttributeValue> extensionAttributeValues = ExtensionUtil.getExtensionAttributeValues(callActivity); assertThat(extensionAttributeValues).hasSize(0); // add <camunda:in source="test" target="test"/> final InType sourceInType = modelFactory.createInType(); sourceInType.setSource("test"); sourceInType.setTarget("test"); addCallActivityExtension(callActivity, CALL_ACTIVITY_IN_TYPE, sourceInType); Object value = ExtensionUtil.getExtension(callActivity, CALL_ACTIVITY_IN_TYPE, "source"); assertThat(value).isEqualTo("test"); // add <camunda:out source="test" target="test"/> final OutType sourceOutType = modelFactory.createOutType(); sourceOutType.setSource("test"); sourceOutType.setTarget("test"); addCallActivityExtension(callActivity, CALL_ACTIVITY_OUT_TYPE, sourceOutType); value = ExtensionUtil.getExtension(callActivity, CALL_ACTIVITY_OUT_TYPE, "source"); assertThat(value).isEqualTo("test"); // add <camunda:in variables="all"/> final InType variablesInType = modelFactory.createInType(); variablesInType.setVariables(ALL_VARIABLES_VALUE); addCallActivityExtension(callActivity, CALL_ACTIVITY_IN_TYPE, variablesInType); value = ExtensionUtil.getExtension(callActivity, CALL_ACTIVITY_IN_TYPE, "variables"); assertThat(value).isEqualTo(ALL_VARIABLES_VALUE); // add <camunda:out variables="all"/> final OutType variablesOutType = modelFactory.createOutType(); variablesOutType.setVariables(ALL_VARIABLES_VALUE); addCallActivityExtension(callActivity, CALL_ACTIVITY_OUT_TYPE, variablesOutType); value = ExtensionUtil.getExtension(callActivity, CALL_ACTIVITY_OUT_TYPE, "variables"); assertThat(value).isEqualTo(ALL_VARIABLES_VALUE); // check number of extensions List<InType> inExtensions = ExtensionUtil.getExtensions(callActivity, InType.class); assertThat(inExtensions).hasSize(2); List<OutType> outExtensions = ExtensionUtil.getExtensions(callActivity, OutType.class); assertThat(outExtensions).hasSize(2); // remove outType variables extension transactionalExecute( new RecordingCommand(editingDomain) { @Override protected void doExecute() { ExtensionUtil.removeExtensionByValue( callActivity, CALL_ACTIVITY_OUT_TYPE, OUT_TYPE_VARIABLES, ALL_VARIABLES_VALUE); } }); inExtensions = ExtensionUtil.getExtensions(callActivity, InType.class); assertThat(inExtensions).hasSize(2); outExtensions = ExtensionUtil.getExtensions(callActivity, OutType.class); assertThat(outExtensions).hasSize(1); extensionAttributeValues = ExtensionUtil.getExtensionAttributeValues(callActivity); assertThat(extensionAttributeValues).hasSize(1); }
@Test @DiagramResource( "org/camunda/bpm/modeler/test/core/utils/ExtensionUtilTest.testAddAndRemoveExtensions.bpmn") public void testAddAndRemoveExtensionsToInType() { final CallActivity callActivity = findBusinessObjectById(diagram, "callActivity", CallActivity.class); List<ExtensionAttributeValue> extensionAttributeValues = ExtensionUtil.getExtensionAttributeValues(callActivity); assertThat(extensionAttributeValues).hasSize(0); // add <camunda:in source="test" target="test"/> final InType sourceInType = modelFactory.createInType(); sourceInType.setSource("test"); sourceInType.setTarget("test"); addCallActivityExtension(callActivity, CALL_ACTIVITY_IN_TYPE, sourceInType); Object value = ExtensionUtil.getExtension(callActivity, CALL_ACTIVITY_IN_TYPE, "source"); assertThat(value).isEqualTo("test"); // add <camunda:in source="test2" target="test2"/> final InType source2InType = modelFactory.createInType(); source2InType.setSource("test2"); source2InType.setTarget("test2"); addCallActivityExtension(callActivity, CALL_ACTIVITY_IN_TYPE, source2InType); // add <camunda:in businessKey="#{execution.processBusinessKey}"/> final InType businessKeyInType = modelFactory.createInType(); businessKeyInType.setBusinessKey(BUSINESS_KEY_EXPRESSION); addCallActivityExtension(callActivity, CALL_ACTIVITY_IN_TYPE, businessKeyInType); value = ExtensionUtil.getExtension(callActivity, CALL_ACTIVITY_IN_TYPE, "businessKey"); assertThat(value).isEqualTo(BUSINESS_KEY_EXPRESSION); // add <camunda:in variables="all"/> final InType variablesInType = modelFactory.createInType(); variablesInType.setVariables(ALL_VARIABLES_VALUE); addCallActivityExtension(callActivity, CALL_ACTIVITY_IN_TYPE, variablesInType); value = ExtensionUtil.getExtension(callActivity, CALL_ACTIVITY_IN_TYPE, "variables"); assertThat(value).isEqualTo(ALL_VARIABLES_VALUE); List<InType> extensions = ExtensionUtil.getExtensions(callActivity, InType.class); assertThat(extensions).hasSize(4); // remove inType businessKey extension transactionalExecute( new RecordingCommand(editingDomain) { @Override protected void doExecute() { ExtensionUtil.removeExtensionByValue( callActivity, CALL_ACTIVITY_IN_TYPE, IN_TYPE_BUSINESS_KEY, BUSINESS_KEY_EXPRESSION); } }); extensions = ExtensionUtil.getExtensions(callActivity, InType.class); assertThat(extensions).hasSize(3); value = ExtensionUtil.getExtension(callActivity, CALL_ACTIVITY_IN_TYPE, "businessKey"); assertThat(value).isNull(); extensionAttributeValues = ExtensionUtil.getExtensionAttributeValues(callActivity); assertThat(extensionAttributeValues).hasSize(1); }