亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

activiti之流程變量

發布時間:2020-06-19 06:27:45 來源:網絡 閱讀:1300 作者:亦輕塵 欄目:軟件技術

所謂的流程變量,大概也就是和咱們業務相關的數據,例如我要請假,那我得知道是誰在請假請假人是誰,也就是我要知道activiti的實體和咱們業務的javaBean如何關聯起來。

       下邊我們先看一下和流程變量的數據庫表都有哪些,當然我們自己建的表的不說了,都是流程變量。哈哈。

       act_ru_task(正在執行的任務表)和act_hi_taskinst(正在執行的任務表)

       主要記錄了正在執行的任務名稱,流程實例ID,流程定義DI,任務的key,和流程變量信息。

  activiti之流程變量

       activiti之流程變量

          歷史任務表記錄的信息和正在執行的任務表信息都一樣,區別就在于一個是全部的信息,一個事正在執行的任務相關信息。

       act_hi_comment

      因為是多用于對業務的操作,這個表主要記錄了一些不同用于對同一個事件不同的看法,以方便其他用戶做參考。例如請假,項目經理一說:我的員工老師加班,就得給家,主任也就直接給了。對吧。

     activiti之流程變量

      act_ru_execute(正在執行的實例表)注意business_key,這個字段是我們自定義的,我的方法就是實例 + “.” + "業務ID"

activiti之流程變量

      act_ru_variable(正在執行的 流程定義表信息)

     activiti之流程變量

       好的,activiti提供的表有流程變量的就是這些表了,既然有了這些表,那么我們看一下這些表在我們業務實現的時候都是如何來運用的。下邊我通過兩個實例,一個是我在畫流程圖是寫好流程實例,一個是運用javaBean來實現。

       簡單實例

      部署并啟動流程實例

[java] view plain copy

  1. ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();  

  2.   

  3. /**部署流程定義從(inputStream)*/  

  4. @Test  

  5. public void deploymentProcessDefinition_input(){  

  6.     InputStream inputStreamBpmn = this.getClass().getResourceAsStream("/diagrams/porcessVariables.bpmn");  

  7.     InputStream inputStreamPng = this.getClass().getResourceAsStream("/diagrams/porcessVariables.png");  

  8.     Deployment deployment = processEngine.getRepositoryService()  //用于流程定義和部署相關對象的Service  

  9.                     .createDeployment()   //創建一個部署對象  

  10.                     .name("hellworld部門程序")  

  11.                     .addInputStream("porcessVariables.bpmn", inputStreamBpmn) //使用資源名稱和輸入流(與資源文件的名稱要一直)  

  12.                     .addInputStream("porcessVariables.png", inputStreamPng)  

  13.                     .deploy();  

  14.       

  15.     System.out.println("deployment" + deployment.getId());   //1  

  16.     System.out.println("deployment" + deployment.getName());//部門程序  

  17.   

  18. }  

  19.   

  20. @Test  

  21. public void startProcessInstance() {  

  22.     //流程定義的key  

  23.     String processInstenceKey = "processVariables";  

  24.     ProcessInstance pi = processEngine.getRuntimeService() //與正在執行的流程實例和執行對象相關的service  

  25.             .startProcessInstanceByKey(processInstenceKey); //使用流程定義的key來啟動流程實例helloworld.bpmn的id,使用key啟動,默認用最新的版本啟動  

  26.     System.out.println("流程實例id:" + pi.getId());  //流程實例id   

  27.     System.out.println("流程定義id:" + pi.getProcessDefinitionId());   //流程定義ID helloworld:1:4  

  28.       

  29. }  

       當我們啟動以后是沒有流程變量的,但是接下來我們就要設置了,如果我們在我們話流程圖的時候設置好了的話,例如在單擊bpmn中的某一個任務,選擇Main config,然后在Assign這寫上”張三“,那么我們就要啟動張三的的業務流程的話,則需要如下代碼來這是:

[java] view plain copy

  1. <pre name="code" class="java">@Test  

  2.     public void setVariables(){  

  3.         String taskId = "2004";  

  4.         TaskService taskService = processEngine.getTaskService();  

  5.         taskService.setVariableLocal(taskId, "請假天數"3);   //與任務ID綁定  

  6.             taskService.setVariable(taskId, "請假日期"new Date());  

  7.         taskService.setVariable(taskId, "請假原因""回家看親");  

  8.           

  9.         System.out.println("設置成功了");  

  10.     }  

       而上邊代碼的taskId就是實例啟動以后的當前正在執行的任務ID,然后我們去act_ru_variable,act_ru_task等表中都能看到張三的這個名字,但是這樣是可以實現,但是我們在實際運用中卻都不會這樣用,既然是面向對象,我們就應該這樣。

      

[java] view plain copy

  1. public class Person implements Serializable {  

  2.   

  3.     /** 

  4.      *  

  5.      */  

  6.     private static final long serialVersionUID = 1L;  

  7.     private Integer id;  

  8.     private String name;  

  9.     public String getName()  {  

  10.         return name;  

  11.     }  

  12.     public Integer getId() {  

  13.         return id;  

  14.     }  

  15.     public void setId(Integer id) {  

  16.         this.id = id;  

  17.     }  

  18.     public void setName(String name) {  

  19.         this.name = name;  

  20.     }  

  21. }  

 

[java] view plain copy

  1. @Test  

  2.     public void setVariables(){  

  3.         String taskId = "2004";  

  4.         TaskService taskService = processEngine.getTaskService();  

  5.         /**使用javaBean*/  

  6.         Person p = new Person();  

  7.         p.setId(20);  

  8.         p.setName("menghaibintest");  

  9.         taskService.setVariable(taskId, "人員信息", p);  

  10.         System.out.println("設置成功了");  

  11.     }  

  12.       


      看一下效果顯示
    
activiti之流程變量

       那么我們獲取一下吧

      

[java] view plain copy

  1. /** 

  2.      * 獲取流程變量 

  3.      */  

  4.     @Test  

  5.     public void getVariables(){  

  6.         TaskService taskService = processEngine.getTaskService();  

  7.         String taskId = "404";  

  8.         Person p = (Person)taskService.getVariable(taskId, "人員信息");  

  9.         System.out.println("id:" + p.getId());  

  10.         System.out.println("name" + p.getName());  

  11.     }  

       當然你可能覺得這樣還是不夠友好,我想把我的業務和工作流的表區分開來,只用主外鍵來關聯,那么下篇博客我來為大家呈現一種耦合性最低的方法。

      簡單總結一下就是既然要設置好流程變量,那么就要知道我們的流程變量在數據庫中表的位置,和在工作流中如何設置。既然是面向對象,我們就不應該再去使用一個一個設置的方式。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沙河市| 花莲市| 晋江市| 岑巩县| 宁明县| 苍梧县| 沾益县| 玉山县| 平阳县| 红桥区| 新乡市| 绥滨县| 申扎县| 扬州市| 渝北区| 丰台区| 获嘉县| 赤水市| 南投县| 邢台市| 连江县| 庆云县| 高安市| 徐闻县| 莒南县| 阿城市| 开原市| 赤城县| 屯门区| 泸水县| 天等县| 将乐县| 门头沟区| 师宗县| 玉林市| 闽侯县| 宿迁市| 湾仔区| 苍梧县| 孟村| 泰顺县|