/* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.camunda.bpm.model.bpmn; import static org.assertj.core.api.Assertions.assertThat; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.BUSINESS_RULE_TASK; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.CALL_ACTIVITY_ID; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.END_EVENT_ID; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.PROCESS_ID; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.SCRIPT_TASK_ID; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.SEND_TASK_ID; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.SEQUENCE_FLOW_ID; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.SERVICE_TASK_ID; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.START_EVENT_ID; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_CLASS_API; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_CLASS_XML; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_DELEGATE_EXPRESSION_API; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_DELEGATE_EXPRESSION_XML; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_DUE_DATE_API; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_DUE_DATE_XML; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_EXECUTION_EVENT_API; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_EXECUTION_EVENT_XML; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_EXPRESSION_API; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_EXPRESSION_XML; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_FLOW_NODE_JOB_PRIORITY; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_GROUPS_API; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_GROUPS_LIST_API; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_GROUPS_LIST_XML; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_GROUPS_XML; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_HISTORY_TIME_TO_LIVE; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_PRIORITY_API; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_PRIORITY_XML; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_PROCESS_JOB_PRIORITY; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_PROCESS_TASK_PRIORITY; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_SERVICE_TASK_PRIORITY; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_STRING_API; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_STRING_XML; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_TASK_EVENT_API; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_TASK_EVENT_XML; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_TYPE_API; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_TYPE_XML; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_USERS_API; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_USERS_LIST_API; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_USERS_LIST_XML; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.TEST_USERS_XML; import static org.camunda.bpm.model.bpmn.BpmnTestConstants.USER_TASK_ID; import static org.camunda.bpm.model.bpmn.impl.BpmnModelConstants.ACTIVITI_NS; import static org.camunda.bpm.model.bpmn.impl.BpmnModelConstants.CAMUNDA_ATTRIBUTE_ERROR_CODE_VARIABLE; import static org.camunda.bpm.model.bpmn.impl.BpmnModelConstants.CAMUNDA_ATTRIBUTE_ERROR_MESSAGE_VARIABLE; import static org.camunda.bpm.model.bpmn.impl.BpmnModelConstants.CAMUNDA_NS; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.camunda.bpm.model.bpmn.instance.BaseElement; import org.camunda.bpm.model.bpmn.instance.BpmnModelElementInstance; import org.camunda.bpm.model.bpmn.instance.BusinessRuleTask; import org.camunda.bpm.model.bpmn.instance.CallActivity; import org.camunda.bpm.model.bpmn.instance.EndEvent; import org.camunda.bpm.model.bpmn.instance.ErrorEventDefinition; import org.camunda.bpm.model.bpmn.instance.Expression; import org.camunda.bpm.model.bpmn.instance.MessageEventDefinition; import org.camunda.bpm.model.bpmn.instance.ParallelGateway; import org.camunda.bpm.model.bpmn.instance.Process; import org.camunda.bpm.model.bpmn.instance.ScriptTask; import org.camunda.bpm.model.bpmn.instance.SendTask; import org.camunda.bpm.model.bpmn.instance.SequenceFlow; import org.camunda.bpm.model.bpmn.instance.ServiceTask; import org.camunda.bpm.model.bpmn.instance.StartEvent; import org.camunda.bpm.model.bpmn.instance.UserTask; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaConnector; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaConnectorId; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaConstraint; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaEntry; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaExecutionListener; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaFailedJobRetryTimeCycle; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaField; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaFormData; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaFormField; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaFormProperty; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaIn; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaInputOutput; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaInputParameter; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaList; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaMap; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaOut; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaOutputParameter; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaPotentialStarter; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaProperties; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaProperty; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaScript; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaTaskListener; import org.camunda.bpm.model.bpmn.instance.camunda.CamundaValue; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; /** * @author Sebastian Menski * @author Ronny Bräunlich */ @RunWith(Parameterized.class) public class CamundaExtensionsTest { private Process process; private StartEvent startEvent; private SequenceFlow sequenceFlow; private UserTask userTask; private ServiceTask serviceTask; private SendTask sendTask; private ScriptTask scriptTask; private CallActivity callActivity; private BusinessRuleTask businessRuleTask; private EndEvent endEvent; private MessageEventDefinition messageEventDefinition; private ParallelGateway parallelGateway; private String namespace; private BpmnModelInstance originalModelInstance; private BpmnModelInstance modelInstance; @Parameters(name="Namespace: {0}") public static Collection<Object[]> parameters(){ return Arrays.asList(new Object[][]{ {CAMUNDA_NS, Bpmn.readModelFromStream(CamundaExtensionsTest.class.getResourceAsStream("CamundaExtensionsTest.xml"))}, //for compatability reasons we gotta check the old namespace, too {ACTIVITI_NS, Bpmn.readModelFromStream(CamundaExtensionsTest.class.getResourceAsStream("CamundaExtensionsCompatabilityTest.xml"))} }); } public CamundaExtensionsTest(String namespace, BpmnModelInstance modelInstance) { this.namespace = namespace; this.originalModelInstance = modelInstance; } @Before public void setUp(){ modelInstance = originalModelInstance.clone(); process = modelInstance.getModelElementById(PROCESS_ID); startEvent = modelInstance.getModelElementById(START_EVENT_ID); sequenceFlow = modelInstance.getModelElementById(SEQUENCE_FLOW_ID); userTask = modelInstance.getModelElementById(USER_TASK_ID); serviceTask = modelInstance.getModelElementById(SERVICE_TASK_ID); sendTask = modelInstance.getModelElementById(SEND_TASK_ID); scriptTask = modelInstance.getModelElementById(SCRIPT_TASK_ID); callActivity = modelInstance.getModelElementById(CALL_ACTIVITY_ID); businessRuleTask = modelInstance.getModelElementById(BUSINESS_RULE_TASK); endEvent = modelInstance.getModelElementById(END_EVENT_ID); messageEventDefinition = (MessageEventDefinition) endEvent.getEventDefinitions().iterator().next(); parallelGateway = modelInstance.getModelElementById("parallelGateway"); } @Test public void testAssignee() { assertThat(userTask.getCamundaAssignee()).isEqualTo(TEST_STRING_XML); userTask.setCamundaAssignee(TEST_STRING_API); assertThat(userTask.getCamundaAssignee()).isEqualTo(TEST_STRING_API); } @Test public void testAsync() { assertThat(startEvent.isCamundaAsync()).isFalse(); assertThat(userTask.isCamundaAsync()).isTrue(); assertThat(parallelGateway.isCamundaAsync()).isTrue(); startEvent.setCamundaAsync(true); userTask.setCamundaAsync(false); parallelGateway.setCamundaAsync(false); assertThat(startEvent.isCamundaAsync()).isTrue(); assertThat(userTask.isCamundaAsync()).isFalse(); assertThat(parallelGateway.isCamundaAsync()).isFalse(); } @Test public void testAsyncBefore() { assertThat(startEvent.isCamundaAsyncBefore()).isTrue(); assertThat(endEvent.isCamundaAsyncBefore()).isTrue(); assertThat(userTask.isCamundaAsyncBefore()).isTrue(); assertThat(parallelGateway.isCamundaAsyncBefore()).isTrue(); startEvent.setCamundaAsyncBefore(false); endEvent.setCamundaAsyncBefore(false); userTask.setCamundaAsyncBefore(false); parallelGateway.setCamundaAsyncBefore(false); assertThat(startEvent.isCamundaAsyncBefore()).isFalse(); assertThat(endEvent.isCamundaAsyncBefore()).isFalse(); assertThat(userTask.isCamundaAsyncBefore()).isFalse(); assertThat(parallelGateway.isCamundaAsyncBefore()).isFalse(); } @Test public void testAsyncAfter() { assertThat(startEvent.isCamundaAsyncAfter()).isTrue(); assertThat(endEvent.isCamundaAsyncAfter()).isTrue(); assertThat(userTask.isCamundaAsyncAfter()).isTrue(); assertThat(parallelGateway.isCamundaAsyncAfter()).isTrue(); startEvent.setCamundaAsyncAfter(false); endEvent.setCamundaAsyncAfter(false); userTask.setCamundaAsyncAfter(false); parallelGateway.setCamundaAsyncAfter(false); assertThat(startEvent.isCamundaAsyncAfter()).isFalse(); assertThat(endEvent.isCamundaAsyncAfter()).isFalse(); assertThat(userTask.isCamundaAsyncAfter()).isFalse(); assertThat(parallelGateway.isCamundaAsyncAfter()).isFalse(); } @Test public void testFlowNodeJobPriority() { assertThat(startEvent.getCamundaJobPriority()).isEqualTo(TEST_FLOW_NODE_JOB_PRIORITY); assertThat(endEvent.getCamundaJobPriority()).isEqualTo(TEST_FLOW_NODE_JOB_PRIORITY); assertThat(userTask.getCamundaJobPriority()).isEqualTo(TEST_FLOW_NODE_JOB_PRIORITY); assertThat(parallelGateway.getCamundaJobPriority()).isEqualTo(TEST_FLOW_NODE_JOB_PRIORITY); } @Test public void testProcessJobPriority() { assertThat(process.getCamundaJobPriority()).isEqualTo(TEST_PROCESS_JOB_PRIORITY); } @Test public void testProcessTaskPriority() { assertThat(process.getCamundaTaskPriority()).isEqualTo(TEST_PROCESS_TASK_PRIORITY); } @Test public void testHistoryTimeToLive() { assertThat(process.getCamundaHistoryTimeToLive()).isEqualTo(TEST_HISTORY_TIME_TO_LIVE); } @Test public void testServiceTaskPriority() { assertThat(serviceTask.getCamundaTaskPriority()).isEqualTo(TEST_SERVICE_TASK_PRIORITY); } @Test public void testCalledElementBinding() { assertThat(callActivity.getCamundaCalledElementBinding()).isEqualTo(TEST_STRING_XML); callActivity.setCamundaCalledElementBinding(TEST_STRING_API); assertThat(callActivity.getCamundaCalledElementBinding()).isEqualTo(TEST_STRING_API); } @Test public void testCalledElementVersion() { assertThat(callActivity.getCamundaCalledElementVersion()).isEqualTo(TEST_STRING_XML); callActivity.setCamundaCalledElementVersion(TEST_STRING_API); assertThat(callActivity.getCamundaCalledElementVersion()).isEqualTo(TEST_STRING_API); } @Test public void testCalledElementTenantId() { assertThat(callActivity.getCamundaCalledElementTenantId()).isEqualTo(TEST_STRING_XML); callActivity.setCamundaCalledElementTenantId(TEST_STRING_API); assertThat(callActivity.getCamundaCalledElementTenantId()).isEqualTo(TEST_STRING_API); } @Test public void testCaseRef() { assertThat(callActivity.getCamundaCaseRef()).isEqualTo(TEST_STRING_XML); callActivity.setCamundaCaseRef(TEST_STRING_API); assertThat(callActivity.getCamundaCaseRef()).isEqualTo(TEST_STRING_API); } @Test public void testCaseBinding() { assertThat(callActivity.getCamundaCaseBinding()).isEqualTo(TEST_STRING_XML); callActivity.setCamundaCaseBinding(TEST_STRING_API); assertThat(callActivity.getCamundaCaseBinding()).isEqualTo(TEST_STRING_API); } @Test public void testCaseVersion() { assertThat(callActivity.getCamundaCaseVersion()).isEqualTo(TEST_STRING_XML); callActivity.setCamundaCaseVersion(TEST_STRING_API); assertThat(callActivity.getCamundaCaseVersion()).isEqualTo(TEST_STRING_API); } @Test public void testCaseTenantId() { assertThat(callActivity.getCamundaCaseTenantId()).isEqualTo(TEST_STRING_XML); callActivity.setCamundaCaseTenantId(TEST_STRING_API); assertThat(callActivity.getCamundaCaseTenantId()).isEqualTo(TEST_STRING_API); } @Test public void testDecisionRef() { assertThat(businessRuleTask.getCamundaDecisionRef()).isEqualTo(TEST_STRING_XML); businessRuleTask.setCamundaDecisionRef(TEST_STRING_API); assertThat(businessRuleTask.getCamundaDecisionRef()).isEqualTo(TEST_STRING_API); } @Test public void testDecisionRefBinding() { assertThat(businessRuleTask.getCamundaDecisionRefBinding()).isEqualTo(TEST_STRING_XML); businessRuleTask.setCamundaDecisionRefBinding(TEST_STRING_API); assertThat(businessRuleTask.getCamundaDecisionRefBinding()).isEqualTo(TEST_STRING_API); } @Test public void testDecisionRefVersion() { assertThat(businessRuleTask.getCamundaDecisionRefVersion()).isEqualTo(TEST_STRING_XML); businessRuleTask.setCamundaDecisionRefVersion(TEST_STRING_API); assertThat(businessRuleTask.getCamundaDecisionRefVersion()).isEqualTo(TEST_STRING_API); } @Test public void testDecisionRefTenantId() { assertThat(businessRuleTask.getCamundaDecisionRefTenantId()).isEqualTo(TEST_STRING_XML); businessRuleTask.setCamundaDecisionRefTenantId(TEST_STRING_API); assertThat(businessRuleTask.getCamundaDecisionRefTenantId()).isEqualTo(TEST_STRING_API); } @Test public void testMapDecisionResult() { assertThat(businessRuleTask.getCamundaMapDecisionResult()).isEqualTo(TEST_STRING_XML); businessRuleTask.setCamundaMapDecisionResult(TEST_STRING_API); assertThat(businessRuleTask.getCamundaMapDecisionResult()).isEqualTo(TEST_STRING_API); } @Test public void testTaskPriority() { assertThat(businessRuleTask.getCamundaTaskPriority()).isEqualTo(TEST_STRING_XML); businessRuleTask.setCamundaTaskPriority(TEST_SERVICE_TASK_PRIORITY); assertThat(businessRuleTask.getCamundaTaskPriority()).isEqualTo(TEST_SERVICE_TASK_PRIORITY); } @Test public void testCandidateGroups() { assertThat(userTask.getCamundaCandidateGroups()).isEqualTo(TEST_GROUPS_XML); assertThat(userTask.getCamundaCandidateGroupsList()).containsAll(TEST_GROUPS_LIST_XML); userTask.setCamundaCandidateGroups(TEST_GROUPS_API); assertThat(userTask.getCamundaCandidateGroups()).isEqualTo(TEST_GROUPS_API); assertThat(userTask.getCamundaCandidateGroupsList()).containsAll(TEST_GROUPS_LIST_API); userTask.setCamundaCandidateGroupsList(TEST_GROUPS_LIST_XML); assertThat(userTask.getCamundaCandidateGroups()).isEqualTo(TEST_GROUPS_XML); assertThat(userTask.getCamundaCandidateGroupsList()).containsAll(TEST_GROUPS_LIST_XML); } @Test public void testCandidateStarterGroups() { assertThat(process.getCamundaCandidateStarterGroups()).isEqualTo(TEST_GROUPS_XML); assertThat(process.getCamundaCandidateStarterGroupsList()).containsAll(TEST_GROUPS_LIST_XML); process.setCamundaCandidateStarterGroups(TEST_GROUPS_API); assertThat(process.getCamundaCandidateStarterGroups()).isEqualTo(TEST_GROUPS_API); assertThat(process.getCamundaCandidateStarterGroupsList()).containsAll(TEST_GROUPS_LIST_API); process.setCamundaCandidateStarterGroupsList(TEST_GROUPS_LIST_XML); assertThat(process.getCamundaCandidateStarterGroups()).isEqualTo(TEST_GROUPS_XML); assertThat(process.getCamundaCandidateStarterGroupsList()).containsAll(TEST_GROUPS_LIST_XML); } @Test public void testCandidateStarterUsers() { assertThat(process.getCamundaCandidateStarterUsers()).isEqualTo(TEST_USERS_XML); assertThat(process.getCamundaCandidateStarterUsersList()).containsAll(TEST_USERS_LIST_XML); process.setCamundaCandidateStarterUsers(TEST_USERS_API); assertThat(process.getCamundaCandidateStarterUsers()).isEqualTo(TEST_USERS_API); assertThat(process.getCamundaCandidateStarterUsersList()).containsAll(TEST_USERS_LIST_API); process.setCamundaCandidateStarterUsersList(TEST_USERS_LIST_XML); assertThat(process.getCamundaCandidateStarterUsers()).isEqualTo(TEST_USERS_XML); assertThat(process.getCamundaCandidateStarterUsersList()).containsAll(TEST_USERS_LIST_XML); } @Test public void testCandidateUsers() { assertThat(userTask.getCamundaCandidateUsers()).isEqualTo(TEST_USERS_XML); assertThat(userTask.getCamundaCandidateUsersList()).containsAll(TEST_USERS_LIST_XML); userTask.setCamundaCandidateUsers(TEST_USERS_API); assertThat(userTask.getCamundaCandidateUsers()).isEqualTo(TEST_USERS_API); assertThat(userTask.getCamundaCandidateUsersList()).containsAll(TEST_USERS_LIST_API); userTask.setCamundaCandidateUsersList(TEST_USERS_LIST_XML); assertThat(userTask.getCamundaCandidateUsers()).isEqualTo(TEST_USERS_XML); assertThat(userTask.getCamundaCandidateUsersList()).containsAll(TEST_USERS_LIST_XML); } @Test public void testClass() { assertThat(serviceTask.getCamundaClass()).isEqualTo(TEST_CLASS_XML); assertThat(messageEventDefinition.getCamundaClass()).isEqualTo(TEST_CLASS_XML); serviceTask.setCamundaClass(TEST_CLASS_API); messageEventDefinition.setCamundaClass(TEST_CLASS_API); assertThat(serviceTask.getCamundaClass()).isEqualTo(TEST_CLASS_API); assertThat(messageEventDefinition.getCamundaClass()).isEqualTo(TEST_CLASS_API); } @Test public void testDelegateExpression() { assertThat(serviceTask.getCamundaDelegateExpression()).isEqualTo(TEST_DELEGATE_EXPRESSION_XML); assertThat(messageEventDefinition.getCamundaDelegateExpression()).isEqualTo(TEST_DELEGATE_EXPRESSION_XML); serviceTask.setCamundaDelegateExpression(TEST_DELEGATE_EXPRESSION_API); messageEventDefinition.setCamundaDelegateExpression(TEST_DELEGATE_EXPRESSION_API); assertThat(serviceTask.getCamundaDelegateExpression()).isEqualTo(TEST_DELEGATE_EXPRESSION_API); assertThat(messageEventDefinition.getCamundaDelegateExpression()).isEqualTo(TEST_DELEGATE_EXPRESSION_API); } @Test public void testDueDate() { assertThat(userTask.getCamundaDueDate()).isEqualTo(TEST_DUE_DATE_XML); userTask.setCamundaDueDate(TEST_DUE_DATE_API); assertThat(userTask.getCamundaDueDate()).isEqualTo(TEST_DUE_DATE_API); } @Test public void testErrorCodeVariable(){ ErrorEventDefinition errorEventDefinition = startEvent.getChildElementsByType(ErrorEventDefinition.class).iterator().next(); assertThat(errorEventDefinition.getAttributeValueNs(namespace, CAMUNDA_ATTRIBUTE_ERROR_CODE_VARIABLE)).isEqualTo("errorVariable"); } @Test public void testErrorMessageVariable(){ ErrorEventDefinition errorEventDefinition = startEvent.getChildElementsByType(ErrorEventDefinition.class).iterator().next(); assertThat(errorEventDefinition.getAttributeValueNs(namespace, CAMUNDA_ATTRIBUTE_ERROR_MESSAGE_VARIABLE)).isEqualTo("errorMessageVariable"); } @Test public void testExclusive() { assertThat(startEvent.isCamundaExclusive()).isTrue(); assertThat(userTask.isCamundaExclusive()).isFalse(); userTask.setCamundaExclusive(true); assertThat(userTask.isCamundaExclusive()).isTrue(); assertThat(parallelGateway.isCamundaExclusive()).isTrue(); parallelGateway.setCamundaExclusive(false); assertThat(parallelGateway.isCamundaExclusive()).isFalse(); assertThat(callActivity.isCamundaExclusive()).isFalse(); callActivity.setCamundaExclusive(true); assertThat(callActivity.isCamundaExclusive()).isTrue(); } @Test public void testExpression() { assertThat(serviceTask.getCamundaExpression()).isEqualTo(TEST_EXPRESSION_XML); assertThat(messageEventDefinition.getCamundaExpression()).isEqualTo(TEST_EXPRESSION_XML); serviceTask.setCamundaExpression(TEST_EXPRESSION_API); messageEventDefinition.setCamundaExpression(TEST_EXPRESSION_API); assertThat(serviceTask.getCamundaExpression()).isEqualTo(TEST_EXPRESSION_API); assertThat(messageEventDefinition.getCamundaExpression()).isEqualTo(TEST_EXPRESSION_API); } @Test public void testFormHandlerClass() { assertThat(startEvent.getCamundaFormHandlerClass()).isEqualTo(TEST_CLASS_XML); assertThat(userTask.getCamundaFormHandlerClass()).isEqualTo(TEST_CLASS_XML); startEvent.setCamundaFormHandlerClass(TEST_CLASS_API); userTask.setCamundaFormHandlerClass(TEST_CLASS_API); assertThat(startEvent.getCamundaFormHandlerClass()).isEqualTo(TEST_CLASS_API); assertThat(userTask.getCamundaFormHandlerClass()).isEqualTo(TEST_CLASS_API); } @Test public void testFormKey() { assertThat(startEvent.getCamundaFormKey()).isEqualTo(TEST_STRING_XML); assertThat(userTask.getCamundaFormKey()).isEqualTo(TEST_STRING_XML); startEvent.setCamundaFormKey(TEST_STRING_API); userTask.setCamundaFormKey(TEST_STRING_API); assertThat(startEvent.getCamundaFormKey()).isEqualTo(TEST_STRING_API); assertThat(userTask.getCamundaFormKey()).isEqualTo(TEST_STRING_API); } @Test public void testInitiator() { assertThat(startEvent.getCamundaInitiator()).isEqualTo(TEST_STRING_XML); startEvent.setCamundaInitiator(TEST_STRING_API); assertThat(startEvent.getCamundaInitiator()).isEqualTo(TEST_STRING_API); } @Test public void testPriority() { assertThat(userTask.getCamundaPriority()).isEqualTo(TEST_PRIORITY_XML); userTask.setCamundaPriority(TEST_PRIORITY_API); assertThat(userTask.getCamundaPriority()).isEqualTo(TEST_PRIORITY_API); } @Test public void testResultVariable() { assertThat(serviceTask.getCamundaResultVariable()).isEqualTo(TEST_STRING_XML); assertThat(messageEventDefinition.getCamundaResultVariable()).isEqualTo(TEST_STRING_XML); serviceTask.setCamundaResultVariable(TEST_STRING_API); messageEventDefinition.setCamundaResultVariable(TEST_STRING_API); assertThat(serviceTask.getCamundaResultVariable()).isEqualTo(TEST_STRING_API); assertThat(messageEventDefinition.getCamundaResultVariable()).isEqualTo(TEST_STRING_API); } @Test public void testType() { assertThat(serviceTask.getCamundaType()).isEqualTo(TEST_TYPE_XML); assertThat(messageEventDefinition.getCamundaType()).isEqualTo(TEST_STRING_XML); serviceTask.setCamundaType(TEST_TYPE_API); messageEventDefinition.setCamundaType(TEST_STRING_API); assertThat(serviceTask.getCamundaType()).isEqualTo(TEST_TYPE_API); assertThat(messageEventDefinition.getCamundaType()).isEqualTo(TEST_STRING_API); } @Test public void testTopic() { assertThat(serviceTask.getCamundaTopic()).isEqualTo(TEST_STRING_XML); assertThat(messageEventDefinition.getCamundaTopic()).isEqualTo(TEST_STRING_XML); serviceTask.setCamundaTopic(TEST_TYPE_API); messageEventDefinition.setCamundaTopic(TEST_STRING_API); assertThat(serviceTask.getCamundaTopic()).isEqualTo(TEST_TYPE_API); assertThat(messageEventDefinition.getCamundaTopic()).isEqualTo(TEST_STRING_API); } @Test public void testVariableMappingClass() { assertThat(callActivity.getCamundaVariableMappingClass()).isEqualTo(TEST_CLASS_XML); callActivity.setCamundaVariableMappingClass(TEST_CLASS_API); assertThat(callActivity.getCamundaVariableMappingClass()).isEqualTo(TEST_CLASS_API); } @Test public void testVariableMappingDelegateExpression() { assertThat(callActivity.getCamundaVariableMappingDelegateExpression()).isEqualTo(TEST_DELEGATE_EXPRESSION_XML); callActivity.setCamundaVariableMappingDelegateExpression(TEST_DELEGATE_EXPRESSION_API); assertThat(callActivity.getCamundaVariableMappingDelegateExpression()).isEqualTo(TEST_DELEGATE_EXPRESSION_API); } @Test public void testExecutionListenerExtension() { CamundaExecutionListener processListener = process.getExtensionElements().getElementsQuery().filterByType(CamundaExecutionListener.class).singleResult(); CamundaExecutionListener startEventListener = startEvent.getExtensionElements().getElementsQuery().filterByType(CamundaExecutionListener.class).singleResult(); CamundaExecutionListener serviceTaskListener = serviceTask.getExtensionElements().getElementsQuery().filterByType(CamundaExecutionListener.class).singleResult(); assertThat(processListener.getCamundaClass()).isEqualTo(TEST_CLASS_XML); assertThat(processListener.getCamundaEvent()).isEqualTo(TEST_EXECUTION_EVENT_XML); assertThat(startEventListener.getCamundaExpression()).isEqualTo(TEST_EXPRESSION_XML); assertThat(startEventListener.getCamundaEvent()).isEqualTo(TEST_EXECUTION_EVENT_XML); assertThat(serviceTaskListener.getCamundaDelegateExpression()).isEqualTo(TEST_DELEGATE_EXPRESSION_XML); assertThat(serviceTaskListener.getCamundaEvent()).isEqualTo(TEST_EXECUTION_EVENT_XML); processListener.setCamundaClass(TEST_CLASS_API); processListener.setCamundaEvent(TEST_EXECUTION_EVENT_API); startEventListener.setCamundaExpression(TEST_EXPRESSION_API); startEventListener.setCamundaEvent(TEST_EXECUTION_EVENT_API); serviceTaskListener.setCamundaDelegateExpression(TEST_DELEGATE_EXPRESSION_API); serviceTaskListener.setCamundaEvent(TEST_EXECUTION_EVENT_API); assertThat(processListener.getCamundaClass()).isEqualTo(TEST_CLASS_API); assertThat(processListener.getCamundaEvent()).isEqualTo(TEST_EXECUTION_EVENT_API); assertThat(startEventListener.getCamundaExpression()).isEqualTo(TEST_EXPRESSION_API); assertThat(startEventListener.getCamundaEvent()).isEqualTo(TEST_EXECUTION_EVENT_API); assertThat(serviceTaskListener.getCamundaDelegateExpression()).isEqualTo(TEST_DELEGATE_EXPRESSION_API); assertThat(serviceTaskListener.getCamundaEvent()).isEqualTo(TEST_EXECUTION_EVENT_API); } @Test public void testCamundaScriptExecutionListener() { CamundaExecutionListener sequenceFlowListener = sequenceFlow.getExtensionElements().getElementsQuery().filterByType(CamundaExecutionListener.class).singleResult(); CamundaScript script = sequenceFlowListener.getCamundaScript(); assertThat(script.getCamundaScriptFormat()).isEqualTo("groovy"); assertThat(script.getCamundaResource()).isNull(); assertThat(script.getTextContent()).isEqualTo("println 'Hello World'"); CamundaScript newScript = modelInstance.newInstance(CamundaScript.class); newScript.setCamundaScriptFormat("groovy"); newScript.setCamundaResource("test.groovy"); sequenceFlowListener.setCamundaScript(newScript); script = sequenceFlowListener.getCamundaScript(); assertThat(script.getCamundaScriptFormat()).isEqualTo("groovy"); assertThat(script.getCamundaResource()).isEqualTo("test.groovy"); assertThat(script.getTextContent()).isEmpty(); } @Test public void testFailedJobRetryTimeCycleExtension() { CamundaFailedJobRetryTimeCycle timeCycle = sendTask.getExtensionElements().getElementsQuery().filterByType(CamundaFailedJobRetryTimeCycle.class).singleResult(); assertThat(timeCycle.getTextContent()).isEqualTo(TEST_STRING_XML); timeCycle.setTextContent(TEST_STRING_API); assertThat(timeCycle.getTextContent()).isEqualTo(TEST_STRING_API); } @Test public void testFieldExtension() { CamundaField field = sendTask.getExtensionElements().getElementsQuery().filterByType(CamundaField.class).singleResult(); assertThat(field.getCamundaName()).isEqualTo(TEST_STRING_XML); assertThat(field.getCamundaExpression()).isEqualTo(TEST_EXPRESSION_XML); assertThat(field.getCamundaStringValue()).isEqualTo(TEST_STRING_XML); assertThat(field.getCamundaExpressionChild().getTextContent()).isEqualTo(TEST_EXPRESSION_XML); assertThat(field.getCamundaString().getTextContent()).isEqualTo(TEST_STRING_XML); field.setCamundaName(TEST_STRING_API); field.setCamundaExpression(TEST_EXPRESSION_API); field.setCamundaStringValue(TEST_STRING_API); field.getCamundaExpressionChild().setTextContent(TEST_EXPRESSION_API); field.getCamundaString().setTextContent(TEST_STRING_API); assertThat(field.getCamundaName()).isEqualTo(TEST_STRING_API); assertThat(field.getCamundaExpression()).isEqualTo(TEST_EXPRESSION_API); assertThat(field.getCamundaStringValue()).isEqualTo(TEST_STRING_API); assertThat(field.getCamundaExpressionChild().getTextContent()).isEqualTo(TEST_EXPRESSION_API); assertThat(field.getCamundaString().getTextContent()).isEqualTo(TEST_STRING_API); } @Test public void testFormData() { CamundaFormData formData = userTask.getExtensionElements().getElementsQuery().filterByType(CamundaFormData.class).singleResult(); CamundaFormField formField = formData.getCamundaFormFields().iterator().next(); assertThat(formField.getCamundaId()).isEqualTo(TEST_STRING_XML); assertThat(formField.getCamundaLabel()).isEqualTo(TEST_STRING_XML); assertThat(formField.getCamundaType()).isEqualTo(TEST_STRING_XML); assertThat(formField.getCamundaDatePattern()).isEqualTo(TEST_STRING_XML); assertThat(formField.getCamundaDefaultValue()).isEqualTo(TEST_STRING_XML); formField.setCamundaId(TEST_STRING_API); formField.setCamundaLabel(TEST_STRING_API); formField.setCamundaType(TEST_STRING_API); formField.setCamundaDatePattern(TEST_STRING_API); formField.setCamundaDefaultValue(TEST_STRING_API); assertThat(formField.getCamundaId()).isEqualTo(TEST_STRING_API); assertThat(formField.getCamundaLabel()).isEqualTo(TEST_STRING_API); assertThat(formField.getCamundaType()).isEqualTo(TEST_STRING_API); assertThat(formField.getCamundaDatePattern()).isEqualTo(TEST_STRING_API); assertThat(formField.getCamundaDefaultValue()).isEqualTo(TEST_STRING_API); CamundaProperty property = formField.getCamundaProperties().getCamundaProperties().iterator().next(); assertThat(property.getCamundaId()).isEqualTo(TEST_STRING_XML); assertThat(property.getCamundaValue()).isEqualTo(TEST_STRING_XML); property.setCamundaId(TEST_STRING_API); property.setCamundaValue(TEST_STRING_API); assertThat(property.getCamundaId()).isEqualTo(TEST_STRING_API); assertThat(property.getCamundaValue()).isEqualTo(TEST_STRING_API); CamundaConstraint constraint = formField.getCamundaValidation().getCamundaConstraints().iterator().next(); assertThat(constraint.getCamundaName()).isEqualTo(TEST_STRING_XML); assertThat(constraint.getCamundaConfig()).isEqualTo(TEST_STRING_XML); constraint.setCamundaName(TEST_STRING_API); constraint.setCamundaConfig(TEST_STRING_API); assertThat(constraint.getCamundaName()).isEqualTo(TEST_STRING_API); assertThat(constraint.getCamundaConfig()).isEqualTo(TEST_STRING_API); CamundaValue value = formField.getCamundaValues().iterator().next(); assertThat(value.getCamundaId()).isEqualTo(TEST_STRING_XML); assertThat(value.getCamundaName()).isEqualTo(TEST_STRING_XML); value.setCamundaId(TEST_STRING_API); value.setCamundaName(TEST_STRING_API); assertThat(value.getCamundaId()).isEqualTo(TEST_STRING_API); assertThat(value.getCamundaName()).isEqualTo(TEST_STRING_API); } @Test public void testFormProperty() { CamundaFormProperty formProperty = startEvent.getExtensionElements().getElementsQuery().filterByType(CamundaFormProperty.class).singleResult(); assertThat(formProperty.getCamundaId()).isEqualTo(TEST_STRING_XML); assertThat(formProperty.getCamundaName()).isEqualTo(TEST_STRING_XML); assertThat(formProperty.getCamundaType()).isEqualTo(TEST_STRING_XML); assertThat(formProperty.isCamundaRequired()).isFalse(); assertThat(formProperty.isCamundaReadable()).isTrue(); assertThat(formProperty.isCamundaWriteable()).isTrue(); assertThat(formProperty.getCamundaVariable()).isEqualTo(TEST_STRING_XML); assertThat(formProperty.getCamundaExpression()).isEqualTo(TEST_EXPRESSION_XML); assertThat(formProperty.getCamundaDatePattern()).isEqualTo(TEST_STRING_XML); assertThat(formProperty.getCamundaDefault()).isEqualTo(TEST_STRING_XML); formProperty.setCamundaId(TEST_STRING_API); formProperty.setCamundaName(TEST_STRING_API); formProperty.setCamundaType(TEST_STRING_API); formProperty.setCamundaRequired(true); formProperty.setCamundaReadable(false); formProperty.setCamundaWriteable(false); formProperty.setCamundaVariable(TEST_STRING_API); formProperty.setCamundaExpression(TEST_EXPRESSION_API); formProperty.setCamundaDatePattern(TEST_STRING_API); formProperty.setCamundaDefault(TEST_STRING_API); assertThat(formProperty.getCamundaId()).isEqualTo(TEST_STRING_API); assertThat(formProperty.getCamundaName()).isEqualTo(TEST_STRING_API); assertThat(formProperty.getCamundaType()).isEqualTo(TEST_STRING_API); assertThat(formProperty.isCamundaRequired()).isTrue(); assertThat(formProperty.isCamundaReadable()).isFalse(); assertThat(formProperty.isCamundaWriteable()).isFalse(); assertThat(formProperty.getCamundaVariable()).isEqualTo(TEST_STRING_API); assertThat(formProperty.getCamundaExpression()).isEqualTo(TEST_EXPRESSION_API); assertThat(formProperty.getCamundaDatePattern()).isEqualTo(TEST_STRING_API); assertThat(formProperty.getCamundaDefault()).isEqualTo(TEST_STRING_API); } @Test public void testInExtension() { CamundaIn in = callActivity.getExtensionElements().getElementsQuery().filterByType(CamundaIn.class).singleResult(); assertThat(in.getCamundaSource()).isEqualTo(TEST_STRING_XML); assertThat(in.getCamundaSourceExpression()).isEqualTo(TEST_EXPRESSION_XML); assertThat(in.getCamundaVariables()).isEqualTo(TEST_STRING_XML); assertThat(in.getCamundaTarget()).isEqualTo(TEST_STRING_XML); assertThat(in.getCamundaBusinessKey()).isEqualTo(TEST_EXPRESSION_XML); assertThat(in.getCamundaLocal()).isTrue(); in.setCamundaSource(TEST_STRING_API); in.setCamundaSourceExpression(TEST_EXPRESSION_API); in.setCamundaVariables(TEST_STRING_API); in.setCamundaTarget(TEST_STRING_API); in.setCamundaBusinessKey(TEST_EXPRESSION_API); in.setCamundaLocal(false); assertThat(in.getCamundaSource()).isEqualTo(TEST_STRING_API); assertThat(in.getCamundaSourceExpression()).isEqualTo(TEST_EXPRESSION_API); assertThat(in.getCamundaVariables()).isEqualTo(TEST_STRING_API); assertThat(in.getCamundaTarget()).isEqualTo(TEST_STRING_API); assertThat(in.getCamundaBusinessKey()).isEqualTo(TEST_EXPRESSION_API); assertThat(in.getCamundaLocal()).isFalse(); } @Test public void testOutExtension() { CamundaOut out = callActivity.getExtensionElements().getElementsQuery().filterByType(CamundaOut.class).singleResult(); assertThat(out.getCamundaSource()).isEqualTo(TEST_STRING_XML); assertThat(out.getCamundaSourceExpression()).isEqualTo(TEST_EXPRESSION_XML); assertThat(out.getCamundaVariables()).isEqualTo(TEST_STRING_XML); assertThat(out.getCamundaTarget()).isEqualTo(TEST_STRING_XML); assertThat(out.getCamundaLocal()).isTrue(); out.setCamundaSource(TEST_STRING_API); out.setCamundaSourceExpression(TEST_EXPRESSION_API); out.setCamundaVariables(TEST_STRING_API); out.setCamundaTarget(TEST_STRING_API); out.setCamundaLocal(false); assertThat(out.getCamundaSource()).isEqualTo(TEST_STRING_API); assertThat(out.getCamundaSourceExpression()).isEqualTo(TEST_EXPRESSION_API); assertThat(out.getCamundaVariables()).isEqualTo(TEST_STRING_API); assertThat(out.getCamundaTarget()).isEqualTo(TEST_STRING_API); assertThat(out.getCamundaLocal()).isFalse(); } @Test public void testPotentialStarter() { CamundaPotentialStarter potentialStarter = startEvent.getExtensionElements().getElementsQuery().filterByType(CamundaPotentialStarter.class).singleResult(); Expression expression = potentialStarter.getResourceAssignmentExpression().getExpression(); assertThat(expression.getTextContent()).isEqualTo(TEST_GROUPS_XML); expression.setTextContent(TEST_GROUPS_API); assertThat(expression.getTextContent()).isEqualTo(TEST_GROUPS_API); } @Test public void testTaskListener() { CamundaTaskListener taskListener = userTask.getExtensionElements().getElementsQuery().filterByType(CamundaTaskListener.class).list().get(0); assertThat(taskListener.getCamundaEvent()).isEqualTo(TEST_TASK_EVENT_XML); assertThat(taskListener.getCamundaClass()).isEqualTo(TEST_CLASS_XML); assertThat(taskListener.getCamundaExpression()).isEqualTo(TEST_EXPRESSION_XML); assertThat(taskListener.getCamundaDelegateExpression()).isEqualTo(TEST_DELEGATE_EXPRESSION_XML); taskListener.setCamundaEvent(TEST_TASK_EVENT_API); taskListener.setCamundaClass(TEST_CLASS_API); taskListener.setCamundaExpression(TEST_EXPRESSION_API); taskListener.setCamundaDelegateExpression(TEST_DELEGATE_EXPRESSION_API); assertThat(taskListener.getCamundaEvent()).isEqualTo(TEST_TASK_EVENT_API); assertThat(taskListener.getCamundaClass()).isEqualTo(TEST_CLASS_API); assertThat(taskListener.getCamundaExpression()).isEqualTo(TEST_EXPRESSION_API); assertThat(taskListener.getCamundaDelegateExpression()).isEqualTo(TEST_DELEGATE_EXPRESSION_API); CamundaField field = taskListener.getCamundaFields().iterator().next(); assertThat(field.getCamundaName()).isEqualTo(TEST_STRING_XML); assertThat(field.getCamundaString().getTextContent()).isEqualTo(TEST_STRING_XML); } @Test public void testCamundaScriptTaskListener() { CamundaTaskListener taskListener = userTask.getExtensionElements().getElementsQuery().filterByType(CamundaTaskListener.class).list().get(1); CamundaScript script = taskListener.getCamundaScript(); assertThat(script.getCamundaScriptFormat()).isEqualTo("groovy"); assertThat(script.getCamundaResource()).isEqualTo("test.groovy"); assertThat(script.getTextContent()).isEmpty(); CamundaScript newScript = modelInstance.newInstance(CamundaScript.class); newScript.setCamundaScriptFormat("groovy"); newScript.setTextContent("println 'Hello World'"); taskListener.setCamundaScript(newScript); script = taskListener.getCamundaScript(); assertThat(script.getCamundaScriptFormat()).isEqualTo("groovy"); assertThat(script.getCamundaResource()).isNull(); assertThat(script.getTextContent()).isEqualTo("println 'Hello World'"); } @Test public void testCamundaModelerProperties() { CamundaProperties camundaProperties = endEvent.getExtensionElements().getElementsQuery().filterByType(CamundaProperties.class).singleResult(); assertThat(camundaProperties).isNotNull(); assertThat(camundaProperties.getCamundaProperties()).hasSize(2); for (CamundaProperty camundaProperty : camundaProperties.getCamundaProperties()) { assertThat(camundaProperty.getCamundaId()).isNull(); assertThat(camundaProperty.getCamundaName()).startsWith("name"); assertThat(camundaProperty.getCamundaValue()).startsWith("value"); } } @Test public void testGetNonExistingCamundaCandidateUsers() { userTask.removeAttributeNs(namespace, "candidateUsers"); assertThat(userTask.getCamundaCandidateUsers()).isNull(); assertThat(userTask.getCamundaCandidateUsersList()).isEmpty(); } @Test public void testSetNullCamundaCandidateUsers() { assertThat(userTask.getCamundaCandidateUsers()).isNotEmpty(); assertThat(userTask.getCamundaCandidateUsersList()).isNotEmpty(); userTask.setCamundaCandidateUsers(null); assertThat(userTask.getCamundaCandidateUsers()).isNull(); assertThat(userTask.getCamundaCandidateUsersList()).isEmpty(); } @Test public void testEmptyCamundaCandidateUsers() { assertThat(userTask.getCamundaCandidateUsers()).isNotEmpty(); assertThat(userTask.getCamundaCandidateUsersList()).isNotEmpty(); userTask.setCamundaCandidateUsers(""); assertThat(userTask.getCamundaCandidateUsers()).isNull(); assertThat(userTask.getCamundaCandidateUsersList()).isEmpty(); } @Test public void testSetNullCamundaCandidateUsersList() { assertThat(userTask.getCamundaCandidateUsers()).isNotEmpty(); assertThat(userTask.getCamundaCandidateUsersList()).isNotEmpty(); userTask.setCamundaCandidateUsersList(null); assertThat(userTask.getCamundaCandidateUsers()).isNull(); assertThat(userTask.getCamundaCandidateUsersList()).isEmpty(); } @Test public void testEmptyCamundaCandidateUsersList() { assertThat(userTask.getCamundaCandidateUsers()).isNotEmpty(); assertThat(userTask.getCamundaCandidateUsersList()).isNotEmpty(); userTask.setCamundaCandidateUsersList(Collections.<String>emptyList()); assertThat(userTask.getCamundaCandidateUsers()).isNull(); assertThat(userTask.getCamundaCandidateUsersList()).isEmpty(); } @Test public void testScriptResource() { assertThat(scriptTask.getScriptFormat()).isEqualTo("groovy"); assertThat(scriptTask.getCamundaResource()).isEqualTo("test.groovy"); } @Test public void testCamundaConnector() { CamundaConnector camundaConnector = serviceTask.getExtensionElements().getElementsQuery().filterByType(CamundaConnector.class).singleResult(); assertThat(camundaConnector).isNotNull(); CamundaConnectorId camundaConnectorId = camundaConnector.getCamundaConnectorId(); assertThat(camundaConnectorId).isNotNull(); assertThat(camundaConnectorId.getTextContent()).isEqualTo("soap-http-connector"); CamundaInputOutput camundaInputOutput = camundaConnector.getCamundaInputOutput(); Collection<CamundaInputParameter> inputParameters = camundaInputOutput.getCamundaInputParameters(); assertThat(inputParameters).hasSize(1); CamundaInputParameter inputParameter = inputParameters.iterator().next(); assertThat(inputParameter.getCamundaName()).isEqualTo("endpointUrl"); assertThat(inputParameter.getTextContent()).isEqualTo("http://example.com/webservice"); Collection<CamundaOutputParameter> outputParameters = camundaInputOutput.getCamundaOutputParameters(); assertThat(outputParameters).hasSize(1); CamundaOutputParameter outputParameter = outputParameters.iterator().next(); assertThat(outputParameter.getCamundaName()).isEqualTo("result"); assertThat(outputParameter.getTextContent()).isEqualTo("output"); } @Test public void testCamundaInputOutput() { CamundaInputOutput camundaInputOutput = serviceTask.getExtensionElements().getElementsQuery().filterByType(CamundaInputOutput.class).singleResult(); assertThat(camundaInputOutput).isNotNull(); assertThat(camundaInputOutput.getCamundaInputParameters()).hasSize(6); assertThat(camundaInputOutput.getCamundaOutputParameters()).hasSize(1); } @Test public void testCamundaInputParameter() { // find existing CamundaInputParameter inputParameter = findInputParameterByName(serviceTask, "shouldBeConstant"); // modify existing inputParameter.setCamundaName("hello"); inputParameter.setTextContent("world"); inputParameter = findInputParameterByName(serviceTask, "hello"); assertThat(inputParameter.getTextContent()).isEqualTo("world"); // add new one inputParameter = modelInstance.newInstance(CamundaInputParameter.class); inputParameter.setCamundaName("abc"); inputParameter.setTextContent("def"); serviceTask.getExtensionElements().getElementsQuery().filterByType(CamundaInputOutput.class).singleResult() .addChildElement(inputParameter); // search for new one inputParameter = findInputParameterByName(serviceTask, "abc"); assertThat(inputParameter.getCamundaName()).isEqualTo("abc"); assertThat(inputParameter.getTextContent()).isEqualTo("def"); } @Test public void testCamundaNullInputParameter() { CamundaInputParameter inputParameter = findInputParameterByName(serviceTask, "shouldBeNull"); assertThat(inputParameter.getCamundaName()).isEqualTo("shouldBeNull"); assertThat(inputParameter.getTextContent()).isEmpty(); } @Test public void testCamundaConstantInputParameter() { CamundaInputParameter inputParameter = findInputParameterByName(serviceTask, "shouldBeConstant"); assertThat(inputParameter.getCamundaName()).isEqualTo("shouldBeConstant"); assertThat(inputParameter.getTextContent()).isEqualTo("foo"); } @Test public void testCamundaExpressionInputParameter() { CamundaInputParameter inputParameter = findInputParameterByName(serviceTask, "shouldBeExpression"); assertThat(inputParameter.getCamundaName()).isEqualTo("shouldBeExpression"); assertThat(inputParameter.getTextContent()).isEqualTo("${1 + 1}"); } @Test public void testCamundaListInputParameter() { CamundaInputParameter inputParameter = findInputParameterByName(serviceTask, "shouldBeList"); assertThat(inputParameter.getCamundaName()).isEqualTo("shouldBeList"); assertThat(inputParameter.getTextContent()).isNotEmpty(); assertThat(inputParameter.getUniqueChildElementByNameNs(CAMUNDA_NS, "list")).isNotNull(); CamundaList list = inputParameter.getValue(); assertThat(list.getValues()).hasSize(3); for (BpmnModelElementInstance values : list.getValues()) { assertThat(values.getTextContent()).isIn("a", "b", "c"); } list = modelInstance.newInstance(CamundaList.class); for (int i = 0; i < 4; i++) { CamundaValue value = modelInstance.newInstance(CamundaValue.class); value.setTextContent("test"); list.getValues().add(value); } Collection<CamundaValue> testValues = Arrays.asList(modelInstance.newInstance(CamundaValue.class), modelInstance.newInstance(CamundaValue.class)); list.getValues().addAll(testValues); inputParameter.setValue(list); list = inputParameter.getValue(); assertThat(list.getValues()).hasSize(6); list.getValues().removeAll(testValues); ArrayList<BpmnModelElementInstance> camundaValues = new ArrayList<BpmnModelElementInstance>(list.getValues()); assertThat(camundaValues).hasSize(4); for (BpmnModelElementInstance value : camundaValues) { assertThat(value.getTextContent()).isEqualTo("test"); } list.getValues().remove(camundaValues.get(1)); assertThat(list.getValues()).hasSize(3); list.getValues().removeAll(Arrays.asList(camundaValues.get(0), camundaValues.get(3))); assertThat(list.getValues()).hasSize(1); list.getValues().clear(); assertThat(list.getValues()).isEmpty(); // test standard list interactions Collection<BpmnModelElementInstance> elements = list.getValues(); CamundaValue value = modelInstance.newInstance(CamundaValue.class); elements.add(value); List<CamundaValue> newValues = new ArrayList<CamundaValue>(); newValues.add(modelInstance.newInstance(CamundaValue.class)); newValues.add(modelInstance.newInstance(CamundaValue.class)); elements.addAll(newValues); assertThat(elements).hasSize(3); assertThat(elements).doesNotContain(modelInstance.newInstance(CamundaValue.class)); assertThat(elements.containsAll(Arrays.asList(modelInstance.newInstance(CamundaValue.class)))).isFalse(); assertThat(elements.remove(modelInstance.newInstance(CamundaValue.class))).isFalse(); assertThat(elements).hasSize(3); assertThat(elements.remove(value)).isTrue(); assertThat(elements).hasSize(2); assertThat(elements.removeAll(newValues)).isTrue(); assertThat(elements).isEmpty(); elements.add(modelInstance.newInstance(CamundaValue.class)); elements.clear(); assertThat(elements).isEmpty(); inputParameter.removeValue(); assertThat(inputParameter.getValue()).isNull(); } @Test public void testCamundaMapInputParameter() { CamundaInputParameter inputParameter = findInputParameterByName(serviceTask, "shouldBeMap"); assertThat(inputParameter.getCamundaName()).isEqualTo("shouldBeMap"); assertThat(inputParameter.getTextContent()).isNotEmpty(); assertThat(inputParameter.getUniqueChildElementByNameNs(CAMUNDA_NS, "map")).isNotNull(); CamundaMap map = inputParameter.getValue(); assertThat(map.getCamundaEntries()).hasSize(2); for (CamundaEntry entry : map.getCamundaEntries()) { if (entry.getCamundaKey().equals("foo")) { assertThat(entry.getTextContent()).isEqualTo("bar"); } else { assertThat(entry.getCamundaKey()).isEqualTo("hello"); assertThat(entry.getTextContent()).isEqualTo("world"); } } map = modelInstance.newInstance(CamundaMap.class); CamundaEntry entry = modelInstance.newInstance(CamundaEntry.class); entry.setCamundaKey("test"); entry.setTextContent("value"); map.getCamundaEntries().add(entry); inputParameter.setValue(map); map = inputParameter.getValue(); assertThat(map.getCamundaEntries()).hasSize(1); entry = map.getCamundaEntries().iterator().next(); assertThat(entry.getCamundaKey()).isEqualTo("test"); assertThat(entry.getTextContent()).isEqualTo("value"); Collection<CamundaEntry> entries = map.getCamundaEntries(); entries.add(modelInstance.newInstance(CamundaEntry.class)); assertThat(entries).hasSize(2); inputParameter.removeValue(); assertThat(inputParameter.getValue()).isNull(); } @Test public void testCamundaScriptInputParameter() { CamundaInputParameter inputParameter = findInputParameterByName(serviceTask, "shouldBeScript"); assertThat(inputParameter.getCamundaName()).isEqualTo("shouldBeScript"); assertThat(inputParameter.getTextContent()).isNotEmpty(); assertThat(inputParameter.getUniqueChildElementByNameNs(CAMUNDA_NS, "script")).isNotNull(); assertThat(inputParameter.getUniqueChildElementByType(CamundaScript.class)).isNotNull(); CamundaScript script = inputParameter.getValue(); assertThat(script.getCamundaScriptFormat()).isEqualTo("groovy"); assertThat(script.getCamundaResource()).isNull(); assertThat(script.getTextContent()).isEqualTo("1 + 1"); script = modelInstance.newInstance(CamundaScript.class); script.setCamundaScriptFormat("python"); script.setCamundaResource("script.py"); inputParameter.setValue(script); script = inputParameter.getValue(); assertThat(script.getCamundaScriptFormat()).isEqualTo("python"); assertThat(script.getCamundaResource()).isEqualTo("script.py"); assertThat(script.getTextContent()).isEmpty(); inputParameter.removeValue(); assertThat(inputParameter.getValue()).isNull(); } @Test public void testCamundaNestedOutputParameter() { CamundaOutputParameter camundaOutputParameter = serviceTask.getExtensionElements().getElementsQuery().filterByType(CamundaInputOutput.class).singleResult().getCamundaOutputParameters().iterator().next(); assertThat(camundaOutputParameter).isNotNull(); assertThat(camundaOutputParameter.getCamundaName()).isEqualTo("nested"); CamundaList list = camundaOutputParameter.getValue(); assertThat(list).isNotNull(); assertThat(list.getValues()).hasSize(2); Iterator<BpmnModelElementInstance> iterator = list.getValues().iterator(); // nested list CamundaList nestedList = (CamundaList) iterator.next().getUniqueChildElementByType(CamundaList.class); assertThat(nestedList).isNotNull(); assertThat(nestedList.getValues()).hasSize(2); for (BpmnModelElementInstance value : nestedList.getValues()) { assertThat(value.getTextContent()).isEqualTo("list"); } // nested map CamundaMap nestedMap = (CamundaMap) iterator.next().getUniqueChildElementByType(CamundaMap.class); assertThat(nestedMap).isNotNull(); assertThat(nestedMap.getCamundaEntries()).hasSize(2); Iterator<CamundaEntry> mapIterator = nestedMap.getCamundaEntries().iterator(); // nested list in nested map CamundaEntry nestedListEntry = mapIterator.next(); assertThat(nestedListEntry).isNotNull(); assertThat(nestedListEntry.getCamundaKey()).isEqualTo("list"); CamundaList nestedNestedList = nestedListEntry.getValue(); for (BpmnModelElementInstance value : nestedNestedList.getValues()) { assertThat(value.getTextContent()).isEqualTo("map"); } // nested map in nested map CamundaEntry nestedMapEntry = mapIterator.next(); assertThat(nestedMapEntry).isNotNull(); assertThat(nestedMapEntry.getCamundaKey()).isEqualTo("map"); CamundaMap nestedNestedMap = nestedMapEntry.getValue(); CamundaEntry entry = nestedNestedMap.getCamundaEntries().iterator().next(); assertThat(entry.getCamundaKey()).isEqualTo("so"); assertThat(entry.getTextContent()).isEqualTo("nested"); } protected CamundaInputParameter findInputParameterByName(BaseElement baseElement, String name) { Collection<CamundaInputParameter> camundaInputParameters = baseElement.getExtensionElements().getElementsQuery() .filterByType(CamundaInputOutput.class).singleResult().getCamundaInputParameters(); for (CamundaInputParameter camundaInputParameter : camundaInputParameters) { if (camundaInputParameter.getCamundaName().equals(name)) { return camundaInputParameter; } } throw new BpmnModelException("Unable to find camunda:inputParameter with name '" + name + "' for element with id '" + baseElement.getId() + "'"); } @After public void validateModel() { Bpmn.validateModel(modelInstance); } }