<?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: Activiti is ineffective in China, and hopes to attract official attention. in Alfresco Forum</title>
    <link>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5259#M2581</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You're right,&amp;nbsp;here is my code.&lt;/P&gt;&lt;PRE style="color: #a9b7c6; background-color: #2b2b2b; font-size: 12.8pt;"&gt;&lt;SPAN style="color: #cc7832;"&gt;private &lt;/SPAN&gt;FlowElement &lt;SPAN style="color: #ffc66d;"&gt;findElement&lt;/SPAN&gt;(String procDefId&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;String elementId) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BpmnModel model = &lt;SPAN style="color: #9876aa;"&gt;repositoryService&lt;/SPAN&gt;.getBpmnModel(procDefId)&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Collection&amp;lt;FlowElement&amp;gt; list = model.getMainProcess().getFlowElements()&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for &lt;/SPAN&gt;(FlowElement element : list) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #cc7832;"&gt;if &lt;/SPAN&gt;(elementId.equals(element.getId())) {&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; &lt;SPAN style="color: #cc7832;"&gt;return &lt;/SPAN&gt;element&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #cc7832;"&gt;return null;&lt;BR /&gt;&lt;/SPAN&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="color: #bbb529;"&gt;@Test&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;public void &lt;/SPAN&gt;&lt;SPAN style="color: #ffc66d;"&gt;jump&lt;/SPAN&gt;() {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String currentUserTaskId = &lt;SPAN style="color: #6a8759;"&gt;"usertask3"&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;String targetUserTaskId = &lt;SPAN style="color: #6a8759;"&gt;"usertask1"&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;String procDefId = &lt;SPAN style="color: #6a8759;"&gt;"changeDept:1:2504"&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;String procInstId = &lt;SPAN style="color: #6a8759;"&gt;"5013"&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;FlowElement targetElement = findElement(procDefId&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;targetUserTaskId)&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;BpmnModel model = &lt;SPAN style="color: #9876aa;"&gt;repositoryService&lt;/SPAN&gt;.getBpmnModel(procDefId)&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Collection&amp;lt;FlowElement&amp;gt; list = model.getMainProcess().getFlowElements()&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for &lt;/SPAN&gt;(FlowElement element : list) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #cc7832;"&gt;if &lt;/SPAN&gt;(element &lt;SPAN style="color: #cc7832;"&gt;instanceof &lt;/SPAN&gt;SequenceFlow) {&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; SequenceFlow flow = (SequenceFlow) element&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if &lt;/SPAN&gt;(currentUserTaskId.equals(flow.getSourceRef())) {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flow.setTargetFlowElement(targetElement)&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;System.&lt;SPAN style="color: #9876aa;"&gt;out&lt;/SPAN&gt;.println(&lt;SPAN style="color: #9876aa;"&gt;taskService&lt;/SPAN&gt;.createTaskQuery()&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .processInstanceId(procInstId).singleResult().getName())&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #9876aa;"&gt;taskService&lt;/SPAN&gt;.complete(&lt;SPAN style="color: #9876aa;"&gt;taskService&lt;/SPAN&gt;.createTaskQuery()&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .processInstanceId(procInstId).singleResult().getId())&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;System.&lt;SPAN style="color: #9876aa;"&gt;out&lt;/SPAN&gt;.println(&lt;SPAN style="color: #9876aa;"&gt;taskService&lt;/SPAN&gt;.createTaskQuery()&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .processInstanceId(procInstId).singleResult().getName())&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&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; }&lt;BR /&gt;}&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 14 Feb 2018 16:19:51 GMT</pubDate>
    <dc:creator>stonesingsong</dc:creator>
    <dc:date>2018-02-14T16:19:51Z</dc:date>
    <item>
      <title>Activiti is ineffective in China, and hopes to attract official attention.</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5254#M2576</link>
      <description>1: how to refuse approval, back to the last node processing? Do you offer API?Start A I B I C I D I E I End IFor example, when I'm in the C link, I may refuse to approve or go back to a certain link (A, B, C) at C.The official only provided the completed task API, and did not provide the refusal of</description>
      <pubDate>Tue, 13 Feb 2018 12:54:36 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5254#M2576</guid>
      <dc:creator>hubiao</dc:creator>
      <dc:date>2018-02-13T12:54:36Z</dc:date>
    </item>
    <item>
      <title>Re: Activiti is ineffective in China, and hopes to attract official attention.</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5255#M2577</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I guess you saw&amp;nbsp;&lt;B&gt;Stone Yuan&lt;/B&gt;‌'s reply on&amp;nbsp;&lt;A href="https://migration33.stage.lithium.com/thread/235543"&gt;How can activiti 6 be rejected?&lt;/A&gt;&amp;nbsp;This kind of situation can be handled using gateways. So every outgoing flow goes into a gateway and the gateway makes the decision about which task to move back depending upon the value of the&amp;nbsp;outcome of the previous task (which will presumably be set in a variable). So each gateway will link back to every previous task. You will end up with a quite large diagram that will take a while to draw like:&lt;IMG class="image-1 jive-image" src="https://connect.hyland.com/legacyfs/online/alfresco/19265_pastedImage_1.png" style="width: 620px; height: 143px;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But if you actually have more tasks than just A,B,C,D and E then that will make the diagram even bigger and a certain point it will become impractical.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Feb 2018 14:53:46 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5255#M2577</guid>
      <dc:creator>ryandawson</dc:creator>
      <dc:date>2018-02-13T14:53:46Z</dc:date>
    </item>
    <item>
      <title>Re: Activiti is ineffective in China, and hopes to attract official attention.</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5256#M2578</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;An alternative model which could handle more tasks better might be&lt;/P&gt;&lt;P&gt;&lt;IMG class="image-1 jive-image" src="https://connect.hyland.com/legacyfs/online/alfresco/19266_pastedImage_1.png" style="width: 620px; height: 504px;" /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Feb 2018 15:01:41 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5256#M2578</guid>
      <dc:creator>ryandawson</dc:creator>
      <dc:date>2018-02-13T15:01:41Z</dc:date>
    </item>
    <item>
      <title>Re: Activiti is ineffective in China, and hopes to attract official attention.</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5257#M2579</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;First, please forgive me for my poor English.&amp;nbsp;I am trying to improve my English....haha&lt;/P&gt;&lt;P&gt;I think that the fisrt bpmn diagram is the most common and principled approach, the second bpmn diagram is a smart way to solve this problem, but some Chinese activiti user and developer think that there are too much gateways and sequence flows.&lt;/P&gt;&lt;P&gt;They&amp;nbsp;design bpmn diagram like below&lt;/P&gt;&lt;P&gt;&lt;IMG alt="" class="image-1 jive-image j-img-original" src="https://connect.hyland.com/legacyfs/online/alfresco/19283_QQ截图20180214231229.png" style="width: 620px; height: 97px;" /&gt;&lt;/P&gt;&lt;P&gt;With this bpmn diagram, we can solve this problem with BpmnModel.&lt;/P&gt;&lt;P&gt;Step 1&lt;/P&gt;&lt;P&gt;Find the SequcenceFlow which is the outgoing flow of the current&amp;nbsp;usertask&lt;/P&gt;&lt;P&gt;Step 2&lt;/P&gt;&lt;P&gt;Change the targetRefElement of the&amp;nbsp;&lt;SPAN&gt;SequcenceFlow&amp;nbsp;to the node which you want to jump&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Step 3&lt;/P&gt;&lt;P&gt;Complete the current usertask&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I wish I had successfully expressed what I meant. ...haha&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you Activiti, thank you the guys who working for Activiti.&lt;/P&gt;&lt;P&gt;Activiti is a great project, it is most Chinese developer's first choice of workflow framework.&lt;/P&gt;&lt;P&gt;I think it's not only helping us write less code, it's also a good solution of workflow.&lt;/P&gt;&lt;P&gt;So maybe the questioner is not familiar with it. It does not mean that Activiti is&amp;nbsp;ineffective in China.&lt;/P&gt;&lt;P&gt;I'm very sorry that my countrymen said this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The day after tomorrow is our Spring Festival.&amp;nbsp; Happy&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;Spring Festival to you~&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;After&amp;nbsp;&lt;SPAN&gt;Spring Festival, I plan to rebuild activiti-ui in springboot. ~~~&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #727174; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 Feb 2018 15:47:20 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5257#M2579</guid>
      <dc:creator>stonesingsong</dc:creator>
      <dc:date>2018-02-14T15:47:20Z</dc:date>
    </item>
    <item>
      <title>Re: Activiti is ineffective in China, and hopes to attract official attention.</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5258#M2580</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That makes sense - so instead of the 'Decide which task to go to' step you just build that logic into each service task and that&amp;nbsp;code within the service task must also modify the BpmnModel. I guess you look it up through the RepositoryService and modify it so that the outgoing flow points where you want it to. (I guess you are not using DynamicBpmnService like mentioned at&amp;nbsp;&lt;A href="https://community.alfresco.com/community/bpm/blog/2017/06/01/activiti-6-is-here" rel="nofollow noopener noreferrer"&gt;https://community.alfresco.com/community/bpm/blog/2017/06/01/activiti-6-is-here&lt;/A&gt;&amp;nbsp;). If you have a code snippet that could help &lt;A __default_attr="173659" __jive_macro_name="user" _jive_internal="true" data-id="173659" data-objecttype="3" data-type="person" href="https://community.alfresco.com/people/hubiao" rel="nofollow noopener noreferrer"&gt;&lt;/A&gt;&amp;nbsp;and other members.&amp;nbsp;&lt;CODE style="border: 0px; font-weight: inherit;"&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 Feb 2018 16:08:58 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5258#M2580</guid>
      <dc:creator>ryandawson</dc:creator>
      <dc:date>2018-02-14T16:08:58Z</dc:date>
    </item>
    <item>
      <title>Re: Activiti is ineffective in China, and hopes to attract official attention.</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5259#M2581</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You're right,&amp;nbsp;here is my code.&lt;/P&gt;&lt;PRE style="color: #a9b7c6; background-color: #2b2b2b; font-size: 12.8pt;"&gt;&lt;SPAN style="color: #cc7832;"&gt;private &lt;/SPAN&gt;FlowElement &lt;SPAN style="color: #ffc66d;"&gt;findElement&lt;/SPAN&gt;(String procDefId&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;String elementId) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BpmnModel model = &lt;SPAN style="color: #9876aa;"&gt;repositoryService&lt;/SPAN&gt;.getBpmnModel(procDefId)&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Collection&amp;lt;FlowElement&amp;gt; list = model.getMainProcess().getFlowElements()&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for &lt;/SPAN&gt;(FlowElement element : list) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #cc7832;"&gt;if &lt;/SPAN&gt;(elementId.equals(element.getId())) {&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; &lt;SPAN style="color: #cc7832;"&gt;return &lt;/SPAN&gt;element&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #cc7832;"&gt;return null;&lt;BR /&gt;&lt;/SPAN&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="color: #bbb529;"&gt;@Test&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;public void &lt;/SPAN&gt;&lt;SPAN style="color: #ffc66d;"&gt;jump&lt;/SPAN&gt;() {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String currentUserTaskId = &lt;SPAN style="color: #6a8759;"&gt;"usertask3"&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;String targetUserTaskId = &lt;SPAN style="color: #6a8759;"&gt;"usertask1"&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;String procDefId = &lt;SPAN style="color: #6a8759;"&gt;"changeDept:1:2504"&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;String procInstId = &lt;SPAN style="color: #6a8759;"&gt;"5013"&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;FlowElement targetElement = findElement(procDefId&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;targetUserTaskId)&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;BpmnModel model = &lt;SPAN style="color: #9876aa;"&gt;repositoryService&lt;/SPAN&gt;.getBpmnModel(procDefId)&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Collection&amp;lt;FlowElement&amp;gt; list = model.getMainProcess().getFlowElements()&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for &lt;/SPAN&gt;(FlowElement element : list) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #cc7832;"&gt;if &lt;/SPAN&gt;(element &lt;SPAN style="color: #cc7832;"&gt;instanceof &lt;/SPAN&gt;SequenceFlow) {&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; SequenceFlow flow = (SequenceFlow) element&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if &lt;/SPAN&gt;(currentUserTaskId.equals(flow.getSourceRef())) {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flow.setTargetFlowElement(targetElement)&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;System.&lt;SPAN style="color: #9876aa;"&gt;out&lt;/SPAN&gt;.println(&lt;SPAN style="color: #9876aa;"&gt;taskService&lt;/SPAN&gt;.createTaskQuery()&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .processInstanceId(procInstId).singleResult().getName())&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #9876aa;"&gt;taskService&lt;/SPAN&gt;.complete(&lt;SPAN style="color: #9876aa;"&gt;taskService&lt;/SPAN&gt;.createTaskQuery()&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .processInstanceId(procInstId).singleResult().getId())&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;System.&lt;SPAN style="color: #9876aa;"&gt;out&lt;/SPAN&gt;.println(&lt;SPAN style="color: #9876aa;"&gt;taskService&lt;/SPAN&gt;.createTaskQuery()&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .processInstanceId(procInstId).singleResult().getName())&lt;SPAN style="color: #cc7832;"&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&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; }&lt;BR /&gt;}&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 Feb 2018 16:19:51 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5259#M2581</guid>
      <dc:creator>stonesingsong</dc:creator>
      <dc:date>2018-02-14T16:19:51Z</dc:date>
    </item>
    <item>
      <title>Re: Activiti is ineffective in China, and hopes to attract official attention.</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5260#M2582</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;B&gt;Stone Yuan&lt;/B&gt;&amp;nbsp;Thanks very much for sharing this, it really helps the community. The approach is conceptually similar to&amp;nbsp;&lt;A class="link-titled" href="https://www.activiti.org/userguide/#serviceTaskExceptionSequenceFlow" title="https://www.activiti.org/userguide/#serviceTaskExceptionSequenceFlow" rel="nofollow noopener noreferrer"&gt;Activiti User Guide&lt;/A&gt;&amp;nbsp;I had a thought about how the approach sets the target element.&amp;nbsp;Do you save the change to the BpmnModel when you update the target element for the sequence flow? If you did call&amp;nbsp;&lt;SPAN style="color: #24292e; background-color: #ffffff;"&gt;repositoryService&lt;/SPAN&gt;&lt;SPAN class="" style="color: #d73a49; background-color: #ffffff;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #24292e; background-color: #ffffff;"&gt;saveModel then potentially every process instance might try to update the model when it hits the decision/jump point. If you had a lot of process instances and they were all jumping then they would all be trying to update the same database record. If the number of concurrent process instances were high this could maybe be a bit slow. It seems you are not having any problem with this. I am just asking out of curiosity. Feel free to chat on&amp;nbsp;&lt;A class="link-titled" href="https://gitter.im/Activiti/Activiti7" title="https://gitter.im/Activiti/Activiti7" rel="nofollow noopener noreferrer"&gt;Activiti/Activiti7 - Gitter&lt;/A&gt;&amp;nbsp; if that is easier for you.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 19 Feb 2018 09:14:26 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5260#M2582</guid>
      <dc:creator>ryandawson</dc:creator>
      <dc:date>2018-02-19T09:14:26Z</dc:date>
    </item>
    <item>
      <title>Re: Activiti is ineffective in China, and hopes to attract official attention.</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5261#M2583</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you for your questions.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1.I think the approach is&amp;nbsp;against the principle of Activiti, but I have to do like this with the bpmn diagram (no gateway to front node).&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2.I haven't saving the change to BpmnModel (I didn't call repositorySercie.saveModel), so it&amp;nbsp;only affects the current process instance. Specific for, it depends on the scope of SequenceFlow. In my code, the&amp;nbsp;&lt;SPAN&gt;SequenceFlow is a block variable of first if. In other words, I didn't persisting the BpmnModel to db, so other ongoing and new process instance still&amp;nbsp;follow the rule of process definition (bpmn diagram).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;3. I really didn't think about the number of concurrent process instances, I will test it. Thank you for your reminder.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 24 Feb 2018 01:20:41 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5261#M2583</guid>
      <dc:creator>stonesingsong</dc:creator>
      <dc:date>2018-02-24T01:20:41Z</dc:date>
    </item>
    <item>
      <title>Re: Activiti is ineffective in China, and hopes to attract official attention.</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5262#M2584</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you for your advice. I'll try it with the brother's code. Come back and put it back!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Feb 2018 06:49:19 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5262#M2584</guid>
      <dc:creator>hubiao</dc:creator>
      <dc:date>2018-02-26T06:49:19Z</dc:date>
    </item>
    <item>
      <title>Re: Activiti is ineffective in China, and hopes to attract official attention.</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5263#M2585</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I tested in the project, this code is invalid ah!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is your code finished?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Mar 2018 08:28:43 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5263#M2585</guid>
      <dc:creator>hubiao</dc:creator>
      <dc:date>2018-03-02T08:28:43Z</dc:date>
    </item>
    <item>
      <title>Re: Activiti is ineffective in China, and hopes to attract official attention.</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5264#M2586</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;What did you draw with this? Can you share the tools you use and the XML?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 03 Mar 2018 13:11:05 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5264#M2586</guid>
      <dc:creator>hubiao</dc:creator>
      <dc:date>2018-03-03T13:11:05Z</dc:date>
    </item>
    <item>
      <title>Re: Activiti is ineffective in China, and hopes to attract official attention.</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5265#M2587</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There is a designer in the downloadable versions of Activiti e.g. the v6 kickstart app&amp;nbsp;&lt;A class="link-titled" href="https://www.activiti.org/download-links" title="https://www.activiti.org/download-links" rel="nofollow noopener noreferrer"&gt;Download Now | Activiti.org&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 05 Mar 2018 09:00:14 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/activiti-is-ineffective-in-china-and-hopes-to-attract-official/m-p/5265#M2587</guid>
      <dc:creator>ryandawson</dc:creator>
      <dc:date>2018-03-05T09:00:14Z</dc:date>
    </item>
  </channel>
</rss>

