<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic TaskQuery#taskVariableValueLike in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/taskquery-taskvariablevaluelike/m-p/94494#M64732</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I am an engineer living in Japan.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I am using Activiti for our application.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My application needs to create query using 'like' operation for task variables and process variables to find tasks.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Are there any solution to make 'like' query for using Activiti API?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I looked into API documents but I could not find good solution.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I try to add new interfaces. These interfaces look like,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TaskQuery TaskQuery#taskVariableValueLike(String variableName, String variableValue);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TaskQuery TaskQuery#processVariableValueLike(String variableName, String variableValue);&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;And, I try to implement new interfaces.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Following are those code.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;TaskQuery&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;package org.activiti.engine.task;&lt;BR /&gt;&lt;BR /&gt;public interface TaskQuery extends Query&amp;lt;TaskQuery, Task&amp;gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TaskQuery TaskQuery#taskVariableValueLike(String variableName, String variableValue);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TaskQuery TaskQuery#processVariableValueLike(String variableName, String variableValue);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;TaskQueryImpl&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;package org.activiti.engine.impl;&lt;BR /&gt;&lt;BR /&gt;public class TaskQueryImpl extends AbstractQuery&amp;lt;TaskQuery, Task&amp;gt; implements TaskQuery {&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; :&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; public TaskQuery taskVariableValueLike(String variableName, String variableValue) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.add(new TaskQueryVariableValue(variableName, variableValue, QueryOperator.LIKE, true));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return this;&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; public TaskQuery processVariableValueLike(String variableName, String variableValue) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.add(new TaskQueryVariableValue(variableName, variableValue, QueryOperator.LIKE, false));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return this;&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; :&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;activiti-engine/src/main/resources/org/activiti/db/mapping/entity/Task.xml&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; :&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;foreach item="var" collection="variables" index="index"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test="!var.taskVariable"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!– When process instance variable is queried for, taskId should be null –&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and A${index}.TASK_ID_ is null&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and A${index}.NAME_= #{var.name}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test="!var.type.equals('null')"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and A${index}.TYPE_ = #{var.type}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!– Variable value –&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test="var.textValue != null &amp;amp;amp;&amp;amp;amp; var.longValue == null &amp;amp;amp;&amp;amp;amp; var.doubleValue == null"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test="var.operator.equals('EQUALS')"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and A${index}.TEXT_ =&amp;nbsp; #{var.textValue}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test="var.operator.equals('LIKE')"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and A${index}.TEXT_ like&amp;nbsp; #{var.textValue}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test="var.textValue2 != null"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test="var.operator.equals('EQUALS')"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and A${index}.TEXT2_ = #{var.textValue2}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test="var.operator.equals('LIKE')"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and A${index}.TEXT2_ like #{var.textValue2}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test="var.longValue != null"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and A${index}.LONG_ = #{var.longValue}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test="var.doubleValue != null"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and A${index}.DOUBLE_ = #{var.doubleValue}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!– Null variable type –&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test="var.textValue == null &amp;amp;amp;&amp;amp;amp; var.textValue2 == null &amp;amp;amp;&amp;amp;amp; var.longValue == null &amp;amp;amp;&amp;amp;amp; var.doubleValue == null"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and A${index}.TEXT_ is null and A${index}.TEXT2_ is null and A${index}.LONG_ is null and A${index}.DOUBLE_ is null and A${index}.BYTEARRAY_ID_ is null&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/foreach&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/where&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;/sql&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;/mapper&amp;gt;&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;TaskQueryTest&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;package org.activiti.engine.test.api.task;&lt;BR /&gt;&amp;nbsp; :&lt;BR /&gt;public class TaskQueryTest extends PluggableActivitiTestCase {&lt;BR /&gt;&amp;nbsp; :&lt;BR /&gt;&amp;nbsp; @Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testTaskVariableValueEquals.bpmn20.xml"})&lt;BR /&gt;&amp;nbsp; public void testTaskVariableValueLike() throws Exception {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // No task should be found for an unexisting var&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertEquals(0, taskService.createTaskQuery().taskVariableValueEquals("unexistingVar", "value").count());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create a map with a variable for all default types&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Map&amp;lt;String, Object&amp;gt; variables = new HashMap&amp;lt;String, Object&amp;gt;();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put("longVar", 928374L);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put("shortVar", (short) 123);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put("integerVar", 1234);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put("stringVar", "stringValue");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put("booleanVar", true);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Date date = Calendar.getInstance().getTime();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put("dateVar", date);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put("nullVar", null);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; taskService.setVariablesLocal(task.getId(), variables);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Test query matches&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertEquals(1, taskService.createTaskQuery().taskVariableValueLike("stringVar", "stringValue").count());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertEquals(1, taskService.createTaskQuery().taskVariableValueLike("stringVar", "s%").count());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertEquals(1, taskService.createTaskQuery().taskVariableValueLike("stringVar", "string%").count());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertEquals(1, taskService.createTaskQuery().taskVariableValueLike("stringVar", "%").count());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Test query for other values on existing variables&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertEquals(0, taskService.createTaskQuery().taskVariableValueLike("stringVar", "999").count());&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; @Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessVariableValueEquals.bpmn20.xml"})&lt;BR /&gt;&amp;nbsp; public void testProcessVariableValueLike() throws Exception {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Map&amp;lt;String, Object&amp;gt; variables = new HashMap&amp;lt;String, Object&amp;gt;();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put("longVar", 928374L);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put("shortVar", (short) 123);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put("integerVar", 1234);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put("stringVar", "stringValue");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put("booleanVar", true);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Date date = Calendar.getInstance().getTime();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put("dateVar", date);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put("nullVar", null);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Start process-instance with all types of variables&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess", variables);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Test query matches&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertEquals(1, taskService.createTaskQuery().processVariableValueLike("stringVar", "stringValue").count());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertEquals(1, taskService.createTaskQuery().processVariableValueLike("stringVar", "s%").count());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertEquals(1, taskService.createTaskQuery().processVariableValueLike("stringVar", "str%").count());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertEquals(1, taskService.createTaskQuery().processVariableValueLike("stringVar", "string%").count());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Test query for other values on existing variables&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertEquals(0, taskService.createTaskQuery().taskVariableValueLike("stringVar", "999").count());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Test querying for task variables don't match the process-variables &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertEquals(0, taskService.createTaskQuery().taskVariableValueLike("stringVar", "stringValue").count());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 01 Feb 2012 14:00:13 GMT</pubDate>
    <dc:creator>tomo1</dc:creator>
    <dc:date>2012-02-01T14:00:13Z</dc:date>
    <item>
      <title>TaskQuery#taskVariableValueLike</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/taskquery-taskvariablevaluelike/m-p/94494#M64732</link>
      <description>I am an engineer living in Japan.I am using Activiti for our application.My application needs to create query using 'like' operation for task variables and process variables to find tasks.Are there any solution to make 'like' query for using Activiti API?I looked into API documents but I could not f</description>
      <pubDate>Wed, 01 Feb 2012 14:00:13 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/taskquery-taskvariablevaluelike/m-p/94494#M64732</guid>
      <dc:creator>tomo1</dc:creator>
      <dc:date>2012-02-01T14:00:13Z</dc:date>
    </item>
    <item>
      <title>Re: TaskQuery#taskVariableValueLike</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/taskquery-taskvariablevaluelike/m-p/94495#M64733</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Can you create a Jira issue + attach your code as a patch?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Feb 2012 11:24:30 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/taskquery-taskvariablevaluelike/m-p/94495#M64733</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2012-02-02T11:24:30Z</dc:date>
    </item>
    <item>
      <title>Re: TaskQuery#taskVariableValueLike</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/taskquery-taskvariablevaluelike/m-p/94496#M64734</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I create an issue on Jira as ACT-1089.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I put API interface, implementation and test code to ACT-1089.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(these are my contribution.)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 06 Feb 2012 22:52:32 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/taskquery-taskvariablevaluelike/m-p/94496#M64734</guid>
      <dc:creator>tomo1</dc:creator>
      <dc:date>2012-02-06T22:52:32Z</dc:date>
    </item>
  </channel>
</rss>

