diff --git a/infra/schema/src/main/java/com/evolveum/midpoint/schema/result/OperationResult.java b/infra/schema/src/main/java/com/evolveum/midpoint/schema/result/OperationResult.java index 0fb12954cae..85df8fa1ea9 100644 --- a/infra/schema/src/main/java/com/evolveum/midpoint/schema/result/OperationResult.java +++ b/infra/schema/src/main/java/com/evolveum/midpoint/schema/result/OperationResult.java @@ -235,7 +235,6 @@ public OperationResult build() { if (!building) { throw new IllegalStateException("Not being built"); } - // todo only if profiled! recordStart(this, operation, createArguments()); building = false; if (futureParent != null) { @@ -253,6 +252,9 @@ private void recordCallerReason(OperationResult parent) { } private static void recordStart(OperationResult result, String operation, Object[] arguments) { + // TODO for very minor operation results (e.g. those dealing with mapping and script execution) + // we should consider skipping creation of invocationRecord. It includes some string manipulation(s) + // and a call to System.nanoTime that could unnecessarily slow down midPoint operation. result.invocationRecord = OperationInvocationRecord.create(operation, arguments); result.invocationId = result.invocationRecord.getInvocationId(); result.start = System.currentTimeMillis(); @@ -287,11 +289,11 @@ private Object[] createArguments() { } public OperationResult createSubresult(String operation) { - return createSubresult(operation, false, true, new Object[0]); + return createSubresult(operation, false, new Object[0]); } public OperationResult createMinorSubresult(String operation) { - return createSubresult(operation, true, true, null); // temporarily profiled todo make this configurable + return createSubresult(operation, true, null); } // public static OperationResult createProfiled(String operation) { @@ -304,13 +306,11 @@ public OperationResult createMinorSubresult(String operation) { // return result; // } - private OperationResult createSubresult(String operation, boolean minor, boolean profiled, Object[] arguments) { + private OperationResult createSubresult(String operation, boolean minor, Object[] arguments) { OperationResult subresult = new OperationResult(operation); subresult.recordCallerReason(this); addSubresult(subresult); - if (profiled) { - recordStart(subresult, operation, arguments); - } + recordStart(subresult, operation, arguments); subresult.importance = minor ? MINOR : NORMAL; return subresult; } @@ -318,6 +318,7 @@ private OperationResult createSubresult(String operation, boolean minor, boolean // todo determine appropriate places where recordEnd() should be called public void recordEnd() { if (invocationRecord != null) { + // TODO use lambda here to avoid string manipulation if not necessary (i.e. if profiling logging is turned off) String returnValue = getReturns().toString(); if (cause != null) { returnValue += "; " + cause.getClass().getName() + ": " + cause.getMessage(); diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/AssignmentEvaluator.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/AssignmentEvaluator.java index 8ed5de69cb6..6da415ce5a5 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/AssignmentEvaluator.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/AssignmentEvaluator.java @@ -864,7 +864,7 @@ private void evaluateSegmentTarget(AssignmentPathSegmentImpl segment, PlusMinusZ AssignmentPathVariables assignmentPathVariables = LensUtil.computeAssignmentPathVariables(ctx.assignmentPath); PrismValueDeltaSetTriple> conditionTriple = evaluateCondition(roleCondition, segment.source, assignmentPathVariables, - "condition in " + segment.getSourceDescription(), ctx, result); + "condition in " + segment.getTargetDescription(), ctx, result); boolean condOld = ExpressionUtil.computeConditionResult(conditionTriple.getNonPositiveValues()); boolean condNew = ExpressionUtil.computeConditionResult(conditionTriple.getNonNegativeValues()); PlusMinusZero modeFromCondition = ExpressionUtil.computeConditionResultMode(condOld, condNew); diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/AssignmentPathSegmentImpl.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/AssignmentPathSegmentImpl.java index 310be3bb356..20f9eada605 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/AssignmentPathSegmentImpl.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/AssignmentPathSegmentImpl.java @@ -348,11 +348,18 @@ public ObjectType getSource() { return source; } - @SuppressWarnings("unused") public String getSourceDescription() { return sourceDescription; } + public String getTargetDescription() { + if (target != null) { + return target + " in " + sourceDescription; + } else { + return "(target) in " + sourceDescription; + } + } + public boolean isPathToSourceValid() { return pathToSourceValid; } diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/focus/AssignmentProcessor.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/focus/AssignmentProcessor.java index ada67ccb292..c3cb372ac29 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/focus/AssignmentProcessor.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/focus/AssignmentProcessor.java @@ -252,7 +252,7 @@ private void processAssig evaluatedAssignmentTriple = assignmentTripleEvaluator.processAllAssignments(); context.setEvaluatedAssignmentTriple((DeltaSetTriple)evaluatedAssignmentTriple); - // TODO implement isMemberOf invocation result change check here! + // TODO implement isMemberOf invocation result change check here! MID-5784 // Actually, we should factor out the relevant code to avoid code duplication. policyRuleProcessor.addGlobalPolicyRulesToAssignments(context, evaluatedAssignmentTriple, task, result); diff --git a/model/model-impl/src/test/java/com/evolveum/midpoint/model/impl/lens/TestAssignedMappings.java b/model/model-impl/src/test/java/com/evolveum/midpoint/model/impl/lens/TestAssignedMappings.java index ac4cea80988..6e5dc1e6252 100644 --- a/model/model-impl/src/test/java/com/evolveum/midpoint/model/impl/lens/TestAssignedMappings.java +++ b/model/model-impl/src/test/java/com/evolveum/midpoint/model/impl/lens/TestAssignedMappings.java @@ -9,6 +9,7 @@ import com.evolveum.midpoint.common.Clock; import com.evolveum.midpoint.model.impl.lens.projector.focus.AssignmentProcessor; import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.prism.polystring.PolyString; import com.evolveum.midpoint.schema.SchemaConstantsGenerated; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.task.api.Task; @@ -17,6 +18,7 @@ import com.evolveum.midpoint.test.util.MidPointTestConstants; import com.evolveum.midpoint.test.util.TestUtil; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; +import com.evolveum.prism.xml.ns._public.types_3.ItemPathType; import org.springframework.beans.factory.annotation.Autowired; import org.testng.annotations.Test; @@ -69,6 +71,7 @@ public class TestAssignedMappings extends AbstractLensTest { private static final TestResource ROLE_R6 = new TestResource(TEST_DIR, "role-r6.xml", "5c58ec3c-bb67-423c-ac4b-bb276c2e8c92"); private static final TestResource USER_ADAM = new TestResource(TEST_DIR, "user-adam.xml", "cf10f112-a731-45cd-8dfb-1b3fe9375c14"); + private static final TestResource USER_BENJAMIN = new TestResource(TEST_DIR, "user-benjamin.xml", "2e1a427c-d6a7-4783-90ec-9dc0ebc98630"); //private static final TestResource ROLE_ORGANIZER = new TestResource(TEST_DIR, "role-organizer.xml", "7d31a3c2-cecf-4e3d-8740-988b37848a7c"); @@ -121,6 +124,7 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti repoAdd(ROLE_R5, initResult); repoAdd(ROLE_R6, initResult); addObject(USER_ADAM, initTask, initResult); + addObject(USER_BENJAMIN, initTask, initResult); repoAdd(ROLE_BEARABLE, initResult); repoAdd(SERVICE_RING, initResult); @@ -320,7 +324,7 @@ public void test130UnassignStingFromFrodo() throws Exception { } /** - * Add roles 1, 2, 3 with validity and conditions set by various ways. + * Add roles with validity and conditions set by various ways. * * mmr111 - everything is enabled * mmr112 - condition on individual mapping is 'false' @@ -328,7 +332,7 @@ public void test130UnassignStingFromFrodo() throws Exception { * mmr121 - inducement activation is 'disabled' * mmr122 - metarole mmr122 condition is 'false' * mmr123 - metarole mmr123 activation is 'disabled' - * mmr131 - assignment mr12->mmr131 has condition of 'false' + * mmr131 - assignment mr13->mmr131 has condition of 'false' * mmr132 - assignment mr13->mmr132 activation is 'disabled' * mr21 - metarole mr21 condition is 'false' * mr22 - metarole mr22 activation is 'disabled' @@ -338,10 +342,66 @@ public void test130UnassignStingFromFrodo() throws Exception { * r4 - role condition is false * r5 - assignment adam->r5 condition is 'false' * r6 - assignment adam->r6 activation is 'disabled' (MID-4430) + * + * Conditions are bound to "title" property: if it's 'enabled' then they are set to true. + */ + @Test + public void test200AssignRolesToAdam() throws Exception { + final String TEST_NAME = "test200AssignRolesToAdam"; + TestUtil.displayTestTitle(this, TEST_NAME); + + // GIVEN + Task task = createTask(TestAssignedMappings.class.getName() + "." + TEST_NAME); + setModelLoggingTracing(task); + OperationResult result = task.getResult(); + + // WHEN + executeChanges( + deltaFor(UserType.class) + .item(UserType.F_ASSIGNMENT) + .add( + createRoleAssignment(ROLE_R1), + createRoleAssignment(ROLE_R2), + createRoleAssignment(ROLE_R3), + createRoleAssignment(ROLE_R4), + createRoleAssignmentWithCondition(ROLE_R5), + createRoleAssignmentDisabled(ROLE_R6)) + .asObjectDelta(USER_ADAM.oid), + null, task, result); + + // THEN + assertSuccess(result); + PrismObject adamAfter = getUserFromRepo(USER_ADAM.oid); + UserType adamAfterBean = adamAfter.asObjectable(); + new UserAsserter<>(adamAfter) + .display(); + } + + /** + * Add roles with validity and conditions set by various ways. + * + * mmr111 - everything is enabled + * mmr112 - condition on individual mapping is 'true' + * mmr113 - inducement condition is 'true' (on last inducement (with mappings)) + * mmr121 - inducement activation is 'disabled' + * mmr122 - metarole mmr122 condition is 'true' + * mmr123 - metarole mmr123 activation is 'disabled' + * mmr131 - assignment mr13->mmr131 has condition of 'true' + * mmr132 - assignment mr13->mmr132 activation is 'disabled' + * mr21 - metarole mr21 condition is 'true' + * mr22 - metarole mr22 activation is 'disabled' + * mr23 - assignment r2->mr23 condition is 'true' + * mr24 - assignment r2->mr24 activation is 'disabled' + * r3 - role activation is 'disabled' (MID-4449) + * r4 - role condition is true + * r5 - assignment adam->r5 condition is 'true' + * r6 - assignment adam->r6 activation is 'disabled' (MID-4430) + * + * Conditions are bound to "title" property: here it's 'enabled' so they are set to true. */ @Test - public void test200AssignRoles123toAdam() throws Exception { - final String TEST_NAME = "test200AssignRoles123toAdam"; + public void test210AssignRolesToBenjamin() throws Exception { + final String TEST_NAME = "test210AssignRolesToBenjamin"; TestUtil.displayTestTitle(this, TEST_NAME); // GIVEN @@ -358,35 +418,192 @@ public void test200AssignRoles123toAdam() throws Exception { createRoleAssignment(ROLE_R2), createRoleAssignment(ROLE_R3), createRoleAssignment(ROLE_R4), - createRoleAssignmentConditionFalse(ROLE_R5), + createRoleAssignmentWithCondition(ROLE_R5), createRoleAssignmentDisabled(ROLE_R6)) + .asObjectDelta(USER_BENJAMIN.oid), + null, task, result); + + // THEN + assertSuccess(result); + PrismObject benjaminAfter = getUserFromRepo(USER_BENJAMIN.oid); + UserType benjaminAfterBean = benjaminAfter.asObjectable(); + new UserAsserter<>(benjaminAfter) + .display(); + } + + /** + * Switch Adam condition from false to true. + * + * mmr111 - everything is enabled + * mmr112 - condition on individual mapping is 'false' -> 'true' + * mmr113 - inducement condition is 'false' -> 'true' (on last inducement (with mappings)) (MID-5783) + * mmr121 - inducement activation is 'disabled' + * mmr122 - metarole mmr122 condition is 'false' -> 'true' (MID-5783) + * mmr123 - metarole mmr123 activation is 'disabled' + * mmr131 - assignment mr13->mmr131 has condition of 'false' -> 'true' (MID-5783) + * mmr132 - assignment mr13->mmr132 activation is 'disabled' + * mr21 - metarole mr21 condition is 'false' -> 'true' (MID-5783) + * mr22 - metarole mr22 activation is 'disabled' + * mr23 - assignment r2->mr23 condition is 'false' -> 'true' (MID-5783) + * mr24 - assignment r2->mr24 activation is 'disabled' + * r3 - role activation is 'disabled' (MID-4449) + * r4 - role condition is 'false' -> 'true' (MID-5783) + * r5 - assignment adam->r5 condition is 'false' -> 'true' (MID-5783) + * r6 - assignment adam->r6 activation is 'disabled' (MID-4430) + * + * Conditions are bound to "title" property: if it's 'enabled' then they are set to true. + */ + @Test + public void test220AdamConditionFalseToTrue() throws Exception { + final String TEST_NAME = "test220AdamConditionFalseToTrue"; + TestUtil.displayTestTitle(this, TEST_NAME); + + // GIVEN + Task task = createTask(TestAssignedMappings.class.getName() + "." + TEST_NAME); + setModelLoggingTracing(task); + OperationResult result = task.getResult(); + + // WHEN + executeChanges( + deltaFor(UserType.class) + .item(UserType.F_TITLE) + .replace(PolyString.fromOrig("enabled")) + .asObjectDelta(USER_ADAM.oid), + null, task, result); + + // THEN + assertSuccess(result); + PrismObject adamAfter = getUserFromRepo(USER_ADAM.oid); + UserType adamAfterBean = adamAfter.asObjectable(); + new UserAsserter<>(adamAfter) + .display(); + } + + /** + * Switch Benjamin condition from true to false. + * + * mmr111 - everything is enabled + * mmr112 - condition on individual mapping is 'true' -> 'false' + * mmr113 - inducement condition is 'true' -> 'false' (on last inducement (with mappings)) (MID-5783) + * mmr121 - inducement activation is 'disabled' + * mmr122 - metarole mmr122 condition is 'true' -> 'false' (MID-5783) + * mmr123 - metarole mmr123 activation is 'disabled' + * mmr131 - assignment mr13->mmr131 has condition of 'true' -> 'false' (MID-5783) + * mmr132 - assignment mr13->mmr132 activation is 'disabled' + * mr21 - metarole mr21 condition is 'true' -> 'false' (MID-5783) + * mr22 - metarole mr22 activation is 'disabled' + * mr23 - assignment r2->mr23 condition is 'true' -> 'false' (MID-5783) + * mr24 - assignment r2->mr24 activation is 'disabled' + * r3 - role activation is 'disabled' (MID-4449) + * r4 - role condition is 'true' -> 'false' (MID-5783) + * r5 - assignment adam->r5 condition is 'true' -> 'false' (MID-5783) + * r6 - assignment adam->r6 activation is 'disabled' (MID-4430) + * + * Conditions are bound to "title" property: if it's 'enabled' then they are set to true. + */ + @Test + public void test230BenjaminConditionTrueToFalse() throws Exception { + final String TEST_NAME = "test230BenjaminConditionTrueToFalse"; + TestUtil.displayTestTitle(this, TEST_NAME); + + // GIVEN + Task task = createTask(TestAssignedMappings.class.getName() + "." + TEST_NAME); + setModelLoggingTracing(task); + OperationResult result = task.getResult(); + + // WHEN + executeChanges( + deltaFor(UserType.class) + .item(UserType.F_TITLE) + .replace() + .asObjectDelta(USER_BENJAMIN.oid), + null, task, result); + + // THEN + assertSuccess(result); + PrismObject benjaminAfter = getUserFromRepo(USER_BENJAMIN.oid); + UserType benjaminAfterBean = benjaminAfter.asObjectable(); + new UserAsserter<>(benjaminAfter) + .display(); + } + + /** + * Unassign the roles. Extension values should disappear. + */ + @Test + public void test280UnassignRolesFromAdam() throws Exception { + final String TEST_NAME = "test280UnassignRolesFromAdam"; + TestUtil.displayTestTitle(this, TEST_NAME); + + // GIVEN + Task task = createTask(TestAssignedMappings.class.getName() + "." + TEST_NAME); + setModelLoggingTracing(task); + OperationResult result = task.getResult(); + + // WHEN + executeChanges( + deltaFor(UserType.class) + .item(UserType.F_ASSIGNMENT) + .replace() .asObjectDelta(USER_ADAM.oid), null, task, result); // THEN assertSuccess(result); PrismObject adamAfter = getUserFromRepo(USER_ADAM.oid); - UserType jimAfterBean = adamAfter.asObjectable(); + UserType adamAfterBean = adamAfter.asObjectable(); new UserAsserter<>(adamAfter) .display(); } + /** + * Unassign the roles. Extension values should disappear. + */ + @Test + public void test290UnassignRolesFromBenjamin() throws Exception { + final String TEST_NAME = "test290UnassignRolesFromBenjamin"; + TestUtil.displayTestTitle(this, TEST_NAME); + + // GIVEN + Task task = createTask(TestAssignedMappings.class.getName() + "." + TEST_NAME); + setModelLoggingTracing(task); + OperationResult result = task.getResult(); + + // WHEN + executeChanges( + deltaFor(UserType.class) + .item(UserType.F_ASSIGNMENT) + .replace() + .asObjectDelta(USER_BENJAMIN.oid), + null, task, result); + + // THEN + assertSuccess(result); + PrismObject benjaminAfter = getUserFromRepo(USER_BENJAMIN.oid); + UserType benjaminAfterBean = benjaminAfter.asObjectable(); + new UserAsserter<>(benjaminAfter) + .display(); + } + private AssignmentType createRoleAssignment(TestResource role) { return new AssignmentType(prismContext) .targetRef(role.oid, RoleType.COMPLEX_TYPE); } - private AssignmentType createRoleAssignmentConditionFalse(TestResource role) { + @SuppressWarnings("SameParameterValue") + private AssignmentType createRoleAssignmentWithCondition(TestResource role) { ScriptExpressionEvaluatorType scriptExpressionEvaluator = new ScriptExpressionEvaluatorType(); - scriptExpressionEvaluator.setCode("false"); + scriptExpressionEvaluator.setCode("basic.stringify(title) == 'enabled'"); ExpressionType expression = new ExpressionType(); expression.getExpressionEvaluator().add(new JAXBElement<>(SchemaConstantsGenerated.C_SCRIPT, ScriptExpressionEvaluatorType.class, scriptExpressionEvaluator)); + MappingType condition = new MappingType(prismContext) + .source(new VariableBindingDefinitionType().path(new ItemPathType(UserType.F_TITLE))) + .expression(expression); + return new AssignmentType(prismContext) .targetRef(role.oid, RoleType.COMPLEX_TYPE) - .beginCondition() - .expression(expression) - .end(); + .condition(condition); } private AssignmentType createRoleAssignmentDisabled(TestResource role) { diff --git a/model/model-impl/src/test/resources/lens/focusMappings/metametarole-mmr1.1.2.xml b/model/model-impl/src/test/resources/lens/focusMappings/metametarole-mmr1.1.2.xml index d2cd464f6b9..9ca0750dbe3 100644 --- a/model/model-impl/src/test/resources/lens/focusMappings/metametarole-mmr1.1.2.xml +++ b/model/model-impl/src/test/resources/lens/focusMappings/metametarole-mmr1.1.2.xml @@ -31,12 +31,20 @@ extension/p112a + + $focus/title + + + + extension/p112b diff --git a/model/model-impl/src/test/resources/lens/focusMappings/metametarole-mmr1.1.3.xml b/model/model-impl/src/test/resources/lens/focusMappings/metametarole-mmr1.1.3.xml index c5bd847ccc7..5fde6753e80 100644 --- a/model/model-impl/src/test/resources/lens/focusMappings/metametarole-mmr1.1.3.xml +++ b/model/model-impl/src/test/resources/lens/focusMappings/metametarole-mmr1.1.3.xml @@ -55,9 +55,12 @@ 3 UserType + + $focus/title + diff --git a/model/model-impl/src/test/resources/lens/focusMappings/metametarole-mmr1.2.2.xml b/model/model-impl/src/test/resources/lens/focusMappings/metametarole-mmr1.2.2.xml index ba4a0bfe1b7..7c612970209 100644 --- a/model/model-impl/src/test/resources/lens/focusMappings/metametarole-mmr1.2.2.xml +++ b/model/model-impl/src/test/resources/lens/focusMappings/metametarole-mmr1.2.2.xml @@ -56,9 +56,12 @@ UserType + + $focus/title + diff --git a/model/model-impl/src/test/resources/lens/focusMappings/metarole-mr1.3.xml b/model/model-impl/src/test/resources/lens/focusMappings/metarole-mr1.3.xml index 5d8459a316f..ac533c6d22f 100644 --- a/model/model-impl/src/test/resources/lens/focusMappings/metarole-mr1.3.xml +++ b/model/model-impl/src/test/resources/lens/focusMappings/metarole-mr1.3.xml @@ -12,9 +12,12 @@ + + $focus/title + diff --git a/model/model-impl/src/test/resources/lens/focusMappings/metarole-mr2.1.xml b/model/model-impl/src/test/resources/lens/focusMappings/metarole-mr2.1.xml index 84272f954c2..720b072b6eb 100644 --- a/model/model-impl/src/test/resources/lens/focusMappings/metarole-mr2.1.xml +++ b/model/model-impl/src/test/resources/lens/focusMappings/metarole-mr2.1.xml @@ -13,9 +13,12 @@ + + $focus/title + diff --git a/model/model-impl/src/test/resources/lens/focusMappings/role-r2.xml b/model/model-impl/src/test/resources/lens/focusMappings/role-r2.xml index fc6ccce0027..443fed6ffe6 100644 --- a/model/model-impl/src/test/resources/lens/focusMappings/role-r2.xml +++ b/model/model-impl/src/test/resources/lens/focusMappings/role-r2.xml @@ -18,9 +18,12 @@ + + $focus/title + diff --git a/model/model-impl/src/test/resources/lens/focusMappings/role-r4.xml b/model/model-impl/src/test/resources/lens/focusMappings/role-r4.xml index 8db28ee41af..0704cfb848b 100644 --- a/model/model-impl/src/test/resources/lens/focusMappings/role-r4.xml +++ b/model/model-impl/src/test/resources/lens/focusMappings/role-r4.xml @@ -13,9 +13,12 @@ + + $focus/title + diff --git a/model/model-impl/src/test/resources/lens/focusMappings/user-benjamin.xml b/model/model-impl/src/test/resources/lens/focusMappings/user-benjamin.xml new file mode 100644 index 00000000000..89c47559ea3 --- /dev/null +++ b/model/model-impl/src/test/resources/lens/focusMappings/user-benjamin.xml @@ -0,0 +1,13 @@ + + + + + benjamin + enabled + \ No newline at end of file diff --git a/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java b/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java index 6b4afb4a1a7..2d41cd7d39d 100644 --- a/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java +++ b/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java @@ -1780,7 +1780,7 @@ protected Task createTask(String operationName) { operationName = this.getClass().getName() + "." + operationName; } Task task = taskManager.createTaskInstance(operationName); -// setModelAndWorkflowLoggingTracing(task); +// setModelLoggingTracing(task); return task; }