一、工作流是什么?
1、生活中到处都是活生生的“流”:在单位请假、从网上购物都可以看到工作流的影子。
2、工作流最早起源于生产组织和办公自动化领域,它是针对平时工作中的业务流程活动而提出的一个概念,目的是根据将工作分解成定义良好的任务或角色,根据一定的原则和过程来实施这些任务并加以监控,从而达到提高效率、控制过程、提升客户服务、增强有效管理业务流程等目的。
二、在南瓜树上如何快速绘制审批流程?
以请假管理为例,介绍如何在南瓜数上开发审批流程,一起来看看吧~
详细可参考文档:https://docs.qq.com/doc/DY1puaEFTSWdZWmV1
7.1 绘制流程图
以请假管理为例,介绍如何在南瓜数上开发审批流程
7.1.1 新增流程图
1.菜单路径:工作流管理》工作流模型》新增
点击新增按钮,进入到设计器页面
7.1.2 绘制流程图
开始节点
填写id和名称信息
发起申请节点
1.设置id和name
2.添加任务监听器
添加创建时的任务监听器
com.yabushan.activiti.tasklistener.SingleTaskListener
3.设置流出线的message
部门经理审批节点
1.设置id和name
2.添加任务监听器
com.yabushan.activiti.tasklistener.GroupTaskListener
3.设置流出线同意的message
4.设置流出线退回的message
考勤管理员审批节点
1.设置id和name
2.设置任务监听器
com.yabushan.activiti.tasklistener.GroupTaskListener
3.设置流出线同意message
由于只有一个流出线,所以可以不用设置message。勾选默认流转即可流转
结束节点
1.设置id和name
此处可以优化设置一个监听器,当任务结束时,修改业务状态
主流程名称
点击空白处,修改流程主题名称。
7.1.3 保存流程图设计
流程图设计完成后,点击左上角的保存按钮,输入流程名称。点击保存
7.2 流程图发布
7.2.1 流程图发布
流程图在7.1中绘制完成后,回到系统菜单:工作流管理》工作流模型
点击刷新,即可查看到刚刚创建的流程图,点击右侧的发布按钮,进行发布
7.2.2 生成审批配置节点
7.2.1 中对流程发布成功后,勾选刚发布的员工请假流程管理。点击生成审批配置节点按钮
7.2.2 审批节点配置
菜单路径:工作流管理》节点配置
输入实例ID,点击搜索,即可模糊搜索刚刚生成审批的节点信息
7.2.2.1 发起申请
发起申请节点,选择处理类型为:按申请人
7.2.2.2 部门经理审批
部门经理节点,处理类型选择:按角色,角色选择:部门经理
7.2.2.3 考勤管理员审批
处理类型选择:按角色,角色选择:考勤管理员
7.2.2.4 配置完成后的结果
节点处理人员配置完成后的结果如下
7.3 节点审批按钮配置
菜单路径:工作流管理》工作流模型》操作列》节点信息
点击节点信息,打开如下页面
发起申请
点击按钮信息,点击添加按钮,输入如下图信息,点击保存
部门经理审批
点击按钮信息,点击添加按钮,输入如下图信息,点击保存
考勤管理员审批
点击按钮信息,点击添加按钮,输入如下图信息,点击保存
到此完成了流程的发布配置
7.3 业务绑定流程
7.3.1 表单也业务列表的配置
按照快速入门的一到六中步骤完成请假表单的配置,详细参考一到六。下图只列出关键信息
1.表单设计
{
"widgetList": [
{
"type": "date-range",
"icon": "date-range-field",
"formItemFlag": true,
"options": {
"name": "daterange67074",
"label": "请假时间",
"labelAlign": "",
"type": "daterange",
"defaultValue": null,
"startPlaceholder": "",
"endPlaceholder": "",
"columnWidth": "200px",
"size": "",
"labelWidth": null,
"labelHidden": false,
"readonly": false,
"disabled": false,
"hidden": false,
"clearable": true,
"editable": false,
"format": "yyyy-MM-dd",
"valueFormat": "yyyy-MM-dd",
"required": false,
"requiredHint": "",
"validation": "",
"validationHint": "",
"customClass": "",
"labelIconClass": null,
"labelIconPosition": "rear",
"labelTooltip": null,
"onCreated": "",
"onMounted": "",
"onChange": "",
"onFocus": "",
"onBlur": "",
"onValidate": ""
},
"id": "daterange67074"
},
{
"type": "select",
"icon": "select-field",
"formItemFlag": true,
"options": {
"name": "select91105",
"label": "请假类型",
"labelAlign": "",
"defaultValue": "事假",
"placeholder": "",
"columnWidth": "200px",
"size": "",
"labelWidth": null,
"labelHidden": false,
"disabled": false,
"hidden": false,
"clearable": true,
"filterable": false,
"allowCreate": false,
"remote": false,
"automaticDropdown": false,
"multiple": false,
"multipleLimit": 0,
"optionItems": [
{
"label": "事假",
"value": "事假"
},
{
"label": "病假",
"value": "病假"
},
{
"label": "年假",
"value": "年假"
}
],
"required": false,
"requiredHint": "",
"validation": "",
"validationHint": "",
"customClass": "",
"labelIconClass": null,
"labelIconPosition": "rear",
"labelTooltip": null,
"onCreated": "",
"onMounted": "",
"onRemoteQuery": "",
"onChange": "",
"onFocus": "",
"onBlur": "",
"onValidate": ""
},
"id": "select91105"
},
{
"type": "textarea",
"icon": "textarea-field",
"formItemFlag": true,
"options": {
"name": "textarea94128",
"label": "请假原因",
"labelAlign": "",
"rows": 8,
"defaultValue": "",
"placeholder": "",
"columnWidth": "200px",
"size": "",
"labelWidth": null,
"labelHidden": false,
"readonly": false,
"disabled": false,
"hidden": false,
"required": true,
"requiredHint": "",
"validation": "",
"validationHint": "",
"customClass": "",
"labelIconClass": null,
"labelIconPosition": "rear",
"labelTooltip": null,
"minLength": null,
"maxLength": null,
"showWordLimit": false,
"onCreated": "",
"onMounted": "",
"onInput": "",
"onChange": "",
"onFocus": "",
"onBlur": "",
"onValidate": ""
},
"id": "textarea94128"
}
],
"formConfig": {
"modelName": "formData",
"refName": "vForm",
"rulesName": "rules",
"labelWidth": 80,
"labelPosition": "left",
"size": "",
"labelAlign": "label-left-align",
"cssCode": "",
"customClass": "",
"functions": "",
"layoutType": "PC",
"onFormCreated": "",
"onFormMounted": "",
"onFormDataChange": ""
}
}
2.业务列表设计
[
{
key: '1',
label: '姓名',
prop: 'CREATED_BY',
width: '150',
headerAlign: 'center',
align: 'right',
scope: false,
sortable: true
},
{
key: '2',
label: '请假开始时间',
prop: 'date64089',
width: '150',
headerAlign: 'center',
align: 'right',
scope: false,
sortable: true
},
{
key: '2',
label: '请假结束时间',
prop: 'date16472',
width: '150',
headerAlign: 'center',
align: 'right',
scope: false,
sortable: true
},
{
key: '2',
label: '请假类型',
prop: 'select91105',
width: '150',
headerAlign: 'center',
align: 'right',
scope: false,
sortable: true
},
{
key: '2',
label: '请假原因',
prop: 'textarea94128',
width: '150',
headerAlign: 'center',
align: 'right',
scope: false,
sortable: true
},
{key: '6',
label: '创建时间',
prop: 'CREATED_TIME',
width: '150',
headerAlign: 'center',
align: 'center',
scope: false,
sortable: true
},
{
key: '7',
label: '状态',
prop: 'status48624',
width: '150',
headerAlign: 'center',
align: 'right',
scope: false,
sortable: true
},
]
3.菜单设计
7.4 发起流程
菜单路径:OA系统》请假管理
1. 发起请假申请
点击发起申请按钮
填写请假信息,点击提交
选择审批人,点击确定即可完成发起申请
2.部门经理审批
部门经理登录系统,在工作台中会收到审批待办
点击待办打开审批页面
点击同意选择下一步处理人,点击确定。完成审批
3.考勤管理员审批
考勤管理员登录系统,在工作台会收到一条待办
点击标题打开待办页面
点击同意,填写审批意见,点击确定完成审批
4、流程结束
至此完成了整个审批的流程
思考:代码都可以实现这些动作,为什么还需要工作流呢?
代码实现的缺点:
1.代码实现这些功能的话,每次流程推进都要去判断节点和流程的流向
2.代码硬编码的话,如果流程只需要增加或者删除一个节点,就需要改动代码
3.不利于维护和扩展
4.不利于代码的重用性
工作流实现的优点:
1.程序员不需要关心流程流转,节点等细节
2.减少了很多硬性编码,维护和扩展都很方便
3.工作流都有一套完善的API.调用api就可以实现功能,开发效率高
4.一套完善的工作流还提供用户随时修改流程的功能.减少了用户因为需求分析的变动带来的工作量.