总体说明
概述
- 一些总体上的说明
示例
大概原理:
在项目业务中,如提交申请、流程审批等操作,都会将当前业务的一些信息按一定格式
发送给对应的运行着的工作流引擎程序(通过SOCKET发送)。
引擎接收到信息命令后,通过解析,判断是否启动新流程或是审批操作,这些过程中会生成或
修改状态信息文件,这些文件是存放在引擎所处的文件夹里,下次再接收到信息命令时,引擎
就会先读取对应的状态信息文件,处理过程中同时就会去修改这些文件的状态内容,当然了,
一些信息也是会同时存放到工作流的几个相关表中,以供项目业务页面使用。
其实最终都只是操作数据库表,生成一些信息数据,然后项目业务页面根据这些信息去显示而已,
审批过程中,也是操作数据库表,只是同时会生成一些存放在文件夹的状态信息文件。
项目业务---(通过socket)----->引擎
引擎----(通过数据库表)----->项目业务
工作流引擎设置(WorkFlowEngine)
概述
- 工作流引擎的相关设置说明,工作流要正常使用,需要先启动引擎程序
示例
工作流引擎是工作流的核心处理部分,工作流的正常使用需要引擎一直启动着。
引擎是个相对独立的应用程序,可以跑在任何一台连网的有固定IP的电脑上,不一定要在发布项目的同一台电脑上,
同一台电脑可以运行多个引擎程序,不过引擎的端口要设置为不一样的,另外建议将各引擎的文件名改成不一样的,
这样从任务管理器中也可以看出运行了哪些引擎,否则看到的可能都叫 WorkflowEngine.exe ,不清楚是怎么对应的。
引擎是相对独立的,那么项目中审批时怎么去找对应的引擎程序呢?这是通过项目中的 Web.Config 文件里的设置
去对应查找的,主要是通过引擎所在电脑IP地址和引擎所用端口号来对应的,如下图:
<!--工作流文件夹--> <add key="WorkFlowRootPath" value="WorkFlow"/> <!--工作流引擎:所在的服务器IP--> <add key="EngineServer" value="172.16.4.51"/> <!--工作流引擎:所用的端口号--> <add key="EnginePort" value="2000"/>
1
2
3
4
5
6引擎设置:
这是引擎的主界面,可启动、停止引擎,可查询引擎日志、流程细目等。
点击“配置”按钮,则弹出引擎的配置界面。
这是引擎配置界面,
本机地址:引擎运行所在电脑的固定IP地址,要与项目Web.Config文件中的一致
端口:没什么限制,一般设置类似2000,注意不要和系统端口号或其他引擎端口号重复,
如果是运行在现场的服务器上,还要注意服务器安全是否有开通该端口,很多服务器
是限制了非系统的端口,所以没开通的话,工作流也不能正常使用
接收超时:一般10秒,指引擎通信处理超时时间,超过这个时间,即提示审批失败
工作目录:选择到 具体项目文件夹\WorkFlow\WorkFlowEngine\EngineFile
要选择正确的路径,否则工作流就不能正常使用
数据库设置:支持SQLServer和Oracle两种数据库
工作流流程图定义
概述
定义流程图(画流程图)
步骤用矩形框表示,流向用带有箭头的线表示,线上可设置条件
从“系统管理”模块下的“工作流管理”-“业务流程定义”菜单进入定义主页面:
按钮说明:
:新建、打开、保存 工作流
:查看XML文件内容(工作流保存后会生成两个XML文件,这里看的是引擎用的XML文件)
:另存功能,一般是相似流程时用到
:流程导入导出功能,更新时用到,已包括该流程全部信息(数据库记录、对应文件),直接导入导出即可
:设置快捷权限用户列表(会弹出设置页面,将一些常用的数据设置好保存,
以后设置每步骤的权限用户时,可直接右键选择这个快捷权限用户)
设置各步骤JS事件(会弹出设置页面,在里面设置各个步骤的一些JS事件等)
:画图的基本按钮,按顺序分别是:
移动对象:选中后,点击图上某个对象,然后按住左键拖动,即可移动该对象
画步骤矩形框:选中后,在图上空白处,按住左键拖动,即可画出步骤矩形框
画条件连线:选中后,点击相应的步骤矩形框,按住左键拖动到另外一个步骤矩形框上,即可画出这两个步骤间的条件连线
改变步骤大小:选中后,点击要调整大小的步骤矩形框,按住左键拖动,即可调整该矩形框大小
:用于对齐、横纵向调整: 按住左键拖动,将要调整的对象框住(会生成一个虚框),
然后在虚框上右键鼠标,会弹出一个调整操作的选择菜单,可进行纵向、模向对齐,宽高度设置一致等操作。
右键菜单:
新建、打开工作流
工作流信息设置:设置工作流的一些主信息,如流程描述、对应实体、提交对象等
数据集合管理:设置用来做条件判断的表字段
工作流信息设置
概述
- 置工作流的一些主信息,如流程描述、对应实体、提交对象等
示例
工作流信息设置页面:
如上图,按上到下顺序说明:
工作流ID:自动生成,工作流保存后的两个XML文件,都是以这个ID为文件名
实体名称:选择业务对应的实体表
状态字段:默认为StateCode,没有很特殊的情况下,一般都是用这个字段
流程描述:当前流程的描述说明
审批记录:设置流程记录是否可进行撤销操作(反提交),或批量审批操作,正常情况下这两个都不推荐勾选
可撤销:体现在“工作内容”中的可撤销事宜”,表示自己审批过的记录,下一步未审批时可撤销
可批量审批:体现在“工作内容”中的“待办事宜”,勾选对应的多条记录,双击弹出批量审批页面
同实体多流程区分标识:因为工作流是以实体表名来区分的,所以当同一个实体有多种流程图时,就要在这里用标识来
区分,这个内容可任意填写,最好是用中文名称,这样才能比较直观看出这个流程是做什么用的。
调用通用提交事件时,就将此内容当参数传递:WFSubmit(‘区分标识内容’)
如果一个实体就只有一个流程,那此处就不用填写,调用提交事件,也只要直接用 WFSubmit()
提交时附带备注信息:就是在“工作内容”页面,有个“备注”字段用来显示当前流程记录的一些较具体的信息,
这个信息就是通过这里来设置的,因为备注信息没有统一性,所以这里通过填写SQL语句来实现,你可以
根据需要将当前实体的几个字段拼凑起来当备注信息,如名称、月份等组合,这里可用伪变量{@RecordId}
来表示当前的表记录ID,用来过滤出当前记录,如 select cpation from table where tableId='{@RecordId}'。
设置提交对象(用户):如果是普通的流程,在提交时不用指定或手工选择特定的审批用户,这里就不用设置
可从下图的字面描述来理解,当“是否选择提交对象”打勾时,这里就生效,有多种组合选择,
1.提交时弹出用户选择窗口,“打开用户选择窗口”项打勾,
此选择窗口里可显示所有用户或只显示流程图“提交”那个步骤中所设置的用户(有
些业务要求选择时,只能让选择其中的几个特定用户,那么就在“提交”步骤矩形图中设置),
“用户选择(单选)”:控制提交用户选择是否只能选择一个
2.不弹出用户选择窗口,“打开用户选择窗口”项不打勾,
表示要自动根据当前记录去指定对应的用户,比如自动指定对应的部门经理,此时就无法用选择窗口,
就要自己写代码来处理,这里是通过 __WFGetSumbitUserList 这个JS函数来实现,该函数需返回要提交
的用户ID字符串,多个ID则以分号隔开,如“aaaid;bbbid;cccid;dddid”,该函数是写在对应的配置XML文件对应
UniqueNo里,一般写在 ToolBar节点下的Script里,如下例子:
<ToolBar UniqueNo="0"> <UserButtons> <Button Target="Grid" Name="cmd提交" Text="提交" ToolTip="提交" Type="Normal" Image="WebToolBar/16_Import.gif" DisplayMode="TextAndImage" Script="WFSubmit()"></Button> </UserButtons> <Scripts> <Script> <![CDATA[ function __WFGetSumbitUserList(){ //重载,返回提交用户ID集合,系统自动会调用执行此函数 //代码段,如调用Webservice //.... return "aaaid;bbbid;cccid"; //返回 } ]]> </Script> </Scripts> </ToolBar>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16设置流程分类:设置当前工作流的类型,需在流程分类设置业务下维护基础数据
设置当前工作流完成后启动指定流程:设置当前工作流正常结束后启动指定记录的流程,
“是否完成后启动流程”,如果选择“是”,那么当前工作流完成后引擎将自动启动指定流程;
“指定要显示业务的UniqueNo”,此处填写在工作流审批中所要展示的业务的UniqueNo标识(必须填写);
“指定流程对应的表名”,此处选择要启动记录对应的实体;
“指定流程记录ID”,此处填写要提交记录的SQL语句,语句中获取的记录Id的名称要与“指定流程对应的表面”中的实体名称一致,
例如:选取的实体名称是“SysUser”,那么语句中获取记录的Id就填写“SysUserId”;这里支持伪变量{@RecordId},
“{@RecordId}”获取的是当前流程的实体Id;
“指定流程提交人ID”,此处填写SQL语句用于获取流程提交人的SysUserId,如果不填写流程提交人引擎就默认管理员作为记录的
提交人;这里支持伪变量 “{@RecordId}”},“{@RecordId}”获取的是“结束”步骤的上一步的最后操作人的SysUserId。
注:
一般普通的流程图,只要选择好“实体名称”,填写“流程描述”就OK了,其他项除有特殊需要才去设置,
不然就不用设置了,直接用页面进去后的默认值。
工作流数据集合管理
概述
- 设置用来做条件判断的数据集合(表字段)
示例
数据集合管理页面,点“添加字段”来选择当前实体表用来做条件的字段,添加后相应的“数据类型”要选择对应的类型:
注:
一般情况下添加做条件的所有用到的字段后,维护下“数据类型后保存,即可。
如果条件比较复杂,比如表中有“单价”和“数量”字段,没有“金额”字段,而条件又要用金额来判断,
这时就要用到“自定义SQL”,这里就是填写SQL语句,返回这个金额,也要用到当前ID伪变量{@RecordId},
如 select price * count as money from table where tableid='{@RecordId}',
如果有用到其他关联表的关联字段时,一样可以用SQL语句关联出来,要注意只能返回一条记录一个字段值
任务步骤设置
概述
用来设置流程图中各任务步骤的一些信息、审批权限用户及角色、后台事件等,
可右键对应的流程图中步骤矩形框,弹出该设置页面。
示例
步骤设置页面:
“基础”,“子流程”页签:
任务名称:步骤名称描述,步骤矩形图上显示
任务类型:有“正常”和“会签”两种类型,大部分都是“正常”类型
“会签”指的是这一步骤要同时几个人都同意后,才能走到下一步,
设置成会签时,一般“通过策略”对应选择“按照比例”,“比例值”填写“100”;
“通过策略”如果选择“所有人平等”,那么会签时,就需要参与会签的所有人同意
才能走到下一步;“通过策略”如果选择“一个人持有特权”,那么会签时持有特权的人
同意,就能走到下一步,如果会签时持有特权的人弃权,那么需要计算会签的通过率来与“比例值”
进行比例,判断是否能走到下一步;“通过策略”如果选择“N个人持有特权”,那么需要在权限中设置
判定分值,根据所设置的判定分值进行计算,然后与“比例值”进行比较,大于等于比例值即通过,小于比例值
根据设置是否回退,终止流程。
允许回退:表示允许下一步骤是否可回退到本步骤来,回退时引擎根据此设置来自动判断该回退到
哪个步骤。比如:A—>B—>C—>D流程,B、C设置成不允许回退,则在D回退时,
就直接回退到A。回退指是的审批时不同意。
回退时选择步骤:设置成“是”时,表示审批过程中,点击“不同意”按钮进行回退时,
会弹出一个选择回退步骤的窗口,来跨步选择回退到的步骤。一般不常用。
同意时选择下步骤:设置成“是”时,表示在审批过程中,点击“同意”按钮,会弹出
选择下步骤的窗口,该窗口中列出的是当前步骤直接的下几个步骤(普通步骤,不是并行、子流程)。
动态指定执行人:表示当前步骤的权限用户由上步骤审批时动态指定的,
比如:A—>B—>C—>D流程,D设置成动态执行人,那么在C审批时,审批页面就
会出现“下步执行人”的选择控件,以供选择D步的审批用户,如下图:
动态生存期:如果设置成“是”,表示在生存期(小时)内如果不操作的话,流程就会被强制结束,一般设置成“否”。
增加权限用户(JS):即在审批过程中,通过JS动态添加此步骤的审批用户或动态权限用户,当“动态指定执行人”为“否”时
增加审批用户;为“是”时增加动态权限用户(用户选择窗口列表多出增加的用户)
这里是填写JS函数名,如AddNextUser(),函数返回用户ID字符串,多个ID则以分号隔开,函数需写在
JavaScript/User/User_WFlow.js用户自定义的JS文件中。比较少用到此功能。
子流程:表示主流程执行到此步骤时,自动提交运行相应子流程,
“子流程区分标识”相当于流程信息设置中的“同实体多流程区分标识”。
“子流程展示业务的Flag”用于在工作流的审批时,用来展示指定的业务,因为子流程是由工作流引擎进行提交,需要通过
所填写的Flag来获取对应的SysMappingId值,请务必填写上Flag否则会找不到所要展示的业务实体。
“子流程记录ID”处填写SQL语句,用来获取子流程对应表的记录ID,即此SQL
需返回子流程的对应记录ID值,以便自动提交该子流程的某条记录,当然了,该子流程需与当前流程有一定关系,
可以通过当前流程的记录ID去查找出来,同样需用到当前流程记录ID的伪变量 {@RecordId}。此功能也很少用到。
“子流程提交人ID”处用于填写SQL语句,用来获取指定子流程的提交人;如果此处为空,那么将默认上一步骤的操作人
作为子流程的提交人。
“权限用户”、“权限角色”、“自定义权限用户”页签:
用来设置该步骤的审批用户(并集,权限用户+权限角色+自定义权限用户所包含的用户,同时包含“增加权限用户”
处所返回的用户),即这个步骤就是这些用户来审批的。
当“基础”页签中的任务类型选择为“会签”模式,如果通过策略选择“一人持有特权”时,
那么在“权限用户”或“权限角色”页签中的“用户权限”编辑栏中指定一名用户拥有“否决权限”;
如果通过策略选择“N个人持有特权”时,那么在“权限用户”或“权限角色”页签中的请填写上
判定分值,因为此时不以用户权限作为判定,而是以判断分值的计算后是否达到所设置的“比例值”
进行判断是否通过。
注:当“动态指定执行人”设置成“是”时,“权限用户”、“权限角色”的页签名会变成
“用户(动态执行人)”、 “角色(动态执行人)”、“自定义(动态执行人)”,那么在上一步审批时下步执行人选择窗口
中就会只过滤出这里所设置的用户列表,如果要显示全部用户(不过滤),那么就应该把这里设置的
用户删除;当“基础”页签中的任务类型选择为“会签”模式时,请勿在“权限用户”、“权限角色”、“自定义权限用户”
页签中添加“管理员”用户,或者含有“管理员”的角色。
所以除了设置该步骤的审批用户外,还可能充当过滤下步执行人选择窗口的用户列表的功能。
“事件”页签:
这里主要是设置后台事件,即在审批过程中需要操作到数据库相关记录时,在此处设置调用。
此处一般是设置为“存储过程”类型(反射方法类型一般不用),表示通过执行存储过程来
操作数据库记录:
“执行类型”选择“执行后”,表示在该步骤审批完成后触发调用
“方法类型”选择“存储过程”,表示是通过执行存储过程来实现操作数据库记录
“方法名称”填写存储过程名+空格+各参数,如SP_MIS_PM_ItemDeveloping_New 'KFTJ','{@RecordId}'
其中'{@RecordId}'为伪变量,固定写法,表示当前记录ID,一般存储过程也只要传此参数就足够了。
其它的伪变量有:
{@SysUserId} 当前用户ID
{@AuditType} 审批操作类型(agree 同意,disagree 不同意, termination 终止)
备注:
一般普通流程,主要是设置“任务类型”、“动态执行人”、选择权限用户、权限角色即可。
无特殊要求,其他项均为默认值,不用设置。
条件设置
概述
- 流向线条件的设置,用“数据集合管理”里所添加的表字段来做条件
示例
如上图:红色圈起来的连线,相对较粗,表示这里有设置条件,条件的意思就是满足了所设置的表达式后
流程就会往对应的这条线走下去,如上图红色圈起来的,“开发提交”步骤的条件设置为 FlowGoOn="1",
“缺陷评估”步骤的条件设置为FlowGoOn="0",那么当前记录的FlowGoOn如果为1时,流程就会往“开发提交”
那步走,反之则往“缺陷评估”那步走。条件设置要包含所有情况,即每个分叉连线上的条件要包含所有的可能
性表达式,如果条件设置有问题,那么可能导致流程审批过程中出现“条件不满足”,流程会直接终止。
条件设置:
右击对应的步骤之间的连接线条,打开条件设置页面,用来作条件的字段,请先在“数据集合管理”
里面添加。“条件内容”可直接填写,也可通过上面的下拉框选择后添加,要注意格式,如果字段
类型为字符串,则表达式要加双引号,如下图FlowGoOn="1"。
任务步骤按钮JS设置
概述
用来设置当前流程中各步骤上各个按钮的一些信息、JS事件等,
从工具栏(带齿轮)按钮点击弹出该设置页面
示例
如上图,一个步骤对应一行数据,这里主要是设置JS事件,应用在从“工作内容”打开的审批页面里。
“页面加载事件”:审批页面加载时调用(页面onload),如设置每步骤审批页面显示不同的业务展现页面,
就可以在这里设置,调用WFSetFormUniqueNo('标识UniqueNo值')
“按钮描述”:审批页面对应的按钮上的文字描述
“可视”:审批页面对应的按钮是否显示,如有些审批页面不要终止按钮,则设置为×
“可用”:审批页面对应的按钮是否禁用
“点击前事件”:审批页面对应的按钮点击前调用,如点击前判断某些字段不能为空
“点击后事件”:审批页面对应的按钮点击后调用,如点“同意”后要去修改某个字段的值
注:
这些JS方法是写在用户自定义JS文件中,即JavaScript/User/User_WFlow.js里,不是写在具体的配置文件中。
工作流接口说明
概述
- 共有短信,移动终端,邮件3种独立的接口。工作流系统存在两个线程,一个线程定时向“接口配置”表单中短信,移动终端,邮件栏填写的Web服务发送数据,此过程首先是审批完成时向WFSmsOut表插入数据,然后定时从该表取状态为未读的数据发送,并将这些数据的状态改为已读。一个线程定时接收“接口配置”表单中短信,移动终端,邮件栏填写的Web服务返回的数据,并将这些数据存入WFSmsIn表。
参数
接口之间传递的参数必须严格按照规定的格式来写,此规定特指承载发送数据的
参数(给Web服务发送的数据,另一个参数的值为Send-发送或者Receive-接收)
或者承载接收数据的参数(访问的Web服务那返回的数据)。
示例
- 工作流引擎界面
点击“接口配置”按钮,页面呈现:
表单说明 1. 每种接口共需填写Web服务地址和方法名两项信息,Web服务地址填写的是 当前需访问的Web服务的地址,方法名是该Web服务中的方法,该方法需有两个参数,一个用来接收工作流传递的数据,一个用来区别是“发送”还是“接收”(注意:由于接收和发送调用同一方法,也就是方法名填写的方法,对方在该方法中判断接收还是发送再调用不同的方法)。如上图“短信”栏填写的信息说明访问地址是 http://172.16.4.51/web/Service1.asmx 的Web服务中方法名称为WriteLog的方法。需注意的是如果没有填写Web服务地址或者方法名,那么就不会访问该接口,如上图的移动终端栏和邮件栏。
2.当前系统验证,该栏填写的是当前系统(如 Mes)中设立的账户和密码(如账号admin 密码1),当工作流启动时,工作流会将填写的账号和密码进行验证,只有验证通过才会正常的访问。
3.定时访问填写的web服务,顾名思义,该栏中填写的是每隔一段时间访问填写的Web服务,单位是秒,默认为10秒。需注意的是必须填写整形数据,如果填写空值或者其他类型的数据,确定后将不会产生改变,系统默认为最近一次的整形数据。
4.访问系统Other文件夹下WebService的地址,填写的是在当前项目(如Mes)目录下的other文件夹中某个WebService的地址(该WebService已经存在),由于工作流系统中将该WebService里的方法固定了,所以不要需要填写方法名称。这个WebService起到中转的作用,工作流启动时将先访问这个WebService,然后通过它再去访问短信,移动终端,邮件等栏中填写的WebService,所以必须填写这一栏。 业务流程定义中的接口配置 工作流处理类型有 不处理,只发送,发送及审批3种类型,其中选择不处理类型时,将不会向工作流引擎“接口配置”表单中填写的Web服务发送数据,选择只发送类型时,只是发送数据不做审批,选择发送及审批类型时,发送数据后进行审批,返回的结果见(五**:数据参数格式**),这些类型会做为数据的一部分发送,Web服务方根据其进行相应的处理,具体的设置在系统管理-工作流管理-业务流程设定中设定,如下图:
发送内容SQL语句,有填写的时,系统会执行其语句, 生成结果会作为数据的一部分发送给“接口配置”表单中填写的Web服务。 数据参数格式 接口之间传递的参数必须严格按照规定的格式来写,此规定特指承载发送数据的 参数(给Web服务发送的数据,另一个参数的值为Send-发送或者Receive-接收) 或者承载接收数据的参数(访问的Web服务那返回的数据)。 1. 参数为XML格式。 2. 规定格式如下: 给Web服务发送的数据: <Data> <Row> <Column Name="字段名" DataType="类型"><![CDATA[具体值内容]]></Column> <Column Name="字段名" DataType="类型"><![CDATA[具体值内容]]></Column> </Row> <Row> <Column Name="字段名" DataType="类型"><![CDATA[具体值内容]]></Column> <Column Name="字段名" DataType="类型"><![CDATA[具体值内容]]></Column> </Row> </Data> Web服务那返回的数据,处理类型为“发送及审批”时:其中Row标签中的Type属性,值类型有 Y 表示审批同意,N表示审批不同意 S 表示审批中止。 <Data> <Row Type="Y"> <Column Name="字段名" DataType="类型"><![CDATA[具体值内容]]></Column> <Column Name="字段名" DataType="类型"><![CDATA[具体值内容]]></Column> </Row> <Row Type="N"> <Column Name="字段名" DataType="类型"><![CDATA[具体值内容]]></Column> <Column Name="字段名" DataType="类型"><![CDATA[具体值内容]]></Column> </Row> </Data>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
工作流前端应用(WorkFlowApply)
概述
- 工作流在项目网页中的前端使用说明,即“工作内容”审批页面或“待办事宜导航”页面
示例
一:工作流的审批页面是从“我的工作台”下的“工作内容”进入的,页面如下图:
二:也可以从“待办事宜导航”页面进入;相当于把“待办事宜”归类显示,如图:
“待办事宜”(未审核):列出需要当前用户进行审批的所有记录,双击可进入审批页面
“已办事宜”(已审核):列出当前用户已经审批过的所有记录,双击可进入审批情况查看页面
“我的申请”:列出当前用户所提交的所有记录,双击可进入审批情况查看页面
“可撤销事宜”:(反提交)列出当前用户所能撤销的所有记录,双击可进入页面进行撤销操作,
前提:对应流程图上的“可撤销”选项要打勾(不推荐反提交操作)
“受委托事宜”:列出当前用户被其他人进行委托的所有记录,双击可进入页面进行操作,
前提:在“流程委托设置”页面先设置好
审批页面:
“业务展现”:显示当前记录的信息FORM页面(是直接调用业务对应的FORM页面)
“当前操作”:填写审批意见后,点击对应的审批按钮进行审批操作,一般是
显示同意、不同意、终止三个按钮。
流程展现”:显示当前流程图的审批情况,绿色标注的,表示已审批过的步骤
“历史记录”:列出审批历史记录
“委派操作”:将当前自己要审批的流程委派给别人,让别人去代替审批(无特殊情况,一般不委派)
选择要委派给的人后,点“委派”按钮进行委派。
审批查看页面:
和“审批页面”类似,只是这里只能查看,不能修改。
注:
这里的“业务展现”是当前用户对这条流程审批的最后一个步骤对应的FORM页面,因为有些业务
的各步骤设置了不同的FORM页面,所以不同用户查看该流程的审批历史时,可能看到不同的FORM
页面,因为他们最后审批的步骤是不一样的。当然了,如果没设置各步骤为不同的FORM页面,那
么大家查看审批历史时,看到的FORM页面就都一样了。
流程记录管理
概述
- 用于特殊用户(如管理员)对流程记录的中止、清空操作
示例
比如该流程已在审批当中,由于某种原因需中止,可进入此业务,勾选相应记录进行中止操作。
又如,开发时测试工作流,可只建一条记录来进行流程测试,测试完后,清空流程审批记录后再次测试,
这样就无需新建多条测试记录,提高开发测试效率。