<?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: New rest Service in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145079#M101412</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;i have created a new resource class for retrieve the history&amp;amp;runtime process intance info as below&lt;BR /&gt;…..&lt;BR /&gt;&lt;BR /&gt;And in ActivitiRestApplication i have added the below line,&lt;BR /&gt;&lt;STRONG&gt;router.attach("/history/processInstance/{processInstanceId}", HistoryInstanceDetailsResource.class);&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;But after adding these, how add these files to the existing activiti-rest-5.1.1 jar file.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;Would you really have these classes in core jar of activiti-rest???&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You can create the your own jar file and place it into lib directory of the activiti-rest web application (that would be same place as place of core jar activiti-rest-5.1.1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Because all files, that allocated into /lib directory are embeded into java class path, your classes would be reachable. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But you should &lt;/SPAN&gt;&lt;STRONG&gt;be careful&lt;/STRONG&gt;&lt;SPAN&gt; that your custom jar just &lt;/SPAN&gt;&lt;STRONG&gt;before &lt;/STRONG&gt;&lt;SPAN&gt;of the core jar activiti-rest in file system is, because you use the changed &lt;/SPAN&gt;&lt;BR /&gt;&lt;EM&gt;org.activiti.rest.application.ActivitiRestApplication&lt;/EM&gt;&lt;SPAN&gt; class to register your own classes. (For instance, your own jar name begins with "_" symbol)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;That problem solving is not pretty :-/, and it is assumed, that the activiti-rest jars are loaded using &lt;/SPAN&gt;&lt;A href="http://stackoverflow.com/questions/5474765/order-of-loading-jar-files-from-lib-directory" rel="nofollow noopener noreferrer"&gt;alphabetical order&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;2. The other solution would be "patch" the core activiti-rest jar file (unpack core jar, set the your own classes &amp;amp; changed ActivitiRestApplication class and pack that using i.e JAR.exe)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The both solutions are not optimal, because you must be control the ActivitiRestApplication (case 1) or just whole activiti-rest jar for changes if you wish to upgrade activiti.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;BTW @activiti core team;-)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Is the usage of the &lt;/SPAN&gt;&lt;STRONG&gt;java &lt;/STRONG&gt;&lt;SPAN&gt;registry file is &lt;/SPAN&gt;&lt;EM&gt;org.activiti.rest.application.ActivitiRestApplication&lt;/EM&gt;&lt;SPAN&gt; for the activiti-rest( &lt;/SPAN&gt;&lt;EM&gt;while the "springed" beans are used too&lt;/EM&gt;&lt;SPAN&gt;), is old artifact from older releases?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 17 Jan 2013 09:31:28 GMT</pubDate>
    <dc:creator>udoderk</dc:creator>
    <dc:date>2013-01-17T09:31:28Z</dc:date>
    <item>
      <title>New rest Service</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145076#M101409</link>
      <description>Hi,I want to develop a new rest service to include some more functionalities that are available by default in the activiti.Can some one give a detailed explanation on how to achieve the same?.</description>
      <pubDate>Wed, 16 Jan 2013 08:19:01 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145076#M101409</guid>
      <dc:creator>suresh13_m</dc:creator>
      <dc:date>2013-01-16T08:19:01Z</dc:date>
    </item>
    <item>
      <title>Re: New rest Service</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145077#M101410</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Depends on what you want to do: A. Do you want to add additional rest-resources in the activiti-rest web app? B. Or are you planning on creating a separate war-file exposing REST-services that use activiti inside.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In case of A: Activiti uses rest let. You can add additional routing (additional REST-resources) in "org.activiti.rest.application.ActivitiRestApplication".&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;B: You can use any REST-framework you want (eg. rest let) and just call the activiti-api calls you want from within the REST-controllers/resources.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Jan 2013 09:56:44 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145077#M101410</guid>
      <dc:creator>frederikherema1</dc:creator>
      <dc:date>2013-01-16T09:56:44Z</dc:date>
    </item>
    <item>
      <title>Re: New rest Service</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145078#M101411</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;i have created a new resource class for retrieve the history&amp;amp;runtime process intance info as below&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;package org.activiti.rest.api.history;&lt;BR /&gt;&lt;BR /&gt;import java.util.List;&lt;BR /&gt;&lt;BR /&gt;import org.activiti.engine.ActivitiException;&lt;BR /&gt;import org.activiti.engine.history.HistoricActivityInstance;&lt;BR /&gt;import org.activiti.engine.history.HistoricDetail;&lt;BR /&gt;import org.activiti.engine.history.HistoricProcessInstance;&lt;BR /&gt;import org.activiti.engine.history.HistoricTaskInstance;&lt;BR /&gt;import org.activiti.engine.history.HistoricVariableUpdate;&lt;BR /&gt;import org.activiti.rest.api.ActivitiUtil;&lt;BR /&gt;import org.activiti.rest.api.RequestUtil;&lt;BR /&gt;import org.activiti.rest.api.SecuredResource;&lt;BR /&gt;import org.codehaus.jackson.map.ObjectMapper;&lt;BR /&gt;import org.codehaus.jackson.node.ArrayNode;&lt;BR /&gt;import org.codehaus.jackson.node.ObjectNode;&lt;BR /&gt;import org.restlet.resource.Get;&lt;BR /&gt;&lt;BR /&gt;public class HistoryInstanceDetailsResource extends SecuredResource {&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; @Get&lt;BR /&gt;&amp;nbsp; public ObjectNode getProcessInfo() {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ObjectNode responseJSON = new ObjectMapper().createObjectNode();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; String processInstanceId = null;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(authenticate() == false) return null;&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; processInstanceId = (String) getRequest().getAttributes().get("processInstanceId");&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; HistoricProcessInstance instance = ActivitiUtil.getHistoryService()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .createHistoricProcessInstanceQuery()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .processInstanceId(processInstanceId)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .singleResult();&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(instance == null) return null;&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; responseJSON.put("processInstanceId", instance.getId());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; responseJSON.put("businessKey", instance.getBusinessKey() != null ? instance.getBusinessKey() : "null");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; responseJSON.put("processDefinitionId", instance.getProcessDefinitionId());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; responseJSON.put("startTime", RequestUtil.dateToString(instance.getStartTime()));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(instance.getEndTime() == null) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; responseJSON.put("completed", false);&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; responseJSON.put("completed", true);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; responseJSON.put("endTime", RequestUtil.dateToString(instance.getEndTime()));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; responseJSON.put("duration", instance.getDurationInMillis());&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; addTaskList(processInstanceId, responseJSON);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addActivityList(processInstanceId, responseJSON);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addVariableList(processInstanceId, responseJSON);&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("Failed to retrieve the process instance details for id " + processInstanceId, e);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return responseJSON;&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; private void addTaskList(String processInstanceId, ObjectNode responseJSON) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; List&amp;lt;HistoricTaskInstance&amp;gt; taskList = ActivitiUtil.getHistoryService()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .createHistoricTaskInstanceQuery()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .processInstanceId(processInstanceId)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .orderByHistoricActivityInstanceStartTime()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .asc()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .list();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(taskList != null &amp;amp;&amp;amp; taskList.size() &amp;gt; 0) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ArrayNode tasksJSON = new ObjectMapper().createArrayNode();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; responseJSON.put("tasks", tasksJSON);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (HistoricTaskInstance historicTaskInstance : taskList) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ObjectNode taskJSON = new ObjectMapper().createObjectNode();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; taskJSON.put("taskId", historicTaskInstance.getId());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; taskJSON.put("taskName", historicTaskInstance.getName() != null ? historicTaskInstance.getName() : "null");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; taskJSON.put("owner", historicTaskInstance.getOwner() != null ? historicTaskInstance.getOwner() : "null");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; taskJSON.put("assignee", historicTaskInstance.getAssignee() != null ? historicTaskInstance.getAssignee() : "null");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; taskJSON.put("startTime", RequestUtil.dateToString(historicTaskInstance.getStartTime()));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(historicTaskInstance.getEndTime() == null) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; taskJSON.put("completed", false);&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; taskJSON.put("completed", true);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; taskJSON.put("endTime", RequestUtil.dateToString(historicTaskInstance.getEndTime()));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; taskJSON.put("duration", historicTaskInstance.getDurationInMillis());&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; tasksJSON.add(taskJSON);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; private void addActivityList(String processInstanceId, ObjectNode responseJSON) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; List&amp;lt;HistoricActivityInstance&amp;gt; activityList = ActivitiUtil.getHistoryService()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .createHistoricActivityInstanceQuery()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .processInstanceId(processInstanceId)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .orderByHistoricActivityInstanceStartTime()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .asc()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .list();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(activityList != null &amp;amp;&amp;amp; activityList.size() &amp;gt; 0) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ArrayNode activitiesJSON = new ObjectMapper().createArrayNode();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; responseJSON.put("activities", activitiesJSON);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (HistoricActivityInstance historicActivityInstance : activityList) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ObjectNode activityJSON = new ObjectMapper().createObjectNode();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; activityJSON.put("activityId", historicActivityInstance.getActivityId());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; activityJSON.put("activityName", historicActivityInstance.getActivityName() != null ? historicActivityInstance.getActivityName() : "null");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; activityJSON.put("activityType", historicActivityInstance.getActivityType());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; activityJSON.put("startTime", RequestUtil.dateToString(historicActivityInstance.getStartTime()));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(historicActivityInstance.getEndTime() == null) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; activityJSON.put("completed", false);&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; activityJSON.put("completed", true);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; activityJSON.put("endTime", RequestUtil.dateToString(historicActivityInstance.getEndTime()));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; activityJSON.put("duration", historicActivityInstance.getDurationInMillis());&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; activitiesJSON.add(activityJSON);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; private void addVariableList(String processInstanceId, ObjectNode responseJSON) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; List&amp;lt;HistoricDetail&amp;gt; variableList = ActivitiUtil.getHistoryService()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .createHistoricDetailQuery()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .processInstanceId(processInstanceId)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .variableUpdates()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .orderByTime()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .desc()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .list();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(variableList != null &amp;amp;&amp;amp; variableList.size() &amp;gt; 0) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ArrayNode variablesJSON = new ObjectMapper().createArrayNode();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; responseJSON.put("variables", variablesJSON);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (HistoricDetail historicDetail : variableList) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HistoricVariableUpdate variableUpdate = (HistoricVariableUpdate) historicDetail;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ObjectNode variableJSON = new ObjectMapper().createObjectNode();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; variableJSON.put("variableName", variableUpdate.getVariableName());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; variableJSON.put("variableValue", variableUpdate.getValue().toString());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; variableJSON.put("variableType", variableUpdate.getVariableTypeName());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; variableJSON.put("revision", variableUpdate.getRevision());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; variableJSON.put("time", RequestUtil.dateToString(variableUpdate.getTime()));&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; variablesJSON.add(variableJSON);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;}&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;And in ActivitiRestApplication i have added the below line,&lt;/SPAN&gt;&lt;BR /&gt;&lt;STRONG&gt;router.attach("/history/processInstance/{processInstanceId}", HistoryInstanceDetailsResource.class);&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But after adding these, how add these files to the existing activiti-rest-5.1.1 jar file.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 17 Jan 2013 09:19:29 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145078#M101411</guid>
      <dc:creator>suresh13_m</dc:creator>
      <dc:date>2013-01-17T09:19:29Z</dc:date>
    </item>
    <item>
      <title>Re: New rest Service</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145079#M101412</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;i have created a new resource class for retrieve the history&amp;amp;runtime process intance info as below&lt;BR /&gt;…..&lt;BR /&gt;&lt;BR /&gt;And in ActivitiRestApplication i have added the below line,&lt;BR /&gt;&lt;STRONG&gt;router.attach("/history/processInstance/{processInstanceId}", HistoryInstanceDetailsResource.class);&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;But after adding these, how add these files to the existing activiti-rest-5.1.1 jar file.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;Would you really have these classes in core jar of activiti-rest???&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You can create the your own jar file and place it into lib directory of the activiti-rest web application (that would be same place as place of core jar activiti-rest-5.1.1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Because all files, that allocated into /lib directory are embeded into java class path, your classes would be reachable. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But you should &lt;/SPAN&gt;&lt;STRONG&gt;be careful&lt;/STRONG&gt;&lt;SPAN&gt; that your custom jar just &lt;/SPAN&gt;&lt;STRONG&gt;before &lt;/STRONG&gt;&lt;SPAN&gt;of the core jar activiti-rest in file system is, because you use the changed &lt;/SPAN&gt;&lt;BR /&gt;&lt;EM&gt;org.activiti.rest.application.ActivitiRestApplication&lt;/EM&gt;&lt;SPAN&gt; class to register your own classes. (For instance, your own jar name begins with "_" symbol)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;That problem solving is not pretty :-/, and it is assumed, that the activiti-rest jars are loaded using &lt;/SPAN&gt;&lt;A href="http://stackoverflow.com/questions/5474765/order-of-loading-jar-files-from-lib-directory" rel="nofollow noopener noreferrer"&gt;alphabetical order&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;2. The other solution would be "patch" the core activiti-rest jar file (unpack core jar, set the your own classes &amp;amp; changed ActivitiRestApplication class and pack that using i.e JAR.exe)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The both solutions are not optimal, because you must be control the ActivitiRestApplication (case 1) or just whole activiti-rest jar for changes if you wish to upgrade activiti.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;BTW @activiti core team;-)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Is the usage of the &lt;/SPAN&gt;&lt;STRONG&gt;java &lt;/STRONG&gt;&lt;SPAN&gt;registry file is &lt;/SPAN&gt;&lt;EM&gt;org.activiti.rest.application.ActivitiRestApplication&lt;/EM&gt;&lt;SPAN&gt; for the activiti-rest( &lt;/SPAN&gt;&lt;EM&gt;while the "springed" beans are used too&lt;/EM&gt;&lt;SPAN&gt;), is old artifact from older releases?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 17 Jan 2013 09:31:28 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145079#M101412</guid>
      <dc:creator>udoderk</dc:creator>
      <dc:date>2013-01-17T09:31:28Z</dc:date>
    </item>
    <item>
      <title>Re: New rest Service</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145080#M101413</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;i have tried in both the ways mentioned in the above post. When i change either the core jar or add new jar having those two classes , only get requests are working, even the existing post requests are returning 405 error.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 17 Jan 2013 10:30:07 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145080#M101413</guid>
      <dc:creator>suresh13_m</dc:creator>
      <dc:date>2013-01-17T10:30:07Z</dc:date>
    </item>
    <item>
      <title>Re: New rest Service</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145081#M101414</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;i have tried in both the ways mentioned in the above post. When i change either the core jar or add new jar having those two classes , only get requests are working, even the existing post requests are returning 405 error.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;That means that new REST Service is wrong, but not a method to add that new REST Service to "core" activiti rest (IMHO)&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 17 Jan 2013 12:23:04 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145081#M101414</guid>
      <dc:creator>udoderk</dc:creator>
      <dc:date>2013-01-17T12:23:04Z</dc:date>
    </item>
    <item>
      <title>Re: New rest Service</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145082#M101415</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hello, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; i found this great tutorial on how to create new REST service in activiti here &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://alfrescoblog.com/2014/05/24/how-to-extend-activiti-rest/" rel="nofollow noopener noreferrer"&gt;http://alfrescoblog.com/2014/05/24/how-to-extend-activiti-rest/&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 31 May 2014 18:04:22 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145082#M101415</guid>
      <dc:creator>savic_prvoslav</dc:creator>
      <dc:date>2014-05-31T18:04:22Z</dc:date>
    </item>
    <item>
      <title>Re: New rest Service</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145083#M101416</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;how can we add new rest services in 5.17 which is using spring MVC. Please can some one give an example of the same ?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 May 2015 05:33:16 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145083#M101416</guid>
      <dc:creator>solanki</dc:creator>
      <dc:date>2015-05-07T05:33:16Z</dc:date>
    </item>
    <item>
      <title>Re: New rest Service</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145084#M101417</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Check the source code. The easiest is to have the class in the same package as the one being scanned for the regular resources:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="https://github.com/Activiti/Activiti/blob/master/modules/activiti-rest/src/test/java/org/activiti/rest/DispatcherServletConfiguration.java#L25" rel="nofollow noopener noreferrer"&gt;https://github.com/Activiti/Activiti/blob/master/modules/activiti-rest/src/test/java/org/activiti/rest/DispatcherServletConfiguration.java#L25&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 May 2015 13:24:04 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/new-rest-service/m-p/145084#M101417</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2015-05-07T13:24:04Z</dc:date>
    </item>
  </channel>
</rss>

