在我刚学习软件开发时,都会接触到程序流程图。在这里我们先复习一下程序流程图
处理框、判断框、起止框、连接点、流程线、注释框等构成,结合相应的算法,构成整个程序流程图。
任何复杂的算法。都可以由顺序结构、分子结构和循环结构这三种基本结构组成
循环结构
循环结构有两种基本形态: 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工作流元素 | 说明 |
---|---|---|
Java的运行环境Jre | 流程引擎 | |
代码 | 流程定义/流程模型/流程图 | |
代码执行 | 流程执行实例 | |
启动事件 | 启始框 | |
结束任务 | 终止框 | |
用户活动 | 等待用户输入(scanf) | |
互斥网关 | 判断(if/else) | 只有一个执行路径 |
并行网关 | 多线程 | 多个执行路径 |
子流程 | 子函数(areaFunction) | |
变量num1,num2 | 变量在activiti中无需定义,可以在发起流程和用户活动处理时传入 |
上面关于activity工作流的介绍。实际上涵盖了我们实际工作中80%的业务情况。
下面我着重介绍一下用户活动。
在我们的工作流使用当中。接触最多的就是流程审批,而流程审批中,最重要的就是用户活动。
什么是用户活动呢?需要用户参与的活动,如果一个节点需要用户参与,我们需要
一.定义节点审批人方式
编号 | 方式 | 优缺点 | 举例 |
---|---|---|---|
1 | 具体人 | 简单、容易理解;当人员变动时都需要修改流程定义,对业务人员要求比较高;流程带版本,修改流程后,执行中流程还会到原审批人 | 总经理 |
2 | 单岗位单审批人 | 简单、容易理解;当人员变动时无需修改流程定义,修改流程后,执行中流程还会到新审批人,是【1】中版本的优化,推荐 | 总经理岗位 |
3 | 每个部门岗位类别单审批人 | 部门助理 | |
4 | 单岗位多审批人,需要签收,签收后任务认领到具体人 | 副总裁 | |
5 | 单岗位多审批人,会签,任意一人审批即可 | 和【3】类似,但不需要签收 | |
6 | 单岗位多审批人,会签,所有人都审批后进入下一节点 | ||
7 | 单岗位多审批人,会签,投票,比例审批人同意进入下一节点 | 【5】,【6】是【7】的特殊情况 | |
8 | 定义变量,通过外部程序传入流程 | 最灵活,满足所有情况 |
二.提供页面、按钮供审批人操作。
编号 | 方式 | 优缺点 | 举例 |
---|---|---|---|
1 | 内置页面设计器 | 业务人员可以自己设计、修改页面,适用于简单页面 | |
2 | 外置页面 | 程序员开发页面、灵活、工作量大 | |
3 | 外置页面,提供页面设计功能 | 兼具【1】,【2】优点,工作量大 |
Java Spring boot activiti前后端分离,流程审批,权限管理框架