ccflow流程自动发起功能增加,如何按指定的时间触发方式发起流程?
ccflow流程自动发起功能增加,如何按指定的时间触发方式发起流程?
---------------------------------------
关键字:ccflow wf_task 触发方式启动流程 指定流程发起时间
应用场景: 向ccflow下达一个任务在指定的时间发起指定的流程.
现在在wf_task 表中增加一个StartDT 列,此列用于说明在改流程在什么时间发起.
更详细的信息请参考驰骋工作流程引擎设计器操作说明书 3.9.3章节.
流程的自动执行包括,流程的自动发起与节点的自动执行两大部分。
下面分别介绍这两种的实现方法.
流程的自动发起.
流程的发起包含如下几种模式:
0、手工启动
默认的模式,就是手工的发起流程。
1 、指定人员按时启动
指定特定的人在特定的时间发起流程比如 zhangshan@01:01@12:01 让张三在每天的 1点零1分,与12点零1分发起此流程。
2、数据集按时启动
为流程设置一个数据源,系统按时读取这个数据源发起流程。
表达式的意思是: 让zhangshan 在每天的01:01 与12:01两个时间点执行自动启动
数据源是从开始节点表单获取.
右图是填充开始节点的主从表的sql, 两者都是一个集合,对于主表要有一个唯一的MainPK字段,以防止数据重复发起。数据源的列与主表的字段一致。
3、触发式启动
工作原理:第三方软件向特定的表(WF_Task)中写入数据,ccflow就会读取这张表来完成流程的发起,发起成功后就把这条记录设置成已经发起的状态,并把信息写入WF_Task表的Msg里面。
关于WF_Task表字段说明:
字段英文名 | 字段中文名 | 解释 |
MyPK | 主键 | 唯一的主键不要有中文名称,长度尽量短,要求全局的流程的每一条流程这个是唯一的。 |
FK_Flow | 流程编号 | 要发起的流程编号 |
Starter | 发起人 | 发起人编号 |
Paras | 字段参数 | 字段参数,格式为:@字段英文名1=字段值1@字段英文名2=字段值2比如: @StuNo=001@StuName=张三@StuAddr=山东济南 这个参数要与开始节点表单字段匹配,就是说要发起的的流程开始节点表单中要有StuNo,StuName,StuAddr 才能匹配上。 |
TaskSta | 任务状态 | 默认为0: 0=未发起,1=成功发起,2=发起失败。 |
Msg | 执行的消息 | 流程发起后的信息,成功的话就返回执行成功的信息,不成功就写入失败信息。此字段不需要程序写入值。 |
StartDT | 发起时间 | 如果为空就表示立刻发起,如果设置好发起的时间就按指定的时间发起,指定的时间不能超过分钟。时间格式为yyyy-MM-dd HH:mm 比如:2012-06-01 01:01 也可以书写成2012-06-01 |
对于要启动的流程要求:
要自动启动的流程在开始节点表单里必须要有MainPK字段,这个字段可以是隐藏的,长度根据产生的MyPK需要,增加此字段目的是避免流程启动重复。流程在启动起前就要检查一下开始节点中的MainPK字段,如果有类似的数据说明它已经发起来了,就放弃它。
设置数据集按时启动的方法
1, 在流程属性中的运行方式设置启动的顺序。
当运行方式为: 按天启动 执行内容 @01:01@02:01 表示01点:01分,与02点01分分别执行一次.
当运行方式为: 按小时启动 执行内容 @:01@:10@:20@:30@:40@:50 表示每间隔10分钟执行一次.
2,流程属性-》设置自动发起数据源,为开始表单设置数据源,(如果有从表也会让你设置从表的sql)。
主表集合中必须包含如下几个列:
Starter 发起人
MainPK 主键(唯一的主键,是为了不重复调度.)
从表数据集合要求:
RefMainPK 关联主键的值.
特别说明: 两个SQL都是查询出来的集合.
3, 在开始节点属性中增加一个MainPK隐藏字段.
这个隐藏字段是用来保证数据发起不会重复。
4, 启动调度程序.
让其按时执行。