
关于工作流
工作流定义为按业务流程组成的活动序列,例如ECN审批流程。工作流一般由分支和并行活动组成,也可以嵌套。在Innovator中,工作流图代表可能多次重复运行的业务流程模板。工作流图的实例称为工作流过程。工作流过程跟踪实际的参与者,流程中的对象实例以及审批信息。工作流保障业务流程的所有步骤有序,重复执行。
下面我们看一下工作流图并了解它不同的组件。下图的窗体分为三个部分。顶部是工作流的图形化设计工具,也可叫做工作流图表,它显示了活动模板和关联的工作流路径。中间部分包含图表中选中对象的属性集。如果图表中没有对象被选中,将显示工作流图自身的属性集。底部是图表选中组件的页签信息。
如上所述,一个工作流图由活动和路径组成。每一个活动表示必须进行的工作,它包含任务列表、任务的指派人以及邮件通知、变量(如活动的工时)等,它们都在活动中存储和跟踪。工作流中的活动也有行为属性:是否必需用户交互;是否可被拒绝或转发;是否需要全部表决、是否需要完成所有输入等。路径也有行为属性,包括是否为默认路径,和一票制路径。这些属性对工作流的影响将在下面的示例中进行详细的论述。
当一个活动激活时,活动的指派人(一个或多个人),都将接收到通知,并且出现在“我的任务”中。指派人打开活动完成表单,活动完成表单将引导他们完成一系列任务和与任务相关的必须被完成的其他活动,并且,指派人可以选择或投票表明退出活动的路径。根据这些决议指向的下一个活动将被激活。
创建工作流
创建工作流图包括创建活动和连接活动的路径。下面您将学习如何打开一个新的工作流图窗体,并在上面创建活动和路径。
打开新的工作流程图窗体
1. 点击TOC下的系统管理文件夹,选择工作流,点击工具栏“新建”图标,将弹出新建工作流窗体:
2. 以下是工作流图的主要属性
a.名称-工作流图的名称
b.描述-工作流图的描述
c.流程所有者-流程的责任身份,通常会是组
3. 工作流程图本身有两个标签
a. 节点-这个标签页列出了流程图中所有的活动以及部分属性。创建、删除、修改活动都可通过图形化设计工具。这个标签页显示概要信息 。
b. 流程变量-流程图的全局变量列表。通过这些变量可以在工作流阶段被访问和修改。
创建新的活动或节点
1. 右键点击流程图区域,选择在弹出菜单中选择“新增活动”。一个新的节点将放置在流程图中,并且自动被选中;
2. 填写属性和流程活动中所描述标签页。
创建新的工作流路径
1. 右键点击你想开始创建路径的活动;
2. 右键弹出菜单中选择新增路径,将路径拉拽到结束的活动上并点击鼠标;
3. 这两个活动通过路径连接在一起。点击路径,可以发现底部的页签有所变化;
4. 填写属性和流程路径的标签页内容。
工作流活动
工作流活动是由属性和页签共同描述 。当创建新的活动时,将显示以下窗体,中间部分显示属性,底部显示页签。
活动属性
下表为活动属性的描述
性名 |
描述 |
名称 |
活动的名称 |
标签 |
用于多语言设置,活动的显示名。详见国际化 |
转发至 |
因活动超期或者其他原因,需要转发的人员。如果这里没有指定人员,将上报到流程主人,如果工作流没有设定流程主人,那将上报到工作流程图的创建者那里 |
消息 |
活动的说明 |
预期时间 |
完成工作所需的时间。活动的截止日期等于预计天数加上活动激活时的日期 |
超期时间 |
截止日期之后过了超时日期,将上报 |
提醒间隔 |
在活动的截止日期达到前发送提醒消息的间隔时间。如果提醒次数为3,提醒间隔为1。那么提醒消息将与截止日期前2天发送一次,截止日期前1天发送1次,截止日期当天发送一次。
|
提醒次数 |
提醒消息发送的次数。预计持续天数必须大于提醒次数*持续间隔 |
子流程 |
工作流程图也可以做为一个子流程。只有当子流程完成后这个活动才算是真正完成。包含有子流程的活动的退出路径一般都是标示为默认路径 |
图标 |
在图形化工具中活动的显示图标 |
管理者 |
当工作流程实例化之后,这个指定的身份可以对活动做更改。例如,你正在处理的一个PR将由另外一个人处理,这时候可以通过活动的管理者打开PR对象,选择“查看”—〉工作流调出这个工作流程(选中的PR的工作流实例),可以重新指定工作责任人 |
角色 |
这个属性用于当活动的管理者对工作流实例进行调整时。角色是活动管理者选择责任人时个人帐号范围的组合。如果选择的责任人不在这个指定的角色组中,系统将报错。 |
起始节点 |
当工作流程启动后,将进入起始节点 |
结束节点 |
结束节点完成后,整个流程将结束掉 |
自动节点 |
是不需要用户参与的一种活动。例如,如果起始节点是被标示为自动化节点,且起始活动的退出路径定义为默认的话,将自动进入第二个节点。如果某一个活动包含有子流程,那么这个活动也要标示为自动,并且也需要有默认的退出路径。 |
可拒绝 |
允许责任人拒绝这个活动要求,并且自动上报。上报的通道是:上报给责任人,上报给活动的上报人,上报给流程的主人或创建者。当活动被拒绝时,Innovator将自动上报给相应人员 |
可委托 |
允许责任人将工作转交给另一个人处理 |
合并委托 |
当选中“合并委托”选项,那么此活动可以对同一个身份做多次委托。 合并委托 =未选中,强制要求参与者下的每个委托人投票一次。合并委托 = 选中 ,允许委托人投票一次,这一次将被记入所有委托的统计权重中,特别说明: § 合并委托 = 选中: 参与者投票前, 将收到另一个委托任务。仍然只能投票一次,统计所有委托任务的总权重。 § 合并委托 = 不选中: 参与者投票后,将收到另一个委托任务。这个新任务有相同的投票选项,并且新任务的投票权重将累加到委托权重中。这个新代理任务实际不会在“我的任务”中出现,投票将自动发生。 |
等待所有输入 |
当所有的输入路径都完成了,才激活活动。如果没有选择此选项,那么只需要有一个输入路径完成,活动就被激活。 |
等待所有表决 |
所有的责任人都表决后,活动才能结束。很多时候,在所有的表决提交之前表决的结果已经很清楚了,选择这个选项,是为了强制性的保障所有的表决都提交了 |
Activity Tabs活动标签
下面是工作流活动的页签清单
1. 分派页签是用于显示活动的指派人。当指派人完成活动后,下一个活动将开始。下面是一个样例,活动“Analyze and sort”有两个退出路径—测试数据和拒绝数据。当活动“Analyze and sort”完成时,活动的指派人人将从“测试数据”和“拒绝数据”中选择退出路径。选择退出路径的过程叫做 “投票”。查看工作流实例来详细了解工作方式。
下面的列表包含有列:名称,必需,所有成员,表决权重,它们和活动属性“等待所有输入”共同决定活动的投票过程。
a) 名称-活动的指派人身份,他们参与表决活动的流向
b) 必需-如果选择了这个选项,代表着此指派人必需完成此活动(完成任务并提交表决)
c) 所有成员-这个选项中对指派人身份为组时才有效。如果不选,则代表组中的任何一个成员完成任务并提交表决后,那么活动将从组中的其他成员的工作列表中消失。如果选中了,那么组中的所有成员必须都完成任务并提交表决。
系统选择的路径是权重达到了100% 或100%以上的路径。请参阅例子来看看投票的权重和决定活动的退出路径的其他选项
转发至-如果活动没有在截止日期+延期日期内完成,指定的身份帐号将收到这个工作。如果这里没有指定上报人员,活动的上报人将收到这个工作
2. 第2个页签是路径,是指选中活动的所有输出路径。当在图形化的设计界面中完成了流程设计,这些输出路径会自动在此标签页显示。下面是Review ECR活动的输出路径列表。在此页签里面可以编辑路径,但是不能删除或新建路径。详细描述见工作流路径。
3. 第三个页签是通知。通知是配置email消息自动发送到指定的人员。通知是由相关的活动触发的,例如活动的状态变成“活动的”或者“委托”。通知也会包含当前的实例化数据,例如流程相关的数据某个属性的值或者流程的属性值。通知还可以包含其它实例化数据,例如关系对象的一些属性值。
4. 活动的第四个页签是“作业”。它包含的任务清单,是在活动结束之前需要去完成的工作。查看“完成工作清单”了解任务是如何在活动完成窗体上显示的。下面是ECR流程图“审批ECR”活动样例。注意4个任务中,只有一个是必需的。以下是任务属性列表的描述。
a. 序列-任务的序列号。确定任务在完成工作表中的排序。
b. 必需-如果是必需,那么签审活动之前必须先签审任务。
c. 描述-任务的描述
5. 变量页签存储指派人可获取的活动变量,也可以用于活动属性的内部计算。可以通过完成工作单查看变量值。下面是变量的定义例子。
a) 序列—变量的序列号,决定变量在活动的完成工作单上的显示顺序。如果变量被定义为隐藏,那么这个序列号是无效的。
b) 名称-变量的名称
c) 类型:变量的数据类型
d) 源-变量的数据源,例如列表或序列等
e) 默认值-如果变量是必需的,最好是给它一个默认值
f) 必需-如果是必需的,那么变量必需有值,否则活动不能完成
g) 隐藏-如果是隐藏的,那么变量不会显示在活动完成工作单上。如果变量同时也是必需的,那么活动完成前必须通过内部算法设置值。
6. 下一个页签是服务端事件,它是指定当发生某些事件时触发执行的方法。触发的事件包括:激活时,分派时,拒绝时,委托时,投票时,提醒时,到期时,上报时,关闭时。方法的书写请参阅高级编程手册。
工作流路径
工作流路径将工作流活动关联到一起。它的行为取决于它的属性。
工作流路径的属性:
1. 名称-路径的名称。一般而言,这个名称会和路径连接的活动名类似,这样可以帮助投票的人员清楚的了解选择投票后的活动。
2. 认证—在投票前确认,确认在进入下一个流程活动之前是否需要密码或电子签名。
3. 标签:路径的多语言设定。显示在用户投票的下拉列表中,详见国际化。
如果路径选择了需要认证,那么在工作完成表上会要求用户必须输入一个密码或者指定的电子签名。如下所示:
请注意:密码字段是灰色的。如果没有指定认证,密码和电子签名域将是灰色的。如果有认证要求,而责任人没有提供,那么在一个点击完成时,会弹出错误提示框。
1. 默认路径--布尔型,用于设定是否为默认路径。如果其他的路没有足够的选票来激活,那么系统将走默认路径。详见默认路径例子。
2. 覆盖路径--布尔型,用于设定是否为覆盖路径。当收到一个投票后就直接走此类路径(除非设定了其他选项,需要等待其他的投票)。详见覆盖路径例子。
每个路径都有两个页签:预先方法、后续方法。这些页签列出的方法在路径执行之前和之后触发。 你可以选择已有的方法或者创建新的方法。序列号表明了方法执行的顺序。方法的撰写请参阅高级编程手册。
样例
不同属性的工作流活动和工作流路径结合在一起,可以产生不同的效果。我们通过下面的例子来理解:
上报的样例
在这个例子,“分析和排序”活动被激活了。请注意这个活动关联了两个身份-数据分析组和数据分析经理。这些身份需完成的任务和投票如下:
> Data Analysis - Test Data (60%)
> Data Analysis Manager - Reject Data (40%)
在这个例子中,路径并没有被标示为“默认”或者“覆盖”,一旦路径的投票权重没有达到100%,决议权将提升到属性中指定的“上报人”。如果这里没有指定身份,那么活动将上报给流程的所有者。
覆盖的样例
我们再看一个例子,它和上面的例子是类似的,但是“否决数据”路径被标示成了“覆盖”。
一旦覆盖的路径收到了任何一个投票,无论投票的权重是多少,都会执行覆盖路径。在这个例子中,即使“否决数据”路径的权重只有40%,“否决数据”这个活动也会被激活。
默认路径的样例
下面的例子,我们还是继续使用“分析和排序”这个活动,只是它的退出路径不存在覆盖路径,而是把“测试数据”路径设置为“默认路径”。
“Data Analysis”投票结果是“测试数据”(设定的权重为60%),“Data Analysis Manager”投票结果为“否决数据”(设定的权重为40%)。如果没有路径被标示为“默认”或“覆盖”,那么投票结果将被上报。当前的例子是将“测试数据”路径设置为“默认路径”,所以流程将流向“测试数据”这个活动
必需的样例
我们将再次利用“分析和排序”这个活动来举例。请注意现在为这个活动设定了3个责任身份-- Data Analysis组,Data Analysis Manager以及Testing and Quality组。Data Analysis Manager被标示为“必需”,这意味着无论如何,标示为必需的责任身份,都必须投票,无论某一路经是否已达到100%的权重。
假设所有的路径都没有被标示围“默认”或“覆盖”,并且已有的投票如下:
> Data Analysis - Test Data (60 %)
> Testing and Quality - Test Data (60%)
可以看到“测试数据”路径的权重已到120%,理论上这是已经决定了活动走向的;但是“Data Analysis Manager”被标示为必需,所以还需要等待“Data Analysis Manager”的投票,才可以往下流转。如果“Data Analysis Manager”投的是“否决数据”,活动还是会流到“测试数据”。但是如果路径“否决数据”是被设为“覆盖”,那么活动会流到“否决数据”。
等待所有投票的样例
如果活动上标示了“等待所有投票”,那么无论是已表决的权重到达了100%,还是路径被标示为“默认”或“覆盖”,都需要等待所有的投票结果。
上图所示,活动标示为“等待所有表决”,那么意味着所定义的3个身份都需要投票。同时“Reject Data”路径是标示为“覆盖”,且已投票的决议如下:
> Data Analysis - Test Data (60%)
> Data Analysis Manager - Reject (40%)
那么结果将是:活动将遵循路径“否决数据”流到下一个活动,但是需要等待“Testing and Quality”投完票之后,才会到达下一个活动----“否决数据”。
通知
通知是配置email消息自动发送到指定的人员。通知由选中的事件触发,例如活动被“激活”或者“委托”。通知也可包含当前的实例数据,例如流程相关的对象实例的某个属性值。通知还可以包含其它实例化数据,例如关联对象的一些属性值等。下面是活动的通知页签的实例。
以下是通知的属性列表及其描述:
属性 |
描述 |
名称 |
通知的名称。可重复使用,名称通常用来描述电子邮件的概要信息。 |
发件人 |
通知邮件的发件人。在单元格中按F2打开身份查找对话框。选中的身份必须有一个有效邮件地址。 |
主题 |
邮件的主题。主题,像邮件主题一样可以使用变量。更多信息请参阅” 变量使用”。 |
消息主体 |
要发送信息的标题(对不支持HTML的收件人)。邮件主体文本中可使用变量。更多信息请参阅“变量使用”。 |
消息主体html |
发送信息的HTML版本。邮件主题文本中可使用变量。更多信息请参阅“变量使用”。 |
查询字符串 |
如果希望书写复杂的通知,且需要用到Innovator中的各种对象。可以写查询从数据库中获取信息。查找到的信息能够在邮件信息主体中被引用。例如:如果希望显示邮件消息的关联对象值,需要写查询对其进行检索。学习怎样书写查询语句,请参考高级编程课程,或联系Aras顾问。 |
事件 |
邮件信息在指定的事件触发时自动发送。可选事件列表有:
§ On Activate 激活
§ On Assign 指派
§ On Refuse拒绝
§ On Delegate委托
§ On Vote投票
§ On Remind提醒
§ On Due过期
§ On Escalate 提升
§ On Close关闭
|
目标
|
通知的接收者。可选项如下:
§ 所有的指派者。此活动指派页签下的所有指派人列表。如果指派人是组身份,此身份下的所有成员都将收到通知。
§ 已进行的指派者---未完成任务的指派者。通常这个目标和提醒(On Remind)事件一起。
§ 关闭指派者-----所有已经完成任务的指派者。通常这个目标和提升(escalate)事件一起使用。
§ 从身份---只用于提升或委托,这个身份是任务中用来提升或委托的身份之一。
§ 到身份----只用于提升或委托。这个身份是提升和委托到的身份之一。
§ 替换-----这个身份在替换字段中定义(如下) |
替换 |
接收通知的一个替换身份。 |
在邮件文本中使用变量
可以在邮件文本中使用变量以准确定位对象及其属性值,使邮件信息更加详细。我们来看一个工作流对象的XML,如下所示:
<AML>
<Item type='ECR'>
<item_number>ECR-1000</item_number>
<state>Released</state>
</Item>
<Item type="Activity">
<name>Vote on me</name>
</Item>
</AML>
所以,如果访问ECR的状态属性值,可以写:
${Item[@type='ECR']/state}
如果访问Activity的name,可以写:
${Item[@type='Activity']/name}
一般来说,工作流信息中访问对象属性值的格式为:
${Item[@type='ItemType_name']/property_name}
itemType_name是希望访问的对象类名称,property_name是属性名。
Innovator也提供用于内部通知字段的运行时系统变量
以下是通知的属性列表及其描述:
Variable变量 |
Definition定义 |
$[USER] |
当前登录名 |
$[ALIAS] |
用户身份别名 |
$[DATE] |
当前日期字符串 |
$[TIME] |
当前时间字符串 |
活动工作列表
当工作流活动激活后,将会马上发送给活动的分派页签中定义的指派人。指派人会在自己“我的任务”中收到相应的工作。如下图所示:
通过选择不同的过滤项,可以查看自己关注的信息。
双击“我的任务”中的对象,将弹出对象的工作流活动完成表单,如下图所示:
完成工作表不同区域的意义:
1. 任务:列出活动对应的所有任务。需要检查这些任务是否真的完成。
2. 变量-如果在活动的变量标签定义了变量而且不为隐藏,那么将显示出变量的格式。如果变量被设为“必需”且未指定默认值,那么在完成此项活动之前必须输入相应的值。
3. 投票:活动的指派人选择投票内容或者委托他人。投票的下拉列表中将列出当前活动的所有路径,例如:委托和拒绝。如果选择了拒绝,那么将遵循如下的路径将活动上报:上报给活动指派人上指定的上报人—>上报给活动上指定的上报人—>上报给流程的所有者—>上报给流程的创建人。点击委托选项后,将调出一个搜索框来指定新的指派人。
4. 认证:如果活动被指定为需要认证—密码或电子签名(在每个帐号的首选项里设置),那么在活动完成之前必须在此区域输入。如果没有指定需要认证,那么这个字段是灰色的
按钮
1. 完成-标记这个活动已经完成并继续工作流。点击完成时,系统会自动查错(确认所有必需的任务是否完成,必填变量是否输入等)
2. 保存修改-在当前窗体上保存已输入的信息,但是并未结束这个活动。一般是用在活动有很多任务且责任人需要记录任务的完成情况时。如果活动的责任人是一个组,且不同的组员在完成不同的任务。当某一个任务完成后,被标示已完成并保存,这个组中所有的成员都会在自己的工作表中看到这个信息,这样可以避免重复性劳动。
3. 取消-关闭窗口并不保存任何变化。
附加到对象
工作流可通过在对象类定义中指定工作流,而附加到对象类的具体实例中。工作流页签如下图所示:
1. 点击TOC的系统管理文件夹下的对象类,选择你需要附加工作流的对象并打开编辑;
2. 选择工作流页签;
3. 点击新建图标 ,将调出工作流的搜索框。选择需要添加的工作流并点击绿色的按钮
4. 如果希望一个实例对象创建完毕后能自动开始工作流,那么请选择“默认”。
与该对象类相关的所有的工作流都需要列在此处。例如默认的工作流活动中签入了一个子流程,那么这个子流程也要列在这里(但是不用标示为默认)。
如果希望某个流程在某种条件下被程序所激活,那么需要在此列出且不勾选默认。
动态分配
动态分配的指派人必须在工作流图中设定。
> 为希望动态分配指派人的流程活动选择管理者,只有管理制才能在对象的工作流实例中重新分配指派人。
> 在同一个活动中选择“角色”,这个角色是一个身份帐号,只有这个身份中包含的成员才能被指派给这个活动。
> 所有需要动态分配指派人的活动都必须指定责任人和角色。
动态分配指派人在工作流实例中进行。
动态分配一个指派人:
1. 打开目标对象的工作流实例。样例中是一个“问题报告”;
2. 在对象的菜单上选择查看-〉工作流,将打开如下窗口,然后锁定工作流实例;
3. 选择你需要改变指派人的活动;
4. 如果你是指定的管理者身份中的一员,增加和删除按钮将是可用的;
5. 增加、删除或编辑指派人;
6. 保存时,将验证选择的指派人是否为指定角色的成员。
状态转变
Innovator提供了通过工作流去驱动对象的生命周期状态的变化的功能。工作流提升定义在工作流的活动上,当指定事件(如激活时)发生时触发。下面是一个为对象类工作流配置提升生命周期状态的实例:
上图所示,是一个叫“Sample Document.”对象上定义的生命周期和工作流。在“Sample Document.”的工作流中有几个提升点由工作流状态来驱动生命周期变化。例如在工作流的“Submit Document”活动上有一个提升点(OnClose事件)将生命周期状态从“Submitted”提升至“Approved”状态。注意:在更复杂的生命周期图中一个状态可能有多个输入,一个活动可能包含多个提升,用来处理从多个不同的状态提升至一个状态。
工作流状态改变规则
1. 当前控制对象的生命周期状态必须与已定义的工作流状态改变的”从…状态”的状态匹配,否则将失败。例如:当前受控对象为”Draft”状态,工作流状态提升已经初始化,则在活动的提升页签中至少有一个状态改变的” 从…状态”为Draft。
2. 一个工作流状态改变不能用于提升工作流控制对象之外的其他对象类。
3. 一个给定生命周期过程的工作流状态改变会绕过生命周期过程中定义的身份。因此,即使活动的执行者不是生命周期过程中定义的角色的成员,状态改变也将会发生。
配置工作流状态改变的步骤:
1. 在工作流图编辑器中选择活动,下面为这个活动配置状态改变和触发事件;
2. 选择“状态改变”页签;
3. 点击关系工具栏的“新建”图标;
4. 一个包含系统定义的所有生命周期过程的查找框会自动出现。查找到合适的生命周期过程。选择对话框的那一行,然后点击工具栏 按钮。
5. 选中的生命周期过程将做为一个新行添加在状态改变页签下。事件属性值默认设置为”On Activate”。称为活动激活事件,当被触发时,将执行生命周期状态改变。点击事件网格,从下拉框中选择希望的事件。
6. 查找生命周期过程关联的对象类,点击对象类网格,然后按F2。一个包含系统所有已定义对象类的查找框将自动出现。查找到合适对象类,选择行然后点击工具栏保存按钮。
注意:选中的对象类必须有指定的工作流和生命周期(包含已选的生命周期过程)。
7. 选中的对象类添加到网格。添加工作流状态改变完成。
8. 按上面所示方法,依次为工作流中的需要配置状态改变的活动进行配置。