• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
6, workflow miscellaneous
 

6, workflow miscellaneous

on

  • 447 views

Miscellaneous, including:

Miscellaneous, including:
process selector
activity statuses...
and more alike

Statistics

Views

Total Views
447
Views on SlideShare
323
Embed Views
124

Actions

Likes
0
Downloads
0
Comments
0

9 Embeds 124

http://ebshome.blogspot.com 52
http://ebshome.blogspot.tw 25
http://ebshome.blogspot.sg 17
http://ebshome.blogspot.jp 13
http://2973075245885582305_076bd80d5a6edc115d0a1b0c8285519f50478f0b.blogspot.com 10
http://ebshome.blogspot.hk 4
http://ebshome.blogspot.de 1
http://translate.googleusercontent.com 1
http://ebshome.blogspot.in 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    6, workflow miscellaneous 6, workflow miscellaneous Presentation Transcript

    • Workflow Miscellaneous
    • Overview• 前面介绍了如何使用WFB定义一个简单的流程, 如何在EBS中使用该流程, 以及工作流的表/API 等. 除了这些基本的特性之外, 这里将介绍一些 其他的高级特性和细节: – Process Selector/Callback – 活动状态 – 活动超时(timeout), 延迟(deferred), 停滞(stuck) – Respond类型消息 – 通知重新分配(Reassign)/假期规则(Vacation Rule)/工 作列表(worklist)
    • Process Selector• 根据工作流的设计, 一个Item Type可以包含 多个Process, 那么在工作流引擎在启动一个 工作流时会如何选择启动哪一个流程呢? 有 如下两种方式: 1, wf_engine.CreateProcess 传入process参数 为非null值, 从而启动指定的流程; 2, wf_engine.CreateProcess 传入process参数 为null值, 则会调用Item Type的selector过程, 该过程会返回流程的名称.
    • Process Selector - WFB Setup• 如何为Item Type指定一个selector过程呢? 在 WFB中打开Item Type节点的属性, 在Selector 字段中指定selector过程, 遵循如下格式 <package>.<procedure>, 如下:
    • Process Selector - API Standard• selector过程必须遵循如下的API格式: procedure <procedure_name> ( itemtype in varchar2, itemkey in varchar2, actid in number, command in varchar2, resultout out varchar2) ... 参数说明: itemtype Item Type的内部名称 itemkey Item Key actid 过程被调用时的活动id, 当command参数为 RUN时此参数为null command 调用模式, 可以是RUN, TEST_CTX, SET_CTX, 后两者用于selector过程的回调功能; 调用 wf_engine.createprocess未指定process参数时传 入command参数为RUN resultout 对于RUN/TEST_CTX模式返回值, RUN模式返 回选择的流程名称
    • Process Selector - A toy demo• 定义wfdemo.selector过程如下, 始终返回default流程, 仅作为演示: procedure selector(itemtype in varchar2, itemkey in varchar2, actid in number, command in varchar2, resultout out varchar2) is begin if(command = RUN) then resultout := ‘DEFAULT; end if; end;• 另外定义一个dummy流程, 如图:• 上传该wft文件, 使用如下代码运行该工作流(WAP页面必须指定process) declare v_itemtype varchar2(30) := LEAVEREQ; v_itemkey varchar2(30) := 10; begin wf_engine.createprocess(v_itemtype, v_itemkey, null); wf_engine.SetItemAttrText(v_itemtype, v_itemkey, LEAVEREQUSTER, OPERATIONS); wf_engine.startProcess(v_itemtype, v_itemkey); commit; end;
    • Process Selector - More• Item Type的selector信息记录可以使用如下 sql进行查询: select name, wf_selector from wf_item_types where name = LEAVEREQ• selector过程除了在启动工作流使决定使用 哪一个流程外, 还可以被扩展为类似于回调 (callback)的功能, 在执行活动节点之前调用 selector过程传入command参数为TEST_CTX 或者SET_CTX验证或者设置上下文.
    • Activity Statuses• 工作流活动在执行的过程中有相应的状态标记, 分 为: Active 活动正在被执行, 顶层流程在流 程结束之前一直处于active状态 Complete 活动成功完成 Waiting 等待. 示例: AND活动 Notified 活动等待FYA通知的反馈, 或者等待 一个事件消息 Deferred 活动被延迟, 将由后台引擎执行 Error 活动执行过程中遇到错误 Suspend 活动被暂停
    • Notification Timeout - Setup• 可以为活动节点定义超时属性, 从而在活动超时的情况下 采取相应的动作, 通常超时属性应用在FYA的通知节点. 设 置如下:• 节点的超时属性可以设置如下: – No timeout 不设置超时 – Relative Time 指定超时时间 – Item Attribute 引用工作流属性• 当为一个节点设置了超时属性之后, 该节点可以选择在超时情况下执行什么动作, 比如结束流程/重新执行当前节点/执行另一个节活动等.
    • Activity Cost• 在对函数活动节点进行设置时, 可以设置一个 cost属性, 如下:• cost属性值是对该节点执 行时间的一个估计, 在WFB 中单位是秒(以1/100秒 存储wf_activities/cost字段). 在 工作流运行的过程中, 会对比活动的cost值 与wf_engine.threshold的值, 如果大于则停止该 流程的执行; 否则则执行该流程. wf_engine.threshold的值默认为50(1/100秒). 从 WFB到数据库的转换乘以100即可, 这里设置为 1在数据库存储的值是100, 该活动将会被延迟.
    • Activity Cost• 重新上传之后, 在WAP中启动该流程. 可以看到流 程在执行到”Find Approver”节点时状态变为了 Deferred, 当前函数节点没有被执行.• 可以使用如下两种方式驱动deferred节点的执行:1, 运行并发请求”Workflow background process”;2, 调用wf_engine.Background过程, 实际上方法1调用 了此过程.
    • Activity Cost - Workflow background process• 使用SA职责提交提交该并发请求, 请求完成 之后流程将会继续往下执行:
    • Activity Cost - WFSTD DEFER• 除了设置函数节点的cost属性之外还可以通 过WFSTD中的DEFER节点实现延迟, 只需要 在节点前面添加一个DEFER节点就可以做到 这一点, 如下:
    • Stuck Process• 当一个流程处在active状态但是无法继续执 行时, 该流程状态将会被标志为ERROR:#STUCK, 相应的错误流程将会被执行. 这样的情况可 能发生在: 1, 当前流程节点非END节点, 但是没有后续 节点; 2, 节点返回了值但是没有为该值定义下一 个节点;
    • Respond Message• 答复类型的消息属性用于FYA通知的审批人填写反馈信息; 在定义FYA通知的消息时, 添加一个Respond类型的消息属 性即可. 在status monitor页面点击participant responses
    • Notification Reassign - Sender• 默认情况下FYA通知由通知的接收人进行审批, 在通知的审批页面提供 了Reassign按钮, 用于将通知分配给其他人, 有两种模式: 1, Delegate 委托别人审批, 但是不改变通知的所有人(责任人不变); 2, Transfer 将通知转移给其他人, 通知的所有人发生变化; 示例:
    • Notification Reassign - Receiver• 重新分配通知之后, 通知接收人可以在工作 列表中看到该通知, 打开通知之后还可以查 看通知的历史:
    • Notification Reassign - Disable• 使用特殊消息属性#HIDE_REASSIGN可以控 制相应通知审批页Reassign按钮是否显示, 如果设置为Y则不显示, 示例:
    • Notification Reassign - Database• 对一个通知进行Reassign时, 会修改数据中相应的记 录. 按照deletge或者transfer: 1, delegate 2, transfer 作transfer时同时还会修改wf_item_activity_statuses 表中的assigned_user字段; 而delegate不会
    • Vacation Rules• 通过定义假期规则用户可以设定在离开的时间 内如何自动处理收到的通知, 假期规则可以作 用在: – 所有Item Types的通知 – 指定Item Type的通知 – 指定Item Type的指定通知假期规则从下往上进行检查, 如果发现匹配则执行相应的动作, 有以下类型: – 重新分配通知 – 回复或者关闭通知 – 将reassign的通知返回原接收者
    • Vacation Rules - Maintain• 可以在首页的worklist访问假期规则页面, 在 该页面可以对假期规则进行创建, 更新和删 除等操作, 如下:• 新建一个假期规则 1, 设置Item Type
    • Vacation Rules - Maintain2, 设置通知3, 设置执行的动作, 这里选择回复
    • Worklist Access• 在HOME页面的工作列表区域还可以设置允 许其他的用户访问当前用户的工作列表, 如 下:
    • Worklist Access• 这里将cbrown用户工作列表的权限分配给了 process_ops用户, 使用process_ops登录后在工作列 表区域会多出一个切换用户按钮, 切换用户之后可 以看到cbrown的工作列表并进行操作: