工作流的主要组成部分包括:
l 工作流生成器(Workflow Builder)
l 工作流引擎(Workflow Engine)
l 工作流定义载入器(Workflow Definitions Loader)
l 通知系统(Notification System)
l 工作流监控器(Workflow Monitor)
如下图所示:
这里写下Workflow Definitions Loader。
在开放工作流中,我们使用Oracle Workflow Builder建立工作流,整个工作流的建立过程就是跟工作流定义载入相关。在程序层面,我们找到WF_LOAD包,这里就是整个工作流建立的后台实现相关。
在WF_LOAD包中,我们可以看到工作流开发过程中的Attributes, Processes, Notifications, Functions, Messages和Lookup Types的程序实现。ORACLE把所有的这些对象都作为数据库表元素保存在表里面,通过表中各字段的定义和表与表之间的关联来提现他们的关系。
列一下表与对象对应关系:
wf_item_attributes定义Attributes。
wf_activities定义Process、Funciton和Notices,同时有相对应的wf_activities_tl 表定义名称。
wf_messages定义Messages,其中Message里面的属性在wf_message_attributes 表中定义。
wf_lookup_types_tl(有对应的wf_lookup_types视图)定义Lookup Types,其中Lookup Type里面的Lookup Code在wf_lookups_tl表(有对应的wf_lookups视图)中定义。
这里要特别注意一点:Lookup Type是全局变量,它的表的主键是(LOOKUP_TYPE, LANGUAGE),做后台操作请慎重。
在wf_process_activities中,我们可以看到存在与Process中的各对象。
工作流是用ITEM_TYPE来标识每个工作流,在工作流工作过程中,会生成
ITEM_KEY,用于标识每条工作流。我们可以在wf_items中找到每条初始的工作流,在工作流工作过程中,主要的一点,是生成Notifices,生成的Notifices保存在wf_notifications 中。