史上最簡單的activiti工作流入門教程,還看不懂你打我。

什麼是工作流

在我剛學習軟件開發時,都會接觸到程序流程圖。在這裏我們先複習一下程序流程圖

處理框、判斷框、起止框、連接點、流程線、註釋框等構成,結合相應的算法,構成整個程序流程圖。
在這裏插入圖片描述
任何複雜的算法。都可以由順序結構、分子結構和循環結構這三種基本結構組成

  • 順序結構
    順序結構是簡單的線性結構,各框按順序執行。其流程圖的基本形態如圖所示,語句的執行順序爲
    在這裏插入圖片描述

  • 選擇(分支)結構
    這種結構是對某個給定條件進行判斷,條件爲真或假時分別執行不同的框的內容。其基本形狀有兩種
    在這裏插入圖片描述

  • 循環結構
    循環結構有兩種基本形態: while型循環和do - while型循環。a. while 型循環:其執行序列爲:當條件爲真時,反覆執行A,一旦條件爲假,跳出循環,執行循環緊後的語句。b. do-while型循環:執行序列爲:首先執行A,再判斷條件,條件爲真時,一直循環執行A,一旦條件爲假,結束循環,執行循環緊後的下一條語句
    在這裏插入圖片描述

  • 實例分析
    計算長方形面積的問題:
    可分爲以下幾個步驟:
    (1)設置num1和num2兩個變量,接收用戶輸入的長度和寬度,並存儲到num1和num2兩個變量;
    (2)判斷num1和num2是否大於0,如果大於0,繼續下一個步驟,否則提示用戶長度和寬度輸入錯誤,算法結束;
    (3)計算num1和num2的乘積,並將乘積結果存儲到result變量;
    (4)顯示result變量的值到屏幕。
    其計算流程圖爲:

在這裏插入圖片描述
代碼如下:

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.println("請輸入長方形的長:");
        int num1 = sc.nextInt();

        System.out.println("請輸入長方形的寬:");
        int  num2 =  sc.nextInt();

        if(num1 == 0 || num2 ==0){
            System.out.println("長方形長,寬必須大於0");
        }else{
            int result = areaFunction(num1,num2);
            System.out.println("長方形面積是"+result);
        }
    }

    public static  int areaFunction(int num1,int num2){
        return num1 * num2;
    }
}

我們總結下程序流程圖,它包含一個開始節點,多箇中間處理結點,多個結束節點。

處理節點可以是等待用戶輸入(scanf),實際處理(areaFunction),判斷(if/else),
輸出(println),變量(num1,num2,result)。

等待用戶輸入是和外部的交互,輸出是告訴外部處理結果。
num1、num2是用戶外部的輸入變量,result是中間變量

上面的代碼定義了邏輯,我們可以執行代碼,根據輸入變量(num1,num2)會得到不同的結果

講了這麼多程序流程圖,他和工作流什麼關係呢?我認爲實際上,工作流是一種特殊的程序流程圖

Activiti工作流

我這裏我就不介紹工作流的書面定義,它只考慮了嚴謹性,很難理解
現在我們使用activiti工作流實現一下長方形面積求和算法

在這裏插入圖片描述
下面是activiti工作流和程序結構流程圖的對比

程序結構流程圖元素 activiti工作流元素 說明
Java的運行環境Jre 流程引擎
代碼 流程定義/流程模型/流程圖
代碼執行 流程執行實例
啓動事件 啓始框
結束任務 終止框
用戶活動 等待用戶輸入(scanf)
互斥網關 判斷(if/else) 只有一個執行路徑
並行網關 多線程 多個執行路徑
子流程 子函數(areaFunction)
變量num1,num2 變量在activiti中無需定義,可以在發起流程和用戶活動處理時傳入

上面關於activity工作流的介紹。實際上涵蓋了我們實際工作中80%的業務情況。

下面我着重介紹一下用戶活動。
在我們的工作流使用當中。接觸最多的就是流程審批,而流程審批中,最重要的就是用戶活動。
什麼是用戶活動呢?需要用戶參與的活動,如果一個節點需要用戶參與,我們需要

  1. 定義節點審批人
  2. 提供頁面、按鈕供審批人操作
  3. 根據審批人操作驅動流程執行

一.定義節點審批人方式

編號 方式 優缺點 舉例
1 具體人 簡單、容易理解;當人員變動時都需要修改流程定義,對業務人員要求比較高;流程帶版本,修改流程後,執行中流程還會到原審批人 總經理
2 單崗位單審批人 簡單、容易理解;當人員變動時無需修改流程定義,修改流程後,執行中流程還會到新審批人,是【1】中版本的優化,推薦 總經理崗位
3 每個部門崗位類別單審批人 部門助理
4 單崗位多審批人,需要簽收,簽收後任務認領到具體人 副總裁
5 單崗位多審批人,會籤,任意一人審批即可 和【3】類似,但不需要簽收
6 單崗位多審批人,會籤,所有人都審批後進入下一節點
7 單崗位多審批人,會籤,投票,比例審批人同意進入下一節點 【5】,【6】是【7】的特殊情況
8 定義變量,通過外部程序傳入流程 最靈活,滿足所有情況

二.提供頁面、按鈕供審批人操作。

編號 方式 優缺點 舉例
1 內置頁面設計器 業務人員可以自己設計、修改頁面,適用於簡單頁面
2 外置頁面 程序員開發頁面、靈活、工作量大
3 外置頁面,提供頁面設計功能 兼具【1】,【2】優點,工作量大
  • 用戶活動舉例

在這裏插入圖片描述
在這裏插入圖片描述

  • 服務活動舉例在這裏插入圖片描述

標題更多內容可參考我開發的

Java Spring boot activiti前後端分離,流程審批,權限管理框架

發佈了5 篇原創文章 · 獲贊 17 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章