1、 大唐兴竹软件企业 工作流使用说明 作者: 王 君 文档编号 A01001-01 版本: 1.0 状态: Draft 最终修改日期: -7-8 修改纪录 版本 (x.x) 修改摘要 修改人 (First LAST) 同意人 (First LAST) 日期 (mm/dd/yy) 署名
2、 职务 姓名 签字 日期 内容索引 1 介绍 1 1.1 目标 1 1.2 范围 1 1.3 怎样得到这篇文档 1 2 工作流实现机制 1 2.1 工作流组成部分 1 2.1.1 单据类型(Item Type) 1 2.1.2 活动(Activity) 1 2.1.3 步骤(Process) 1 2.1.4 消息(Message) 2 2.1.5 函数(Function) 2 2.1.6 通知(Notification) 2
3、2.1.7 查找类型(Lookup Type) 2 3 工作流定义 2 3.1 创建步骤定义 2 3.1.1 从下往上定义 2 3.1.2 从上往下定义 3 3.1.3 打开保留单据类型 3 3.2 定义工作流组件 4 3.2.1 单据类型(Item Type) 4 3.2.2 查找类型(Lookup Type) 8 3.2.3 消息(Message) 9 3.2.4 活动(Activities) 11 3.3 定义一个步骤图 14 3.3.1 增加一个节点 15 3.3.2 定义一个节点 15 3.3.3 定义活动属性值 16 4 在应用中调用工作流 17
4、 1 介绍 1.1 目标 This section describes the purposes to be achieved by using this document. The objects of implementing the process/procedure should be listed as bullet items. New bullet item could be inserted where it is necessary. § 说明Oracle ERP里工作流原理 § 在Oracle ERP里定义并定制工作流 1.2 范围 This section d
5、escribes the scope that this document applied to. Oracle ERP里工作流引擎实现原理和怎样利用Workflow Builder定义一个步骤,和在程序里调用已经定义好步骤确保业务依据流转规则流转。 1.3 怎样得到这篇文档 Give the information on where to get this document, e.g. URL and/or ID of this document in a document management system. 该文档关键供兴竹企业开发部内部交流使用。 2 工作流实现机制 2.1
6、 工作流组成部分 工作流步骤关键由以下组件(Component)组成:单据类型、步骤、活动、函数、消息、通知和查找类型。单据类型是一个分类对象,其它对象全部属于一个单据类型。 2.1.1 单据类型(Item Type) 企业业务有很多类别,同一个业务对应有不一样业务步骤,同时在业务流转过程中处理不一样业务信息。单据类型其实就相当于一个业务类型。 单据类型属性关键是定义业务信息,另外还包含部分在其它对象需要引用信息,比如通知里接收人就能够作为单据类型属性。单据类型另外一项功效就是对工作步骤进行分类 ,全部工作流里其它对象全部属于一个单据类型。 2.1.2 活动(Activity) 活
7、动是工作步骤中一个实施单元。活动有自己结果类型,在运行时活动实例会返回一个结果,工作流引擎会依据活动实例返回结果决定业务步骤怎样流转。活动有三种类型:通知、步骤和函数。另外还有一个类型“文件夹(Folder)”,文件类型关键是对活动进行分组,现在还不知道具体怎样使用。 2.1.3 步骤(Process) 步骤就是业务步骤流转规则。步骤包含两部分:步骤里包含活动和各个活动在不一样条件下流转关系。在定义步骤时候,因为步骤里活动可能有不一样返回结果,我们需要把不一样结果处理活动和结果联络起来,另外在Oracle ERP里还定义了部分标准返回结果(比如超时),你在定义步骤时候,也能够对这些内嵌返回
8、结果进行处理。在步骤实例流转时候,步骤里活动有自己对应状态,工作流引擎得到活动状态改变信息或活动返回结果以后,根据你定义步骤流转规则控制步骤流转。步骤必需属于一个单据类型。 步骤定义里有一个标志属性“是否可运行标志”,假如一个步骤是可运行,则能够在窗体上能够直接调用,不然该步骤只能作为一个子步骤包含在其它步骤里面,工作流引擎在碰到步骤活动时候,会自动激活子步骤,让子步骤流转。 2.1.4 消息(Message) 消息关键是为通知服务,能够把消息看成通知内容和类型。消息也属于一个单据类型,通知只能和同一个单据类型里消息相关联。 每个消息能够有一个或多个属性和自己相联络,消息属性既能够是独
9、立属性,也能够是对单据类型属性一个引用。在消息体内能够对消息属性进行引用,这么在步骤实例里,假如已经对消息属性赋值,则在引用消息属性地方会自动用消息属性值替换。我们就能够在消息体内显示必需信息。 你能够对一个消息定义自动流转规则,这么在工作流实例里,当流转到和该消息对应通知活动时候,工作流引擎就会依据用户定义自动流转规则自动向下流转,用户就不需要参与了。 2.1.5 函数(Function) 函数就是一个能够自动实施活动,该活动能够完成一定功效,函数活动通常和一个PL/SQL存放过程或一个Oracle内部过程联络在一起,在定义函数活动时候必需定义该函数对应过程名称。 函数类型活动有自己
10、参数定义,函数活动参数关键是为对应过程服务。在运行时候经过给函数活动参数赋值,经过对应处理以后,工作流引擎就会把函数活动参数值传给对应过程,这么就能确保函数正确实施。假如对应过程没有参数话,能够不定义参数。 2.1.6 通知(Notification) 通知活动对一个人或一个角色发送一个通知,通知必需和一个消息联络在一起。通知活动有自己结果类型,返回结果通常是依据用户交互产生,除非你在消息里定义了自动流转规则。 2.1.7 查找类型(Lookup Type) 查找类型是你定义部分枚举数据,单据类型里查找类型关键用来表示活动结果返回值类型,另外也能够在定义单据类型属性、活动属性、消息和消
11、息属性时引用查找类型,一个查找类型有自己对应值列表,在引用查找类型时候,你只需要定义查找类型就能够了,和查找类型相关值会自动过去。 3 工作流定义 工作流是使用Workflow Builder工具设计。在使用Workflow Builder设计工作流之前,你应该计划好需要完成哪些步骤和步骤里发生活动、活动次序、需要哪些结果表示不一样分支和步骤里需要通知人和通知内容。 工作流定义能够采取两种方法:从下往上或从上往下。从上往下方法首先从一个高层次步骤开始设计,首先画出包含活动步骤图,然后再创建支持这些活动对象。从下往上方法是一个比较程序化设计方法,你首先定义支持活动全部对象,然后再尝试画出步
12、骤图。 3.1 创建步骤定义 3.1.1 从下往上定义 § 开启Oracle Workflow Builder; § 选择File——〉New菜单为步骤定义创建一个新Workspace; § 创建一个新单据类型(Item Type) § 你能够定义单据类型属性来完全描述你单据类型,或定义需要在活动里需要引用信息; § 创建新查找类型(Lookup Type):在定义活动之前,你应该先定义表示活动结果查找类型,活动结果是活动完成时可能返回值一个列表。在定义完活动和查找类型以后,你能够从浏览树上把一个查找类型拖拽到一个活动上来指定一个活动结果类型; § 创建新消息(Message
13、假如你期望为你步骤定义一个通知活动,你首先需要定义一个你期望通知活动发送消息,你能够在浏览树里把一个消息拖拽到一个通知上来指定活动通知类型。你也能够为消息定义属性,消息属性有两种类型:“Send”类型属性用来生成动态内容,“Response”类型提醒接收者进行响应。 § 创建一个新步骤活动、通知活动或函数活动,你也能够使用在标准单据类型里定义标准活动。你最少需要定义一个步骤活动来表示你步骤图,步骤图建立了步骤里全部活动关系。 § 画步骤图:显示步骤活动步骤窗口,并画出工作步骤里活动和活动之间转移关系。你能够从浏览树里直接把活动拖拽到步骤图里。 § 选择“File——〉Save”或“F
14、ile——〉Save As”保留你工作 § 在数据库里创建函数活动调用得PL/SQL存放过程 3.1.2 从上往下定义 § 开启Oracle Workflow Builder § 使用快速开启向导为你步骤定义建立一个框架,指定新单据类型和步骤活动所需要信息。 § 在步骤窗口里会出现一个开始节点和结束节点,你能够在开始节点和结束节点之间增加步骤需要活动 § 在步骤图里画出活动之间流转关系 § 保留你工作 3.1.3 打开保留单据类型 全部步骤全部是和单据类型联络在一起,一个单据类型下面能够有多个步骤。你能够把单据类型定义保留到一个数据库或一个文件,当你保留单据类型时,全部和
15、单据类型联络对象页同时保留。一样,你也能够从数据库或文件里访问单据类型,并把和单据类型相关对象在Oracle Workflow Builder里显示。 3.1.3.1 访问保留步骤定义 § 开启Oracle Workflow Builder,并选择“File——〉Open”; § 选择保留工作步骤定义类型:文件或数据库 § 打开一个文件是能够输入该文件完整路径和文件名,并选择Ok按钮,或使用浏览按钮来定位文件; § 打开数据库连接话,输入用户名和口令,并输入数据库别名或连接字符串并单击OK按钮; § 假如同时有多个单据类型存在话,显示单据类型窗口就会出现,从隐藏列表里选择一个 §
16、 假如你想查看或修改隐藏单据类型,你能够从浏览树上从双击隐藏单据类型来选择; § 当你完成工作以后,选择“File——〉Save”菜单,保留你修改信息。 3.1.3.2 保留修改信息 § 在Oracle Workflow Builder 里选择“File——〉Save”命令保留你修改,并使修改立即生效。当你使用保留命令时候,在目前数据存放里保留了全部对象修改信息,假如只想保留一个特定单据类型,你需要创建一个新数据存放,并把这个单据类型复制到新数据存放里保留。 § 假如你想把单据类型存放到另外一个数据存放,或想保留和目前系统不一样另外一个生效数据,你能够使用“File——〉Save as
17、命令 § 注意,当你保留你工作时候,Oracle Workflow会自动验证步骤定义里无效或缺失信息,并把它显示出来,你能够修改依据提醒信息修改错误也能够先保留等有时间时候再修改。假如你没有更正错误就保留,那么在你重新打开时候,Oracle Workflow Builder还会报错 § 选择“File——〉Close Store”关闭和数据存放连接 § 推出Oracle Workflow Builder。 3.2 定义工作流组件 工作流组件关键包含单据类型、查找类型、消息、活动、属性和角色;下面将分别介绍怎样定义它们。 3.2.1 单据类型(Item Type) 一个单据类型是
18、对组成工作步骤组件分类,你必需把你定义步骤组件(比如函数活动、消息等)和单据类型联络起来。能够这么了解,但据类型定义了步骤管理单据信息,比如采购订单申请能够定义为一个单据类型,它包含有一个唯一订单Id号和一个申请数量。 单据类型属性是和单据类型联络在一起,它通常充当一个全局变量,能够被步骤里活动引用或修改。单据类型属性包含步骤完成所必需单据信息。对于活动需要引用信息或通知消息里包含信息,你通常需要定义一个单据类型属性。 属性含有9种类型,下面给出每种类型说明: § Text:属性值是一个字符串文本; § Number:属性值是一个数字,你能够为数字类型属性定义一个格式掩码; § Da
19、te:属性值是一个日期类型,你也能够为日期类型属性定义一个格式掩码; § Lookup:属性值是一个查找类型代码; § Form:属性值是一个Oracle应用内部窗体函数名称和函数参数;假如你在通知消息里包含了一个窗体类型属性,在查看通知时候,会显示一个窗体附件图标,能够让用户浏览到对应页面。 § URL:属性值是一个网络URL地址,假如你在通知活动里包含了一个URL引用属性,在查看通知时候,会有一个指向URL标识,用户能够完成活动也能够访问URL地址或额外信息。 § Document:属性值是一个附件文档,你能够在默认值里指定文档类型:PL/SQL文档,经过存放过程把数据库里信息以文
20、档方法表示;DM文档,一个被外部文档管理系统管理文档。 § Role:属性值是一个角色内部名称,假如在一个通知里包含了一个角色类型属性,则该属性会自动解释为角色显示名称,省去了在内部名称和外部名称之间维护工作。为了给角色类型属性赋一个默认值,你必需首先从数据库里装载角色。 § Attribute:属性类型值是对单据类型引用, Persistence Type:当你定义一个单据类型时,你必需指定它Persistence Type,它关键是控制单据类型实例状态审核追踪保留时间,假如你把连续类型设置为Permanent,则运行时状态信息会一直保留,除非你调用WF_Purge.Totalperm
21、)过程清除;假如你把连续类型设置为Temporary,你必需指定连续天数,临时连续类型单据类型实例在完成以后最少保留你指定连续天数,在’n’天过后,你能够调用任何一个WF_PurgeAPI清除单据类型运行时信息。 Selector Function:假如你单据类型有或将有多个可运行步骤活动,定义一个PL/SQL函数决定在一个特殊条件下运行哪一个步骤活动。你也能够扩展这个选择函数为一个回调函数,这么在步骤实施过程中,假如会话信息中止话,能够恢复单据类型实例上下文信息。当你从通知具体页面上去查看一个页面属性时尤其有用 3.2.1.1 创建一个单据类型 § 假如你没有打开一个data s
22、tore,从File里选择New菜单创建一个新Data Store,然后从Edit菜单里选择New Item Type在浏览树里定义一个新单据类型,此时单据类型属性页会出现; § 每一个单据类型有一个大写内部名称,最多8个字符,全部工作流API、PL/SQL过程,SQL脚本在识别单据类型时候全部引用单据类型内部名称。在内部名称里不能包含“:”和“/”; § 输入一个翻译性名字,该名字是一个长部分描述性名称,你也能够为单据类型输入一段摘要信息; § 指定单据类型连续类型,假如你为单据类型指定了一个临时类型,指定在单据类型实例结束以后状态审核统计必需保留时间; § 假如单据类型有多个或会有
23、多个步骤和它联络在一起,你需要为单据类型指定一个选择函数,选择函数语法是
24、里就能够引用这些单据类型属性。 3.2.1.2 定义一个单据类型或活动属性 § 从浏览树里选择一个单据类型,然后从“Edit”选择“New Attribute”能够创建一个单据类型属性 从浏览树里选择一个活动,然后从“Edit”选择“New Attribute”能够创建一个活动属性 在两种情况下全部会出现属性定义页 § 输入一个大写内部名称; § 输入一个显示名称,该名称会出现在浏览树里; § 你能够输入一段描述摘要信息; § 选择属性数据类型,在定义活动属性时候,没有Form,URL,Document属性类型; § 依据你选择属性类型,为属性指定默认值信息; §
25、对单据类型属性来说,可选默认值是一个你输入或从列表中选择常量,不过,这个常量能够是一个在运行时替换字符串;对活动属性来说,默认值能够是一个常量或一个单据类型属性; § 选择“Apply”保留你修改,选择“Ok”保留你修改并推出属性页面,“Cancel”取消你修改并推出属性页面; § 假如你在定义一个单据类型属性,选择“Access”页设置许可修改属性访问等级; § 选择“Apply”保留你修改; § 你创建任何单据属性类型会出现在浏览树“Attributes”分支下,全部函数属性出现在对应函数下面,你能够从浏览树里双击一个属性浏览或修改属性定义。 3.2.1.3 定义一个URL属性
26、 § 在属性默认值里指定一个URL地址,这个URL能够是一个常量或一个从其它单据属性返回值; § 你也能够在URL里包含字符串参数,这个参数能够是一个字符串文本或一个其它单据类型格式替换。在参数字符串里采取其它单据类型进行格式替换,需要采取以下格式:&item_attr; § 假如URL里包含一个参数字符串,你必需遵守以下限制:你不能用一个文档类型单据类型属性对参数进行格式替换;你能够用表单或URL属性对参数进行格式替换,但不能进行嵌套替换; § 假如你需要在URL里传输一个日期时间参数,你需要使用TO_CHAR函数把日期时间转换为以下格式:“YYYY-MM-DD+HH24:MM:SS”
27、一样对日起类型需要使用TO_DATE; § 结束工作以后选择“OK”按钮保留。 3.2.1.4 定义一个Form属性 § 在窗体属性页默认值里指定一个窗体函数名称和可选字符串参数(窗体函数参数); § 默认值必需使用下面格式输入:function_name:arg1=value1 arg2=value2…argn=valuen,argn值能够是一个包含在双引号内字符串,也能够是一个被其它单据类型属性进行格式替换值,能够使用下面方法定义格式替换:argn=”&item_attr”或argn=”value &item_attr”; § 假如你窗体属性内包含参数,你必需切记以下限制:你不
28、能使用一个文档类型属性进行标识替换;你能够使用一个窗体类型或URL类型属性进行标识替换,不过你不能进行嵌套替换;
§ 保留你工作。
3.2.1.5 定义一个Document属性
§ 在属性页默认值里输入一个标识文档字符串;
§ 你能够标识以下两种类型文档:PL/SQL文档或存放在文档管理系统里文档;
§ 一个PL/SQL文档表示数据库里数据,该文档由一个存放过程产生,需要使用下面方法来指定一个PL/SQL文档默认值:plsql:
29、ment_identifier,这个参数字符串应该能标识这个文档。PL/SQL存放过程必需根据标准API格式来写;默认值实例以下所表示:plsql:po_wf.show_req/po_req:2034;
§ 假如你想动态生成一个PL/SQL文档,你能够把文档标识定义成一个标识替换,然后使用其它单据类型属性值替换,比如:plsql:po_wf.show_req/&item_attr1:&item_attr2;
§ 假如想指定一个由外部文档管理系统管理文档,能够在默认值里输入以下格式信息:DM:
30、 3.2.2 查找类型(Lookup Type) 查找类型是一个静态值列表,这些列表能够被活动、单据类型、消息或属性引用,比如一个活动能够引用一个查找类型作为它可能返回值。 当你定义一个查找类型时候,你必需把它和一个单据类型联络起来;然而,但你在创建一个活动或属性时候,你能够引用但前数据存放里任何查找类型,不管这个查找类型和哪个单据类型联络在一起。 3.2.2.1 创建查找类型 § 从浏览树里选择一个单据类型,然后从“Edit”选择“New Lookup Type”,一个查找类型属性页就会出现; § 查找类型有一个大写内部名称、一个显示名称,你也能够输入一段描述性摘要信息,在引
31、用查找类型时候,需要指定它内部名称; § 选择“Access”页定义许可修改查找类型访问等级; § 保留你修改; § 新定义查找类型会出现在浏览树“Lookup Types”分支下面,你能够在以后双击该查找类型来查看和修改它属性; 3.2.2.2 为查找类型定义编码 § 选择一个查找类型,并从“Edit”里选择“New Lookup Code”,一个查找编码属性页会出现; § 输入大写内部名称、显示名称,你也能够输入一段摘要信息; § 保留你修改; § 新定义查找类型编码会在相对应查找类型下面出现。 3.2.3 消息(Message) 消息时工作步骤里通知活动发送给角色
32、内容,消息能够提醒户对通知进行回复或让用户采取一个动作决定下一个活动,在工作流里一个消息接收者被称作“Performer”;每个消息全部和一个单据类型联络在一起,这么能够许可消息引用单据类型属性,在运行时进行标识替换。 当你定义消息时候,能够指定接收者回复值,然后工作流引擎依据用户返回值决定步骤下一个活动,你也能够在消息专题和消息体内包含消息属性使消息成为一个上下文环境敏感消息。你能够从浏览树里直接把一个消息直接拖拽到通知分支下面创建一个发送该消息通知,也能够把消息拖拽到一个已存在通知活动上更新通知发送消息。 当你为通知活动创建一个通知时候,你需要注意通知是否要求了一个结果类型,假如有结果
33、类型话,你创建通知需要提醒通知接收者部分特定响应用来解释通知结果类型,工作流引擎使用这些结果决定步骤需要流到哪些活动。要想创建一个对特殊响应进行提醒消息,你需要完成消息页面“Result”页,你输入信息创建了一个特殊“Response”消息属性,它有一个内部名称“RESULT”,结果消息属性数据类型是一个查找类型,而且必需和通知结果查找类型一致,这能够确保通知活动实施者从一个通知活动期望结果值列表里选择一个值。 一旦你创建了一个消息,你能够为消息定义需要全部属性,在浏览树里消息属性存放在消息下面。消息属性起源(Send or Respond)决定了消息属性使用方法,你能够使用“Send”类
34、型消息属性进行标识替换或和消息一块发送。每个消息类型全部有一个数据类型,“Send”类型消息属性能够是一个常量或是一个对单据类型属性引用。“Response”类型消息属性组成了消息响应部分,响应消息属性为接收者响应提供了指令。假如你定义了一个响应消息属性,你必需给它指定数据类型,你也能够给它指定一个默认值,默认值能够是一个常量,也能够是对相同数据类型单据类型属性引用。 3.2.3.1 创建消息(Message) § 从浏览树里选择一个单据类型,然后从“Edit”菜单里选择“New Message”,消息属性页面就会出现; § 为消息提供一个大写内部名称,一个显示名称,你能够为消息输入
35、一段描述性信息;
§ 为消息选择一个默认优先级,消息优先级只是提醒接收者消息紧急程度,对消息传送和处理没有影响;
§ 保留你修改;
§ 选择“Body”页定义消息体;
§ 专题会有一个和消息显示名称一样默认值,你能够保留这个默认专题或输入一个新专题,消息专题能够包含消息属性,在运行时经过标识替换来赋值。
§ 在消息体输入框内输入一段纯文本信息,Oracle工作流使用你输入文本生成通知消息一个文本版本,这段文本消息能够从一个E-mail阅读器里查看;
§ 你也能够输入一个HTML格式消息体,同时也能够从一个HTML文件里导入,注意,当你输入或导入HTML文件时候,不要包含 36、y>…
HTML标识,假如你包含了这些标识,Oracle工作流只是简单抽取这些标识之间内容,
37、择“Role”页面要求访问该消息角色信息(这个功效在未来版本可能会实现); § 选择“Access”页面要求许可修改消息访问等级; § 假如你想让通知消息提醒“Performer”返回一个结果值而且期望Oracle工作流引擎把消息结果值解释为通知活动返回结果值,你需要选择“Result”页完成要求信息,Oracle工作流使用你在该页面上输入信息生成一个叫做“Result”特殊“Response”类型消息属性;在该页面上输入一个显示名称和一段描述性信息,并在列表里选择一个查找类型,你选择查找类型应该和通知或定结果查找类型一致,在默认值区域里选择一个查找类型编码; § 保留你所作修改; §
38、 你刚定义消息会出现在浏览树Messages分支下面,你能够双击这个消息来查看或修改消息信息; § 你必需定义全部包含在消息专题和消息体内消息属性; § 假如你想创建一个引用单据类型属性消息,从浏览树里选择一个单据类型属性并把它用鼠标拖拽到消息上,你必需在消息属性窗口里编辑该属性,确保消息属性有正确起源。默认值区域会自动设置成单据属性并引用原始单据属性; § 你也能够创建一个不引用已存在单据类型属性消息属性; 3.2.3.2 创建一个消息属性 § 创建一个不引用单据类型属性消息属性,从浏览树里选择一个消息,并从“Edit”菜单里选择“New Attrbute”,此时消息属性页面会
39、出现; § 提供一个大写内部名称; § 选择属性“Source”类型; § 输入显示名称; § 输入可选摘要信息; § 选择属性数据类型; § 依据你选择数据类型,提供对应默认值信息; § 假如你属性数据类型是一个URL或DM文档,要求一个Frame目标,当你在消息里引用这个属性时,会依据你要求Frame目标打开URL或DM文档,Frame目标能够有以下类型:“New Window”:URL会在一个新未命名浏览窗口里打开;“Same Frame”:URL会作为一个元素在目前Frame里打开;“Parent FrameSet”:URL会装载进目前窗口里父Frameset,假如目前F
40、rame没有父对象,则这个值等于目前Frame:“Full Frame”:URL装载进一个原始窗口,取消其它全部Frame; § 假如你消息属性是一个URL或DM类型Send消息属性,你能够检验Attach Content把属性内容附在通知里; § 消息属性默认值能够是一个常量或是对单据类型属性引用; § 保留你所作修改; § 你定义任何消息属性在浏览树里在消息下面,你能够用鼠标双击一个属性来查看或修改属性信息。 3.2.4 活动(Activities) 活动是完成步骤一个工作单元,活动能够是一个通知、一个函数或一个过程。在浏览树里活动被组织在对应步骤、通知和函数下面,你能够再浏览
41、树里创建、删除、修改活动定义信息,你也能够从浏览树里把活动拖拽到一个步骤窗口在步骤图里新增一个活动实例,在步骤图里,每一个活动全部是用图标表示。 Oracle工作流提供了部分标准单据类型,里面包含了部分通用活动,你能够在任何步骤里使用它们,比如比较两个值大小活动;另外Oracle工作流提供了一个System:Error单据类型,里面包含有标准错误步骤和错误活动,你能够使用它们来创建自己自定义错误处理步骤。 3.2.4.1 创建一个通知活动 § 从浏览树里选择一个单据类型,然后从“Edit”菜单里选择“New Notification”,在出现活动窗口里定义通知活动; § 通知活动必
42、需有一个大写内部名称,另外还必需有一个显示名称,你也能够为通知定义一段描述信息对通知活动进行描述。 § 指定通知活动结果类型(一个定义好查找类型),结果类型是一个可能返回结果列表,你工作流会依据活动返回结果进行分支处理。你通知活动也能够没有返回结果。 § 选择你通知想发送消息名称; § 假如你想把通知指定给一个包含多个人角色,而且给角色里每一个人发送一份通知拷贝,选择“Expand Role”,假如你把选择该选项,就给整个角色发送一个通知拷贝。 § 你能够在“Function”域里指定一个PL/SQL存放过程,这就是一个“Post-Function”函数,工作流引擎会依据用户响应在不一
43、样模式下实施这个函数,可能模式类型有:Respond、Forward、Time Out和Transfer; § 为活动选择一个图标按钮,便于在步骤图里标识活动; § 保留你修改; § 选择“Details”页面显示或修改活动具体信息; § 选择“Roles”页面制订访问活动角色信息(这个功效可能在未来版本里支持); § 选择“Access”页面要求许可修改活动访问信息; § 保留你修改; § 新定义通知活动会出现在浏览树里“Notifications”分支下面,你能够用鼠标双击这个通知活动来查看和修改通知活动信息。 3.2.4.2 创建一个函数活动(Function) §
44、 从浏览树选择一个单据类型,从“Edit”菜单里选择“New Function”,在活动属性页里定义函数活动信息; § 为函数活动提供一个大写内部名称和显示名称,你也能够一段描述活动摘要信息; § 输入函数活动实施函数名称,并选择函数类型; § 选择函数活动结果类型, § 输入函数活动时间花费; § 选择一个标识函数活动图标; § 保留你修改 § 选择“Details”页面显示或修改活动具体信息; § 选择“Roles”页面制订访问活动角色信息(这个功效可能在未来版本里支持); § 选择“Access”页面要求许可修改活动访问信息; § 新定义函数活动会出现在浏览树里“Fu
45、nctions”分支下面,你能够用鼠标双击这个函数活动来查看和修改函数活动信息。 § 假如你函数需要输入参数,你能够为函数活动定属性。 3.2.4.3 定义一个步骤活动 在你画步骤图之前,你必需先定义一个步骤活动来表示步骤图。 § 从浏览树里选择一个单据类型,从“Edit”菜单里选择“New Process”,在活动属性页上定义步骤活动信息; § 步骤活动必需有一个全部大写内部名称和一个显示名称,你也能够输入一段摘要信息来描述这个活动; § 指定步骤活动结果类型,步骤活动能够不返回结果; § 为步骤活动选择一个图标来标识它; § 选中Runnable,这么你就能够把步骤看成
46、一个独立步骤来运行,假如不选话,定义步骤只能作为一个子步骤在别步骤下运行; § 保留你工作; § 选择“Details”页定义步骤活动具体信息; § 选择“Access”页指定许可修改步骤访问等级; § 保留你所作修改; § 在浏览树“Processes”分支下回出现你新定义步骤,在浏览树里用鼠标双击步骤就能够查看和修改步骤活动信息。 3.2.4.4 投票活动(Voting Activity) 你能够创建一个投票活动,这么许可你把通知发送给一个角色里全部用户,并处理这些用户响应,处理结果决定活动里流向。一个投票活动是一个通知活动,它首先把通知发送给一组用户,然后实施一个PL/SQ
47、L post-notification函数处理这些用户响应(投票)。你在通知活动页面里定义活动属性和下面四个域决定了投票行为:消息域、结果类型域,展开角色选择框、函数域 § 创建一个投票查找类型,在该类型里包含了投票活动相处理响应结果; § 创建一个投票消息,它提醒用户对投票查找类型其中一个结果进行响应,你在定义消息时候必需完成消息结果页面,把消息返回结果类型设置为投票查找类型; § 从浏览树里选择一个单据类型,创建一个新通知活动; § 为投票活动指定一个内部名称和显示名称,你也能够输入一段描述性摘要信息; § 结果类型必需是投票查找类型; § 选择一个图标来表示这个活动; §
48、在消息域里,选择你刚才定义投票消息; § 选中展开角色这个选项; § 在函数域输入一个函数来处理用户响应; § 保留你所作修改; § 选择具体页来显示和修改活动具体信息 § 选择角色页要求访问活动角色信息; § 选择访问页要求许可修改活动访问等级; 3.3 定义一个步骤图 在Oracle Workflow Builder里,步骤图采取一个图形化方法来显示步骤里活动和活动之间转移。在步骤图里用一个图标来表示活动,用一个箭头来表示活动之间转移。你能够从浏览树里把一个活动拖拽到步骤图里,也能够直接在步骤图里创建一个活动,在步骤图里双击一个活动节点能够查看或修改节点信息。经过在两个活动
49、之间画一个箭头来表示活动之间转移。 转移在步骤图里使用一个箭头表示,它表示一个活动结束和另外一个活动激活。假如一个活动结果类型是None,则转移表现为一个指向另外一个活动箭头,表示只要初始活动一结束,就流向下一个活动。假如一个活动有返回结果类型,则你必需把转移和活动一个结果联络起来,你也能够为定义了返回结果活动定义下面转移类型:Default,Any,Timeout。在没有任何转移匹配完成结果时,工作流引擎实施默认转移;假如定义了一个人以转移,则不管活动返回结果是什么,工作流引擎就实施这个转移,这么能够确保你除了在工作流里实施和放返回结果对应活动外,还能够实施一个通用活动。假如一个活动在完成
50、之前已经超时,则工作流引擎实施超时转移。一个活动返回结果能够有多个转移来进行并行处理。 3.3.1 增加一个节点 § 在开始画步骤图之前,你必需先显示步骤活动步骤窗口,你能够经过以下方法显示步骤窗口:在浏览树里双击一个定义好步骤活动;选择一个定义好步骤活动并按下Ctrl+E;选择一个步骤活动,并从编辑菜单里选择步骤具体信息;使用快速开启向导创建一个新步骤。 § 能够经过下面方法创建一个节点:从浏览树里拖拽一个活动;选择New Function、New Notification、New Process工具栏按钮创建一个节点;在弹出菜单里选择Create Activity创建一个新节点;






