史上最简单的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前后端分离,流程审批,权限管理框架

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值