本节包括以下主题:
# 任务摘要
表单上的重点信息,无需打开表单,就可在【待办】列表中以摘要形式显示在标题栏位。
设置摘要
在流程空白处,鼠标右键菜单中,打开流程属性,设置标题模板
模板格式
摘要以asp.net格式定义,可以插入表单数据。
使用循环,还可以提取明细表数据。
# 条件网关
当某个流程步骤后面有多个分支,需要根据条件判断流程走向时,使用条件网关实现。
条件设置
在流程上拖放条件节点,在节点连线的属性上,选择字段、转换字段类型、运算符、比较值等设置表达式即可。
条件设置部分为C#语法。
当需要输入多个条件时,可使用 &&(与) ||(或) 运算,如:
Convert.ToDecimal(FormRootRow["总金额"])<=10000&&
Convert.ToString(FormRootRow["类型"])=="固定资产"
多路分支
一个条件节点可以分出多条路径,当多个条件成立时,仅执行第一个成立的条件。
比如当报销金额为25000时,仅执行大于1万部长审批。
缺省路径
从条件节点连出去的线上,必需设置该路径的对应条件表达式或缺省路径。
根据表达式成立与否,决定是否走对应的路径。其他路径条件不成立时,走缺省路径。
# 平行签核
多路同时审批即为平行签核。
平行签核,必需由一个分流网关开始,合流网关结束。
合流时会等待所有路径审批完成。
平行签核可以嵌套。
条件设置
分流网关后的连接线上也可以设置条件,设置条件的连接线有菱形标识◇。
分流网关执行所有条件为真的路径和未设置条件的路径,
在流程上拖放条件节点,在节点连线的属性上,选择字段、转换字段类型、运算符、比较值等设置表达式即可。
条件设置部分为C#语法。
当需要输入多个条件时,可使用 &&(与) ||(或) 运算,如:
Convert.ToDecimal(FormRootRow["总金额"])<=10000&&
Convert.ToString(FormRootRow["类型"])=="固定资产"
多路分支
同条件网关一样,分流网关后的连接线上也可以设置条件,设置条件的连接线有菱形标识◇。
不同的是,条件网关仅执行第一个条件为真的路径。分流网关执行所有条件为真的路径和未设置条件的路径,
比如当报销金额为25000时,执行大于1万部长审批和大于2万总监审批两条路径。
缺省路径
从分流网关连出去的线上,也可以设置缺省路径。
没有条件为真时,走缺省路径。
# 表单上指定处理人
可以在表单上指定处理人。
比如,任务下达流程,在表单包含处理者栏位,任务处理环节由此人负责。
配置
只需在设置处理人使用表单字段即可。
# 限时处理
可以为流程节点指定办结时间(截止日期)。
截止时间即将到达时,可催办(发送催办通知)。
截止时间已到仍未办理,可以执行自动处理或继续催办。
指定截止时间
在节点属性,超时页签,可以为流程指定截止时间。
计算截止时间时,需要用到工作日历,设置时请不要忘记。
催办
截止时间即将到达时可提前发送催办通知,可以设置催办提前量和催办间隔。
催办间隔按工作日历计算,去除节假日,不会在非工作时间发送催办通知。
逾期未处理
超时时间已到但仍未处理,可自动处理(如:自动按同意处理),也可跳转到特定关卡。
未勾选过时处理,截止时间到达后,会继续催办。
# 任务通知
当新任务到达时,处理人会收到通知。
通知渠道
系统支持以多种渠道发送通知消息。
将标题内容置空会使该类通知不启用。
个人接收通知渠道
企业以多种渠道发送通知,如邮件+短信+手机app推送,用户可以根据个人偏好选择通知接收渠道。
通知信息内容
通过设置通知模板,在运行时可动态生成通知内容。
通知模板支持:
- 设置信息格式,带出表单数据;
- 带出明细表信息;
- 支持附件
模板设置将在下一节详细介绍。
通知类型
通知类型 | 说明 |
---|---|
新任务通知 | 新任务到达时,用户接受到通知 |
知会通知 | 被别人知会时,用户接受到通知 |
退回通知 | 任务被退回时,发起人接收到通知 |
核准通知 | 任务核准时,发起人收到通知 |
拒绝通知 | 任务拒绝时,发起人收到通知 |
任务中止通知 | 运维调度时,当前正在办理的人收到通知 |
超时催办 | 限时关卡催办时,办理人接收到通知 |
人工催办 | 被人工点击催办时,审批人收到催办通知 |
以上通知类型,在系统安装时,都预设了缺省内容。
# 通知模板
通知模板设置使用asp.net语法,可生成各种格式的信息内容:
- 设置信息格式,带出表单数据;
- 带出明细表信息;
- 支持附件。
模板继承关系
在系统管理、流程属性、流程节点上均可设置通知模板,他们的继承关系如下:
系统管理->流程属性->流程节点。
模板应用规则:
- 如果节点上不另设格式,则采用流程上的设置模板;
- 如果流程上不另设格式,则采用系统上设置的模板。
插入表单数据
选择表单数据,将光标移到插入位置,按“插入”按钮即可。
添加附件
只有邮件通知能添加附件,使用时设置附件属性,选择附件存储字段即可。
# 版本控制
流程有版本控制,每一个流程实例都与版本相关。
创建新版本
流程保存时可以保存为新版本。
- 流程保存为新版本后,已发起流程还是按老版本运行;
- 新流程发起时总是使用最新版本;
修改历史流程
通常都是编辑当前活动流程,有时需要修改历史流程,如修正历史流程中的问题。
在历史流程的鼠标右键菜单中,可打开设计界面编辑流程。
# 流程迁移
流程需要从一台服务器迁移到另一台服务器。比如测试系统测试完成后的流程,需要部署到正式系统。
流程迁移通常包括:流程、表单、报表。通用数据源、服务连接、ESB数据源、ESB输出流、日历等。
每个模块的内容一旦建立都有自己唯一的id,比如,表单引用的ESB数据源、流程上引用的服务连接、日历等,在引用时记录的都是内容的id,所以迁移时要配套导出所有引用的内容一起发布,才能保证数据一一对应。
这些模块的迁移和发布步骤都是一样的,下面以流程导出和发布为例,操作流程迁移。
导出流程文件
单个流程文件的导出,选中流程右键属性导出迁移包。
批量流程文件的导出,切花到列表视图,选中多个流程文件,右键属性导出迁移包。
流程文件导出后,以文件的形式存在,文件格式为:流程迁移包_2023-05-19.pkg
发布流程文件
在正式系统部署流程时,点击发布按钮,上传在测试环境导出的流程文件。
注意:
1、发布时,若已将迁移包发布到A文件夹,下次更新时,也须在对应目录发布。
如在测试环境导出的流程文件,发布在正式环境的A文件夹,下次更新时,也须在A文件夹发布,不可以在其他文件夹发布。
2、不同类型的迁移包,如流程、表单等,发布时也需要在对应模块发布
如流程导出文件须在流程模块发布,不可以发布到表单目录等。
# 节点
节点类型
流程中最常用的节点,包含:开始、结束、人工处理、分支、并行流、事件等功能。
节点 | 图标 | 节点名称 | 描述 |
---|---|---|---|
开始 | 开始事件 | 人工发起流程 | |
消息开始事件 | 接收消息自动启动流程 | ||
定时开始事件 | 定时启动流程 | ||
条件开始事件 | 满足条件自动启动流程 | ||
信号开始事件 | 接收信号自动启动流程 | ||
中间事件 | 消息中间抛出事件 | 发送消息 | |
消息中间捕获事件 | 接收消息 | ||
定时中间捕获事件 | 等待一定时间后触发后续操作,例如定时提醒、定时作业等。 | ||
升级中间抛出事件 | 引发升级 | ||
条件中间捕获事件 | 等待条件为真后触发后续操作。 | ||
补偿中间抛出事件 | 触发补偿 | ||
信号中间抛出事件 | 发送信号 | ||
信号中间捕获事件 | 接收信号 | ||
网关 | 条件网关 | 流程分支流转 | |
分流网关 | 开启并行处理 | ||
合流网关 | 并行处理汇合点 | ||
事件网关 | 基于事件做决策,只可接定时中间捕获事件、条件中间捕获事件、信号中间捕获事件、消息中间捕获事件 | ||
任务 | 人工审批 | 最常用的审批节点,如:部长审批、经理审批 | |
调用子流程 | 发起子流程,带入数据,子流程结束可返回数据 同步子流程 – 父流程等待子流程返回 异步子流程 – 父、子流程独立运行,父流程不等待子流程返回 | ||
调用ESB | 与第三方系统集成,向第三方系统输出数据 | ||
发送邮件 | 集成邮件功能,在BPM系统向业务相关人员发送通知邮件等,可定制邮件格式、可带附件 | ||
阿里短信 | 集成阿里短信功能,在BPM系统向业务相关人员发送通知短信等 | ||
数据库插入 | 可在BPM系统或第三方数据库上运行SQL语句 | ||
数据库更新/删除 | 配置即可向目标数据库输出数据 | ||
Word生成 | 配置即可将流程表单以需要的格式,生成Word文件 | ||
Excle生成 | 配置即可将流程表单以需要的格式,生成Excel文件 | ||
Pdf生成 | 配置即可将流程表单以需要的格式,生成PDF文件 | ||
调用WebSevice | 配置即可调用WebSevice向第三方系统输出数据 | ||
调用RESTful | 配置即可调用RESTful向第三方系统输出数据 | ||
C#代码 | 直接书写C#代码,扩展流程功能,常用于输出 | ||
调用Dll | 调用库dll中的方法,dll可通过上下文(Context)访问流程信息(表单数据等) | ||
子流程 | 子流程 | 当前流程的一部分,可为一组活动创建一个范围,如:层级审批、超时等 | |
事件子流程 | 由事件触发的子流程,可以在流程级别或任何子流程级别添加事件子流程。 事件子流程可以是中断的,也可以是非中断的。 事件子流程的类型有: 消息开始事件子流程、消息开始事件子流程(非中断) 定时开始事件子流程、定时开始事件子流程(非中断) 条件开始事件子流程、条件开始事件子流程(非中断) 信号开始事件子流程、信号开始事件子流程(非中断) 升级开始事件子流程、升级开始事件子流程(非中断) 补偿开始事件子流程、错误开始事件子流程。 其中,补偿开始事件子流程,永远是不中断的。错误开始事件子流程,永远是中断的。 | ||
事物子流程 | 事务子流程可以确保子流程中的所有活动要么全部成功完成,要么全部回滚到子流程开始时的状态。 事务子流程通常用于处理需要原子性执行的业务逻辑,例如银行转账等。 | ||
子流程(缩起) | 缩起子流程可以减少流程图的复杂性,使其更容易浏览和管理。 | ||
结束 | 结束事件 | 当前执行路径结束,不会执行任何操作。 | |
消息结束事件 | 当前执行路径结束,并发送消息,和消息中间抛出事件具有相同的行为和限制。 | ||
升级结束事件 | 当前执行路径结束,并引发升级,和升级中间抛出事件具有相同的行为和限制。 | ||
错误结束事件 | 当前执行路径结束,并引发错误,此错误可由匹配的错误边界事件或错误开始事件子流程捕获。 | ||
补偿结束事件 | 当前执行路径结束,并触发补偿,和补偿中间抛出事件具有相同的行为和限制。 | ||
信号结束事件 | 当前执行路径结束,并发送信号,和信号中间抛出事件具有相同的行为和限制。 | ||
终止结束事件 | 当前执行路径结束,并结束所在范围。 终止结束事件可以在主流程中或子流程中使用,表示结束整个流程或子流程。 | ||
取消结束事件 | 当前执行路径结束,并引发取消事件,该事件由取消边界事件捕获,然后取消边界事件取消事务并触发补偿, 取消结束事件只能与事务子流程结合使用。 | ||
边界事件 | 消息边界事件 | 当执行到达消息边界事件附加到的活动(任务或子流程)时,消息边界事件将捕获具有正确名称的消息。 消息边界事件捕获到对应的消息时,会中断原来的流程路径,然后创建新的的执行路径。 | |
信号边界事件 | 当执行到达信号边界事件附加到的活动(任务或子流程)时,信号边界事件将捕获具有正确名称的信号。 信号边界事件捕获到对应的信号时,会中断原来的流程路径,然后创建新的的执行路径。 | ||
定时边界事件 | 计时器边界事件充当秒表和闹钟。当执行到达边界事件附加到的活动时,将启动计时器。 计时器边界事件触发时,会中断原来的流程路径,然后创建新的的执行路径。 | ||
升级边界事件 | 升级边界事件捕获在定义它的活动范围内引发的升级。 升级边界事件只能附加到子流程上,因为升级只能由升级中间抛出事件或升级结束事件引发。 升级边界事件捕获到对应的升级时,会中断原来的流程路径,然后创建新的的执行路径。 | ||
条件边界事件 | 当任务或子流程正在执行时,如果条件被满足,那么附加到其上的条件边界事件就会被触发。 条件边界事件触发时,会中断原来的流程路径,然后创建新的的执行路径。 | ||
错误边界事件 | 错误边界事件捕获在定义它的活动范围内引发的错误。 定义错误边界事件在子流程上最有意义,因为子流程为子流程内的所有活动创建范围。 错误边界事件捕获到对应的错误时,会中断原来的流程路径,然后创建新的的执行路径。 错误边界事件永远是中断的。 | ||
取消边界事件 | 取消边界事情只能在事务子流程中使用。 取消事务时,将触发事务子流程边界上的附加取消边界事件。 触发取消边界事件时,它首先中断当前范围内的所有活动执行。 接下来,它开始补偿事务范围内的所有活动补偿边界事件。 补偿是同步执行的,即边界事件在补偿完成之前等待离开事务。 补偿完成后,沿取消边界事件路径继续执行。 取消边界事件永远是中断的。 | ||
补偿边界事件 | 补偿边界事件可用于将补偿处理程序附加到任务或子流程。 补偿边界事件永远是不中断的。 | ||
消息边界事件(非中断) | 当执行到达消息边界事件附加到的活动(任务或子流程)时,消息边界事件将捕获具有正确名称的消息。 非中断,意思是不中断原来的流程路径,并且,会创建一个额外的执行路径,并沿消息边界路径执行。 | ||
定时边界事件(非中断) | 计时器边界事件充当秒表和闹钟。当执行到达边界事件附加到的活动时,将启动计时器。 非中断,意思是不中断原来的流程路径,并且,会创建一个额外的执行路径,并沿定时边界路径执行。 | ||
升级边界事件(非中断) | 升级边界事件捕获在定义它的活动范围内引发的升级。 升级边界事件只能附加到子流程上,因为升级只能由升级中间抛出事件或升级结束事件引发。 非中断,意思是不中断原来的流程路径,并且,会创建一个额外的执行路径,并沿升级边界路径执行。 | ||
条件边界事件(非中断) | 当任务或子流程正在执行时,如果条件被满足,那么附加到其上的条件边界事件就会被触发。 非中断,意思是不中断原来的流程路径,并且,会创建一个额外的执行路径,并沿条件边界路径执行。 | ||
信号边界事件(非中断) | 当执行到达信号边界事件附加到的活动(任务或子流程)时,信号边界事件将捕获具有正确名称的信号。 非中断,意思是不中断原来的流程路径,并且,会创建一个额外的执行路径,并沿信号边界路径执行。 |
常用节点属性
# 处理人
一个流程节点可以指定一个或多个处理人。
处理人可以是:组织内的人员、角色、表单字段上指定的人员,还可以使用自定义代码指定。
多个处理人
有时我们看到流程只要一个人处理即可,但却指定了多个处理人,此时多个处理人之间形成候补关系。
指定多个处理人适用以下场景:
- 集团中存在特例,个别部门没有经理,则由副经理处理;
- 第一处理人外出,由第二处理人处理,而不是由第一处理人指定的代理人处理。
候补处理人与代理人
候补处理人由流程指定,代表公司策略。
代理人由处理人指定,代表个人意愿。
公司策略高于个人意愿,也就是说先找第一处理人、第二处理人,当第一、第二都外出,再依次找他们的代理人。