<?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 Re: What is the process variable scope for? in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/what-is-the-process-variable-scope-for/m-p/115573#M81478</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;How do you set your process variables, ie which method do you use?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;variables are normally process-scope, and you have to take care to make them task-scoped. So it should work as you describe.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 17 Sep 2012 15:03:29 GMT</pubDate>
    <dc:creator>jbarrez</dc:creator>
    <dc:date>2012-09-17T15:03:29Z</dc:date>
    <item>
      <title>What is the process variable scope for?</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/what-is-the-process-variable-scope-for/m-p/115572#M81477</link>
      <description>I am using the activiti REST, before my process instance was initiated, I have to set values for the variables. And in next step, I use a user to login and check out his/her task, before "complete" command is fired, I have to set the previous variable value again,otherwise I can't retrieve the varia</description>
      <pubDate>Sun, 16 Sep 2012 02:07:35 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/what-is-the-process-variable-scope-for/m-p/115572#M81477</guid>
      <dc:creator>goto_tony</dc:creator>
      <dc:date>2012-09-16T02:07:35Z</dc:date>
    </item>
    <item>
      <title>Re: What is the process variable scope for?</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/what-is-the-process-variable-scope-for/m-p/115573#M81478</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;How do you set your process variables, ie which method do you use?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;variables are normally process-scope, and you have to take care to make them task-scoped. So it should work as you describe.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 17 Sep 2012 15:03:29 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/what-is-the-process-variable-scope-for/m-p/115573#M81478</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2012-09-17T15:03:29Z</dc:date>
    </item>
    <item>
      <title>Re: What is the process variable scope for?</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/what-is-the-process-variable-scope-for/m-p/115574#M81479</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;SPAN&gt;I just use REST api to perform task operations.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://activiti.org/userguide/index.html#N12B83" rel="nofollow noopener noreferrer"&gt;http://activiti.org/userguide/index.html#N12B83&lt;/A&gt;&lt;BR /&gt;&lt;SPAN&gt;Performs an operation (claim or complete) on a task. For the "complete" operation additional variables (from a form) may be passed in the body. To read more about additional variables from forms, visit the Start Process Instance section&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Request: PUT /task/{taskId}/[claim|complete]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getTaskService().xxx(taskId …)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Response:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; "success": true&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If I didn't set variables value by JSON input, the following task will discard the original variable's value. So it seems strange for me according to your description.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Sep 2012 01:00:07 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/what-is-the-process-variable-scope-for/m-p/115574#M81479</guid>
      <dc:creator>goto_tony</dc:creator>
      <dc:date>2012-09-18T01:00:07Z</dc:date>
    </item>
    <item>
      <title>Re: What is the process variable scope for?</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/what-is-the-process-variable-scope-for/m-p/115575#M81480</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I checked the code, and as far as I can see, all the input variables are stored as process variables, as the rest layer is just calling the complete() method on the taskService&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;@Put&lt;BR /&gt;&amp;nbsp; public ObjectNode executeTaskOperation(Representation entity) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(authenticate() == false) return null;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String taskId = (String) getRequest().getAttributes().get("taskId");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String operation = (String) getRequest().getAttributes().get("operation");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String startParams = entity.getText();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JsonNode startJSON = new ObjectMapper().readTree(startParams);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Iterator&amp;lt;String&amp;gt; itName = startJSON.getFieldNames();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp; while(itName.hasNext()) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String name = itName.next();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JsonNode valueNode = startJSON.path(name);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (valueNode.isBoolean()) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put(name, valueNode.getBooleanValue());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (valueNode.isLong()) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put(name, valueNode.getLongValue());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (valueNode.isDouble()) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put(name, valueNode.getDoubleValue());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (valueNode.isTextual()) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put(name, valueNode.getTextValue());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if("true".equals(valueNode.getTextValue()) || "false".equals(valueNode.getTextValue())) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put(name, Boolean.valueOf(valueNode.getTextValue()));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.put(name, valueNode.getValueAsText());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ("claim".equals(operation)) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActivitiUtil.getTaskService().claim(taskId, loggedInUser);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if ("complete".equals(operation)) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; variables.remove("taskId");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [b]ActivitiUtil.getTaskService().complete(taskId, variables);[/b]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ActivitiException("'" + operation + "' is not a valid operation");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch(Exception e) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ActivitiException("Did not receive the operation parameters", e);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ObjectNode successNode = new ObjectMapper().createObjectNode();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; successNode.put("success", true);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return successNode;&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;}&lt;BR /&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;SPAN&gt;If you follow that call, you'll see it ends up calling (in the CompleteTaskCmd class)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (variables!=null) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; task.setExecutionVariables(variables);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; completeTask(task);&lt;BR /&gt;&lt;/CODE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Sep 2012 09:11:30 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/what-is-the-process-variable-scope-for/m-p/115575#M81480</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2012-09-18T09:11:30Z</dc:date>
    </item>
  </channel>
</rss>

