ITPub博客

首页 > 数据库 > Oracle > Oracle Workfiow

Oracle Workfiow

原创 Oracle 作者:zqhcy 时间:2007-07-13 08:51:06 0 删除 编辑

工作流使用说明

1 目的

§ 说明Oracle ERP里工作流的原理
§ 在Oracle ERP里定义并定制工作流

2 工作流实现机制

2.1 工作流的组成部分

工作流的流程主要由以下组件(Component)构成:单据类型、流程、活动、函数、消息、通知和查找类型。单据类型是一种分类对象,其它的对象都属于一个单据类型。

2.1.1 单据类型(Item Type)

企业的业务有很多类别,同一种业务对应有不同的业务流程,同时在业务流转的过程中处理不同的业务信息。单据类型其实就相当于一个业务类型。

单据类型属性主要是定义业务信息,另外还包含一些在其它对象需要引用的信息,例如通知里的接收人就可以作为单据类型的属性。单据类型的另外一项功能就是对工作流程进行分类 ,所有工作流里的其它对象都属于一个单据类型。

2.1.2 活动(Activity)

活动是工作流程中的一个执行单元。活动有自己的结果类型,在运行时活动的实例会返回一个结果,工作流引擎会根据活动实例的返回结果决定业务流程如何流转。活动有三种类型:通知、流程和函数。另外还有一种类型“文件夹(Folder)”,文件类型主要是对活动进行分组,目前还不知道具体如何使用。

2.1.3 流程(Process)

流程就是业务流程的流转规则。流程包括两部分:流程里包含的活动和各个活动在不同条件下的流转关系。在定义流程的时候,因为流程里的活动可能有不同的返回结果,我们需要把不同结果的处理活动和结果联系起来,另外在Oracle ERP里还定义了一些标准的返回结果(例如超时),你在定义流程的时候,也可以对这些内嵌的返回结果进行处理。在流程实例流转的时候,流程里的活动有自己相应的状态,工作流引擎得到活动的状态改变信息或活动返回结果之后,按照你定义的流程流转规则控制流程的流转。流程必须属于一个单据类型。

流程定义里有一个标志属性“是否可运行标志”,如果一个流程是可运行的,则可以在窗体上可以直接调用,否则该流程只能作为一个子流程包含在其它的流程里面,工作流引擎在碰到流程活动的时候,会自动激活子流程,让子流程流转。

2.1.4 消息(Message)

消息主要是为通知服务的,可以把消息当作通知的内容和类型。消息也属于一个单据类型,通知只能和同一个单据类型里的消息相关联。

每个消息可以有一个或多个属性和自己相联系,消息的属性既可以是独立的属性,也可以是对单据类型属性的一个引用。在消息体内可以对消息的属性进行引用,这样在流程的实例里,如果已经对消息的属性赋值,则在引用消息属性的地方会自动的用消息属性的值替换。我们就可以在消息体内显示必要的信息。

你可以对一个消息定义自动流转规则,这样在工作流的实例里,当流转到和该消息对应的通知活动的时候,工作流引擎就会根据用户定义的自动流转规则自动向下流转,用户就不需要参与了。

2.1.5 函数(Function)

函数就是一个可以自动执行的活动,该活动可以完成一定的功能,函数活动通常和一个PL/SQL存储过程或者一个Oracle内部的过程联系在一起,在定义函数活动的时候必须定义该函数对应的过程名称。

函数类型的活动有自己的参数定义,函数活动的参数主要是为对应的过程服务的。在运行的时候通过给函数活动的参数赋值,经过相应的处理之后,工作流引擎就会把函数活动的参数值传给相应的过程,这样就能保证函数的正确执行。如果对应的过程没有参数的话,可以不定义参数。

2.1.6 通知(Notification)

通知活动对一个人或一个角色发送一个通知,通知必须和一个消息联系在一起。通知活动有自己的结果类型,返回的结果一般是根据用户的交互产生的,除非你在消息里定义了自动流转规则。

2.1.7 查找类型(Lookup Type)

查找类型是你定义的一些枚举数据,单据类型里的查找类型主要用来表达活动结果返回值类型,另外也可以在定义单据类型属性、活动属性、消息和消息属性时引用查找类型,一个查找类型有自己相应的值列表,在引用查找类型的时候,你只需要定义查找类型就可以了,和查找类型相关的值会自动过去的。

工作流是使用Workflow Builder工具设计的。在使用Workflow Builder设计工作流之前,你应该计划好需要完成哪些流程以及流程里发生的活动、活动的顺序、需要哪些结果表达不同的分支以及流程里需要通知的人和通知的内容。

工作流的定义可以采用两种方式:从下往上或者从上往下。从上往下的方式首先从一个高层次流程开始设计,首先画出包含活动的流程图,然后再创建支持这些活动的对象。从下往上的方式是一个比较程序化的设计方式,你首先定义支持活动的所有对象,然后再尝试画出流程图。

3.1 创建流程定义

3.1.1 从下往上定义

§ 启动Oracle Workflow Builder;

§ 选择File——〉New菜单为流程定义创建一个新的Workspace;

§ 创建一个新的单据类型(Item Type)

§ 你可以定义单据类型属性来完全描述你的单据类型,或者定义需要在活动里需要引用的信息;

§ 创建新的查找类型(Lookup Type):在定义活动之前,你应该先定义表示活动结果的查找类型,活动结果是活动完成时可能返回值的一个列表。在定义完活动和查找类型之后,你可以从浏览树上把一个查找类型拖拽到一个活动上来指定一个活动的结果类型;

§ 创建新的消息(Message):如果你希望为你的流程定义一个通知活动,你首先需要定义一个你希望通知活动发送的消息,你可以在浏览树里把一个消息拖拽到一个通知上来指定活动的通知类型。你也可以为消息定义属性,消息的属性有两种类型:“Send”类型的属性用来生成动态内容,“Response”类型提醒接收者进行响应。

§ 创建一个新的流程活动、通知活动或函数活动,你也可以使用在标准单据类型里定义的标准活动。你至少需要定义一个流程活动来表达你的流程图,流程图建立了流程里所有活动的关系。

§ 画流程图:显示流程活动的流程窗口,并画出工作流程里的活动以及活动之间的转移关系。你可以从浏览树里直接把活动拖拽到流程图里。

§ 选择“File——〉Save”或“File——〉Save As”保存你的工作

§ 在数据库里创建函数活动调用得PL/SQL存储过程

3.1.2 从上往下定义

§ 启动Oracle Workflow Builder

§ 使用快速启动向导为你的流程定义建立一个框架,指定新单据类型和流程活动所需要的信息。

§ 在流程窗口里会出现一个开始节点和结束节点,你可以在开始节点和结束节点之间增加流程需要的活动

§ 在流程图里画出活动之间的流转关系

§ 保存你的工作

3.1.3 打开保存单据类型

所有的流程都是和单据类型联系在一起的,一个单据类型下面可以有多个流程。你可以把单据类型定义保存到一个数据库或一个文件,当你保存单据类型时,所有和单据类型联系的对象页同时保存。同样,你也可以从数据库或文件里访问单据类型,并把和单据类型相关的对象在Oracle Workflow Builder里显示。

3.1.3.1 访问保存的流程定义

§ 启动Oracle Workflow Builder,并选择“File——〉Open”;

§ 选择保存工作流程定义的类型:文件或数据库

§ 打开一个文件是可以输入该文件的完整路径和文件名,并选择Ok按钮,或者使用浏览按钮来定位文件;

§ 打开数据库连接的话,输入用户名和口令,并输入数据库别名或连接字符串并单击OK按钮;

§ 如果同时有多个单据类型存在的话,显示单据类型窗口就会出现,从隐藏列表里选择一个

§ 如果你想查看或修改隐藏的的单据类型,你可以从浏览树上从双击隐藏单据类型来选择;

§ 当你完成工作之后,选择“File——〉Save”菜单,保存你的修改信息。

3.1.3.2 保存修改信息

§ 在Oracle Workflow Builder 里选择“File——〉Save”命令保存你的修改,并使修改立即生效。当你使用保存命令的时候,在当前的数据存储里保存了所有对象的修改信息,如果只想保存一个特定的单据类型,你需要创建一个新的数据存储,并把这个单据类型复制到新的数据存储里保存。

§ 如果你想把单据类型存放到另外一个数据存储,或者想保存和当前系统不同的另外一个生效的数据,你可以使用“File——〉Save as”命令

§ 注意,当你保存你的工作的时候,Oracle Workflow会自动验证流程定义里无效或缺失的信息,并把它显示出来,你可以修改根据提示的信息修改错误也可以先保存等有时间的时候再修改。如果你没有改正错误就保存,那么在你重新打开的时候,Oracle Workflow Builder还会报错

§ 选择“File——〉Close Store”关闭和数据存储的连接

§ 推出Oracle Workflow Builder。

3.2 定义工作流组件

工作流的组件主要包括单据类型、查找类型、消息、活动、属性和角色;下面将分别介绍如何定义它们。

3.2.1 单据类型(Item Type)

一个单据类型是对组成工作流程的组件的分类,你必须把你定义的流程组件(例如函数活动、消息等)和单据类型联系起来。可以这样理解,但据类型定义了流程管理的单据信息,例如采购订单申请可以定义为一个单据类型,它包含有一个唯一的订单Id号和一个申请数量。

单据类型属性是和单据类型联系在一起的,它通常充当一个全局变量,可以被流程里的活动引用或者修改。单据类型属性包含流程完成所必需的单据信息。对于活动需要引用的信息或者通知消息里包含的信息,你通常需要定义一个单据类型属性。

属性具有9种类型,下面给出每种类型的说明:

§ Text:属性的值是一个字符串文本;

§ Number:属性的值是一个数字,你可以为数字类型的属性定义一个格式掩码;

§ Date:属性的值是一个日期类型,你也可以为日期类型的属性定义一个格式掩码;

§ Lookup:属性的值是一个查找类型的代码;

§ Form:属性的值是一个Oracle应用的内部窗体函数名称以及函数的参数;如果你在通知消息里包括了一个窗体类型的属性,在查看通知的时候,会显示一个窗体附件的图标,可以让用户浏览到相应的页面。

§ URL:属性的值是一个网络的URL地址,如果你在通知活动里包含了一个URL引用属性,在查看通知的时候,会有一个指向URL的标识,用户可以完成活动也可以访问URL地址或的额外的信息。

§ Document:属性的值是一个附件文档,你可以在默认值里指定文档的类型:PL/SQL文档,通过存储过程把数据库里的信息以文档的方式表达;DM文档,一个被外部文档管理系统管理的文档。

§ Role:属性的值是一个角色的内部名称,如果在一个通知里包含了一个角色类型的属性,则该属性会自动解释为角色的显示名称,省去了在内部名称和外部名称之间维护的工作。为了给角色类型的属性赋一个默认值,你必须首先从数据库里装载角色。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/45641/viewspace-926368/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    23
  • 访问量
    76462