<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                給一個任務分配負責人可以采用如下3種方式進行分配。 [TOC] # 1. 固定分配 ![](https://img.kancloud.cn/c1/8b/c18b1c7c3b34d5cc4a8b372f10bf1e57_1292x441.png) # 2. UEL表達式分配 UEL 表達式是 java EE6 規范的一部分, UEL(Unified Expression Language)即 統一表達式語言, activiti 支持兩個 UEL 表達式: UEL-value 和 UEL-method。 **1. UEL-value** :-: ![](https://img.kancloud.cn/57/5b/575b5d43342f7728065cfcbe5c5723da_1212x408.png) 寫法一 ![](https://img.kancloud.cn/95/73/957325f3731860b695b543c01ddf4737_1238x427.png) 寫法二 **2. UEL-method** ![](https://img.kancloud.cn/50/a3/50a33917a2a762f8611809730d5f371f_1304x412.png) **3. UEL-value與UEL-method配合使用** ![](https://img.kancloud.cn/fd/67/fd67ee21dc6c3374f9bdf73785ac8302_1410x431.png) **4. 其他** 表達式支持解析基礎類型、 bean、 list、 array 和 map,也可作為條件判斷。 ``` ${order.price > 100 && order.price < 250} ``` <br/> 需要注意:由于使用了表達式分配,必須保證在任務執行過程表達式執行成功,比如:某個任務使用了表達式`${order.price > 100 && order.price < 250}`,當執行該任務時必須保證 order 在流程變量中存在,否則 activiti 異常。 <br/> 下面演示UEL-value的使用,其他的也是一樣的道理,步驟如下: **1. 定義流程變量** ![](https://img.kancloud.cn/9e/20/9e20c3e02ba15956df1a59c0ed09ee7b_1157x172.png) **2. 設置流程變量** ```java /** * 測試 使用uel 設置負責人 */ public class TestAssigneeUel { /** * 流程部署 */ @Test public void testDeployment() { //1、創建ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2、獲取RepositoryServcie RepositoryService repositoryService = processEngine.getRepositoryService(); //3、使用service進行流程的部署,定義一個流程的名字,把bpmn和png部署到數據中 Deployment deploy = repositoryService.createDeployment() .name("出差申請流程") .addClasspathResource("bpmn-02/evection.bpmn") .addClasspathResource("bpmn-02/image/evection.png") .deploy(); //4、輸出部署信息 System.out.println("流程部署id=" + deploy.getId()); System.out.println("流程部署名字=" + deploy.getName()); } //啟動流程創建流程實例 @Test public void startAssigneeUel() { //獲取流程引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //獲取RunTimeService RuntimeService runtimeService = processEngine.getRuntimeService(); //設定assignee的值,用來替換uel表達式 Map<String, Object> assigneeMap = new HashMap<String, Object>(); assigneeMap.put("assignee0", "張三"); assigneeMap.put("assignee1", "李經理"); assigneeMap.put("assignee2", "王總經理"); assigneeMap.put("assignee3", "趙財務"); //啟動流程實例 runtimeService.startProcessInstanceByKey("myEvection", assigneeMap); } } ``` ```sql #設置的流程變量如下 mysql> select * from act_ru_variable; +------+------+--------+-----------+---------------+---------------+----------+---------------+---------+-------+----------+--------+ | ID_ | REV_ | TYPE_ | NAME_ | EXECUTION_ID_ | PROC_INST_ID_ | TASK_ID_ | BYTEARRAY_ID_ | DOUBLE_ | LONG_ | TEXT_ | TEXT2_ | +------+------+--------+-----------+---------------+---------------+----------+---------------+---------+-------+----------+--------+ | 2502 | 1 | string | assignee3 | 2501 | 2501 | NULL | NULL | NULL | NULL | 趙財務 | NULL | | 2503 | 1 | string | assignee0 | 2501 | 2501 | NULL | NULL | NULL | NULL | 張三 | NULL | | 2504 | 1 | string | assignee2 | 2501 | 2501 | NULL | NULL | NULL | NULL | 王總經理 | NULL | | 2505 | 1 | string | assignee1 | 2501 | 2501 | NULL | NULL | NULL | NULL | 李經理 | NULL | +------+------+--------+-----------+---------------+---------------+----------+---------------+---------+-------+----------+--------+ ``` # 3. 監聽器分配 使用監聽器的方式來指定負責人,那么在流程設計時就不需要指定assignee。 任務監聽器是發生對應的任務相關事件時執行自定義 java 邏輯或表達式。 <br/> 使用監聽器分配負責人的步驟如下: **1. 指定監聽器屬性** :-: ![](https://img.kancloud.cn/58/db/58dbf83d53243532bc0884038d25e274_410x161.png) ![](https://img.kancloud.cn/ef/bc/efbc4e9e391e2ab24a116ada37f87bbb_1195x135.png) ``` Event可選值: Create:任務創建后觸發 Assignment:任務分配后觸發 Delete:任務完成后觸發 All:所有事件發生都觸發 Type可選值: Class Expression Delegate Expression ``` 我就不用上面的圖形化操作了,直接在XML中指定。 ```xml ... <userTask activiti:exclusive="true" id="_4" name="創建出差申請單"> <extensionElements> <!-- event=all,class就是指定的監聽器 --> <activiti:taskListener class="com.itheima.demo.listener.MyTaskListener" event="all" /> </extensionElements> </userTask> <userTask activiti:exclusive="true" id="_5" name="總經理審批"> <extensionElements> <activiti:taskListener class="com.itheima.demo.listener.MyTaskListener" event="all" /> </extensionElements> </userTask> ... ``` **2. 定義監聽器** ```java public class MyTaskListener implements TaskListener { @Override public void notify(DelegateTask delegateTask) { //判斷當前的任務 是 創建出差申請單 并且 是 create事件 if ("創建出差申請單".equals(delegateTask.getName()) && "create".equals(delegateTask.getEventName())) { delegateTask.setAssignee("張三"); } } } ``` **3. 測試** ```java public class TestListener { /** * 1. 先進行流程部署 */ @Test public void testDeployment() { //1、創建ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2、獲取RepositoryServcie RepositoryService repositoryService = processEngine.getRepositoryService(); //3、使用service進行流程的部署,定義一個流程的名字,把bpmn和png部署到數據中 Deployment deploy = repositoryService.createDeployment() .name("測試監聽器") .addClasspathResource("bpmn/demo-listen.bpmn") .deploy(); //4、輸出部署信息 System.out.println("流程部署id=" + deploy.getId()); System.out.println("流程部署名字=" + deploy.getName()); } /** * 2. 啟動流程,創建流程實例 */ @Test public void startDemoListener() { //獲取流程引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //獲取RunTimeService RuntimeService runtimeService = processEngine.getRuntimeService(); //啟動流程實例 runtimeService.startProcessInstanceByKey("testListener"); } } ``` ```sql # 創建出差申請單這個節點就會分配一個負責人為張三 mysql> select * from act_ru_task; +------+------+---------------+---------------+------------------+----------------+-----------------+--------------+-----------... | ID_ | REV_ | EXECUTION_ID_ | PROC_INST_ID_ | PROC_DEF_ID_ | NAME_ | PARENT_TASK_ID_ | DESCRIPTION_ | TASK_D... +------+------+---------------+---------------+------------------+----------------+-----------------+--------------+-----------... | 5005 | 1 | 5002 | 5001 | testListener:1:3 | 創建出差申請單 | NULL | NULL | _4 | NULL | 張三 | ... +------+------+---------------+---------------+------------------+----------------+-----------------+--------------+-----------... ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看