1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          activity工作流引擎

          來源:互聯網轉載 時間:2024-01-29 08:08:52

          工作流activity引擎入門案例

          1、工作流是什么? 簡單來說工作流就是將一條信息根據角色、分工、條件不同進行固定的向上傳遞,數據是按照固定的流向進行傳輸,一級一級傳遞下去,這種場景在OA , CRM / ERP中應用的比較多。通常這種操作自己本身也可以通過邏輯來實現,但是復雜度很高。而且不方便維護。所以通常都采用第三方引擎框架來實現,出了引擎本身簡化了操作以外。更重要的是維護起來很方便。

          2、activity工作流引擎 activity是一個比較簡單容易上手的工作流,主要操作分為一下步驟

          • 利用activity插件畫出需要的邏輯流程圖
          • 部署流程
          • 啟動流程
          • 迭代處理流程
          • 流程結束

          3、activity環境搭建 1、新建一個maven項目

          2、導入maven依賴

            <dependencies>     <dependency>       <groupId>org.mortbay.jetty</groupId>        <artifactId>jetty-util</artifactId>        <version>${jetty.version}</version>        <scope>provided</scope>     </dependency>      <dependency>       <groupId>org.mortbay.jetty</groupId>        <artifactId>jetty-management</artifactId>        <version>${jetty.version}</version>        <scope>provided</scope>     </dependency>      <dependency>       <groupId>org.activiti</groupId>        <artifactId>activiti-engine</artifactId>        <version>5.21.0</version>     </dependency>      <dependency>       <groupId>org.activiti</groupId>        <artifactId>activiti-spring</artifactId>        <version>5.21.0</version>     </dependency>      <dependency>       <groupId>org.codehaus.groovy</groupId>        <artifactId>groovy-all</artifactId>        <version>2.4.3</version>     </dependency>      <dependency>       <groupId>org.slf4j</groupId>        <artifactId>slf4j-api</artifactId>        <version>1.7.6</version>     </dependency>      <dependency>       <groupId>org.slf4j</groupId>        <artifactId>slf4j-jdk14</artifactId>        <version>1.7.6</version>     </dependency>      <dependency>       <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>3.8.1</version>        <scope>test</scope>     </dependency>      <dependency>       <groupId>MySQL</groupId>        <artifactId>mysql-connector-java</artifactId>        <version>5.1.38</version>     </dependency>   </dependencies>  

          3、安裝畫圖插件,本操作比較簡單, 百度能收到,建議采用離線安裝 略。。。。。。。。。。。 4、activity是一套完成的體系,包含各種操作和數據庫表都由框架本身提供,所以第一步先導入ativity需要的表結構 在resources下新建activiti.cfg.xml文件:

          <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xsi:schemaLocation="http://www.springframework.org/schema/beans                http://www.springframework.org/schema/beans/spring-beans.xsd"><bean  >        <property name="databaseSchemaUpdate" value="true"/><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti"/>        <property name="jdbcDriver" value="com.mysql.jdbc.Driver" />        <property name="jdbcUsername" value="root" />        <property name="jdbcPassword" value="root" />    </bean></beans>

          新建一個java類 【CreateTable.java】

          package com.test.activity.TestActi;import org.activiti.engine.ProcessEngine;import org.activiti.engine.ProcessEngineConfiguration;public class CreateTable {   public static void main(String args[]){       ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml")               .buildProcessEngine();       System.out.println("processEngine="+processEngine);   }}

          然后運行就會在數據庫中就會出現如下:

          有了畫圖插件和數據庫的表結構,基本環境就算搭建完成。

          4、入門案例編寫 第一步:畫流程圖。 流程圖是最核心的操作,后面的數據走向就會按流程圖進行傳遞。 這里以報銷單為例:

          畫圖時要注意,提前吧幾個模塊加載出來

          properties可以通過window—showview加載出來,右邊的為畫圖的控件, 我們一共需要4個節點 StartEvent : 啟動事件

          選中圖標拖拽到左邊空白出即可

          然后點擊右邊箭頭圖標,表示新增一個用戶任務[UserTask],

          同理在依次添加經理審批、財務審批、結束事件

          然后修改各個模塊屬性(properties):

          然后保存該流程圖, 畫圖完成。注意,箭頭路徑就是數據流向。如下圖:

          *此處注意:*如果無保存后無圖片生成,則需要開啟一個配置,然后重新保存

          5、編寫代碼,發布、啟動、查詢任務、處理任務

            /** * 部署流程 */private static ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine();     public void delployFlow(){                 Deployment deployment = processEngine.getRepositoryService()                .createDeployment()                .name("報銷流程")//流程名字                .addClasspathResource("baoxiao.bpmn")                .addClasspathResource("baoxiao.png")                .deploy();                // 存在在數據庫 act_re_procdef的DEPLOYMENT_ID_        System.out.println(deployment.getId());        System.out.println(deployment.getName());   }

          運行很簡單,自己建個main方法跑一下就OK,結果如下:

          部署后查看數據庫

          注意此處的key值: 下一步需要使用它 【此處由于是demo,所以我們就不查詢數據庫,直接取值操作查看效果

          啟動流程代碼:

                  // 啟動流程    public void flowStart(){        RuntimeService runtimeService = processEngine.getRuntimeService();        //用key啟動時按照最新的流程圖版本定義啟動  [數據庫表=act_re_procdef流程定義表中的KEY_字段]        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("員工報銷單據");     }

          運行代碼后查看數據庫act_ru_task表 紅框位置表示節點信息

          我們在查詢employe的任務:

            public void findEmployeeTask(){    //數據庫關系》》》》ID【act_re_deployment】 == ID【act_ru_execution】  == ID【act_ru_task】 ==》【ASSIGNEE_(cwh)】        String assignee = "employee";  //節點的assignee_        List<Task> taskList= processEngine.getTaskService()//獲取任務service                .createTaskQuery()//創建查詢對象                .taskAssignee(assignee)//指定查詢人                .list();                if(taskList.size()>0){            for (Task task : taskList){                System.out.println("代辦任務ID:"+task.getId());                System.out.println("代辦任務name:"+task.getName());                System.out.println("代辦任務創建時間:"+task.getCreateTime());                System.out.println("代辦任務辦理人:"+task.getAssignee());                System.out.println("流程實例ID:"+task.getProcessInstanceId());                System.out.println("執行對象ID:"+task.getExecutionId());            }        }    }

          我們查到employee下有一個5004的任務在等待處理,我們直接處理

           /**     * 處理流程     *      * @Description:     */    public void completeTask(){    // ID【act_ru_task】        String taskId = "5004";                processEngine.getTaskService().complete(taskId);//完成任務         System.out.println("完成任務,任務ID"+taskId);   }

          然后查看數據庫效果

          很明顯,流程從employee流轉到了 manager 下面, 當然這個過程自己分析一下會更清楚,,

          處理流程只需要看 ru相關的表, 這是在處理的任務信息表。 在為處理完之前不參與記錄數據,

          剩下的就是 重復操作了。。 1、獲取經理的代辦流程 – 處理流程 2、獲取財務的代辦流程 – 處理流程 – 流程結束

          這只是一個很簡單的初始demo,但基本可以搞清楚activity的運行流程和執行邏輯。以及大概會應用到那些 場景。至于后續操作,可以查看文檔或者其他資料根據需求學習。

          131683.html

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          天津港口進口車有哪幾個大商家?1.天津保稅區國際汽車城地點:天津市濱海新區天津港保稅區天寶大道86號天津保稅區國際汽車城,俗稱 "舊汽車城 ",成立于2002年。是2015年商務部授權的天津市首批5家平行進口汽車試點平臺之一,總面積約5.5萬平方米,總投資1億元。是歷史最悠久的平行進口汽車城。一般懂貿易的人說天津港汽車城,百分之八十都是指這里,保稅區國際汽車城的位置也是最落后的,無論從北門還是西門...

          qq群投票怎么看誰沒有投?1.打開 group,登錄您的帳戶并選擇聯系人,然后在聯系人中選擇您的群組。2.進入你建的群后,點擊右上角兩個小人標志的圖標。進入群組設置。3.進入群組管理后,選擇群組投票功能選項。你發起了這里所有的投票。4.找到您想要查看投票結果的投票選項,點擊查看投票結果。5.在這個投票選項中,您可以看到誰投了票以及每個選項獲得了多少票。6.單擊每個選項,您可以在此處看到誰投票支持該...

          減肥晚餐吃什么?第一種主食應該是雜糧,或者全麥面包或者一些塊根類蔬菜,比如土豆、玉米芯或者一些山藥、胡蘿卜,再加上一些優質蛋白質。其次,還有一些像深海魚或者新鮮的普通魚蝦之類的東西,可以提供優質蛋白質,保證肌肉蛋白質的來源,提高人體的代謝率。最后,如果想增加飽腹感,可以吃一些根類蔬菜,包括葉類蔬菜和瓜類,這樣既有飽腹感,又能減肥。減肥晚餐吃什么?減肥的時候晚飯吃什么好?1.豆子豆子能讓你有飽腹感。...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>