From 586690526517f89f178f59b8ca3924b2776b6547 Mon Sep 17 00:00:00 2001 From: Frederik Heremans Date: Thu, 29 Sep 2011 12:07:28 +0000 Subject: [PATCH] ALF-9727: Querying using NodeRef type now uses ActivitiScriptNodeVariableType insead of ByteArrayVariableType (which isn't queryable) + fixed activiti components text-context git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@30847 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../activiti/ActivitiTaskComponentTest.java | 21 ++++++++++++++++++ .../activiti/ActivitiWorkflowEngine.java | 22 ++++++++++++++----- .../test-activiti-component-context.xml | 4 ++++ 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/source/java/org/alfresco/repo/workflow/activiti/ActivitiTaskComponentTest.java b/source/java/org/alfresco/repo/workflow/activiti/ActivitiTaskComponentTest.java index f142608194..27baa192ce 100644 --- a/source/java/org/alfresco/repo/workflow/activiti/ActivitiTaskComponentTest.java +++ b/source/java/org/alfresco/repo/workflow/activiti/ActivitiTaskComponentTest.java @@ -680,7 +680,28 @@ public class ActivitiTaskComponentTest extends AbstractActivitiComponentTest tasks = workflowEngine.queryTasks(taskQuery); assertNotNull(tasks); assertEquals(0, tasks.size()); + } + + @Test + public void testQueryUsingNodeRef() { + NodeRef nodeRef = new NodeRef("workspace:///someRef"); + QName nodeRefPropQname = QName.createQName("testProp"); + HashMap props = new HashMap(); + props.put(nodeRefPropQname, nodeRef); + + // Start the workflow-path + workflowEngine.startWorkflow(workflowDef.getId(), props); + + // Test querying with a value of type NodeRef + WorkflowTaskQuery taskQuery = createWorkflowTaskQuery(WorkflowTaskState.IN_PROGRESS); + HashMap queryParams = new HashMap(); + queryParams.put(nodeRefPropQname, nodeRef); + taskQuery.setProcessCustomProps(queryParams); + + List tasks = workflowEngine.queryTasks(taskQuery); + assertNotNull(tasks); + assertEquals(1, tasks.size()); } private void checkTaskVariableTaskPresent(WorkflowTaskState state, diff --git a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java index aa355dc1ac..54f314b059 100644 --- a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java +++ b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java @@ -1647,7 +1647,10 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine for(Entry customProperty : processCustomProps.entrySet()) { String name =factory.mapQNameToName(customProperty.getKey()); - taskQuery.processVariableValueEquals(name, customProperty.getValue()); + + // Perform minimal property conversions + Object converted = propertyConverter.convertPropertyToValue(customProperty.getValue()); + taskQuery.processVariableValueEquals(name, converted); } } @@ -1764,8 +1767,11 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine { for(Entry customProperty : taskCustomProps.entrySet()) { - String name =factory.mapQNameToName(customProperty.getKey()); - taskQuery.taskVariableValueEquals(name, customProperty.getValue()); + String name = factory.mapQNameToName(customProperty.getKey()); + + // Perform minimal property conversions + Object converted = propertyConverter.convertPropertyToValue(customProperty.getValue()); + taskQuery.taskVariableValueEquals(name, converted); } } @@ -1854,7 +1860,10 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine for(Entry customProperty : taskCustomProps.entrySet()) { String name =factory.mapQNameToName(customProperty.getKey()); - taskQuery.taskVariableValueEquals(name, customProperty.getValue()); + + // Perform minimal property conversions + Object converted = propertyConverter.convertPropertyToValue(customProperty.getValue()); + taskQuery.taskVariableValueEquals(name, converted); } } @@ -1864,7 +1873,10 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine for(Entry customProperty : processCustomProps.entrySet()) { String name =factory.mapQNameToName(customProperty.getKey()); - taskQuery.processVariableValueEquals(name, customProperty.getValue()); + + // Perform minimal property conversions + Object converted = propertyConverter.convertPropertyToValue(customProperty.getValue()); + taskQuery.processVariableValueEquals(name, converted); } } diff --git a/source/test-resources/activiti/test-activiti-component-context.xml b/source/test-resources/activiti/test-activiti-component-context.xml index 74740dbd2e..138cc09071 100644 --- a/source/test-resources/activiti/test-activiti-component-context.xml +++ b/source/test-resources/activiti/test-activiti-component-context.xml @@ -43,6 +43,10 @@ + + + +