OracleERP工作流

上传人:无*** 文档编号:98653424 上传时间:2022-05-30 格式:DOC 页数:21 大小:152KB
返回 下载 相关 举报
OracleERP工作流_第1页
第1页 / 共21页
OracleERP工作流_第2页
第2页 / 共21页
OracleERP工作流_第3页
第3页 / 共21页
点击查看更多>>
资源描述
word大唐兴竹软件公司工作流使用说明王 君文档编号A01001-01版本:状态:Draft最后修改日期:2002-7-818 / 21修改纪录版本(x.x)修改摘要修改人(First LAST)批准人(First LAST)日期(mm/dd/yy)签名职务某某签字日期内容索引1简介1目的1X围1如何得到这篇文档12工作流实现机制1工作流的组成局部1单据类型Item Type1活动Activity1流程Process1消息Message2函数Function2通知Notification2查找类型Lookup Type23工作流的定义2创建流程定义2从下往上定义2从上往下定义3打开保存单据类型3定义工作流组件4单据类型Item Type4查找类型Lookup Type8消息Message9活动Activities11定义一个流程图14增加一个节点15定义一个节点15定义活动属性值164在应用中调用工作流171 简介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 X围This section describes 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 工作流的组成局部工作流的流程主要由以下组件ponent构成:单据类型、流程、活动、函数、消息、通知和查找类型。单据类型是一种分类对象,其它的对象都属于一个单据类型。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查找类型是你定义的一些枚举数据,单据类型里的查找类型主要用来表达活动结果返回值类型,另外也可以在定义单据类型属性、活动属性、消息和消息属性时引用查找类型,一个查找类型有自己相应的值列表,在引用查找类型的时候,你只需要定义查找类型就可以了,和查找类型相关的值会自动过去的。3 工作流的定义工作流是使用Workflow Builder工具设计的。在使用Workflow Builder设计工作流之前,你应该计划好需要完成哪些流程以与流程里发生的活动、活动的顺序、需要哪些结果表达不同的分支以与流程里需要通知的人和通知的内容。工作流的定义可以采用两种方式:从下往上或者从上往下。从上往下的方式首先从一个高层次流程开始设计,首先画出包含活动的流程图,然后再创建支持这些活动的对象。从下往上的方式是一个比拟程序化的设计方式,你首先定义支持活动的所有对象,然后再尝试画出流程图。3.1 创建流程定义3.1.1 从下往上定义 启动Oracle Workflow Builder; 选择FileNew菜单为流程定义创建一个新的Workspace; 创建一个新的单据类型Item Type 你可以定义单据类型属性来完全描述你的单据类型,或者定义需要在活动里需要引用的信息; 创建新的查找类型Lookup Type:在定义活动之前,你应该先定义表示活动结果的查找类型,活动结果是活动完成时可能返回值的一个列表。在定义完活动和查找类型之后,你可以从浏览树上把一个查找类型拖拽到一个活动上来指定一个活动的结果类型; 创建新的消息Message:如果你希望为你的流程定义一个通知活动,你首先需要定义一个你希望通知活动发送的消息,你可以在浏览树里把一个消息拖拽到一个通知上来指定活动的通知类型。你也可以为消息定义属性,消息的属性有两种类型:“Send类型的属性用来生成动态内容,“Response类型提醒接收者进展响应。 创建一个新的流程活动、通知活动或函数活动,你也可以使用在标准单据类型里定义的标准活动。你至少需要定义一个流程活动来表达你的流程图,流程图建立了流程里所有活动的关系。 画流程图:显示流程活动的流程窗口,并画出工作流程里的活动以与活动之间的转移关系。你可以从浏览树里直接把活动拖拽到流程图里。 选择“FileSave或“FileSave As保存你的工作 在数据库里创建函数活动调用得PL/SQL存储过程3.1.2 从上往下定义 启动Oracle Workflow Builder 使用快速启动向导为你的流程定义建立一个框架,指定新单据类型和流程活动所需要的信息。 在流程窗口里会出现一个开始节点和完某某点,你可以在开始节点和完某某点之间增加流程需要的活动 在流程图里画出活动之间的流转关系 保存你的工作3.1.3 打开保存单据类型所有的流程都是和单据类型联系在一起的,一个单据类型下面可以有多个流程。你可以把单据类型定义保存到一个数据库或一个文件,当你保存单据类型时,所有和单据类型联系的对象页同时保存。同样,你也可以从数据库或文件里访问单据类型,并把和单据类型相关的对象在Oracle Workflow Builder里显示。3.1.3.1 访问保存的流程定义 启动Oracle Workflow Builder,并选择“FileOpen; 选择保存工作流程定义的类型:文件或数据库 打开一个文件是可以输入该文件的完整路径和文件名,并选择Ok按钮,或者使用浏览按钮来定位文件; 打开数据库连接的话,输入用户名和口令,并输入数据库别名或连接字符串并单击OK按钮; 如果同时有多个单据类型存在的话,显示单据类型窗口就会出现,从隐藏列表里选择一个 如果你想查看或修改隐藏的的单据类型,你可以从浏览树上从双击隐藏单据类型来选择; 当你完成工作之后,选择“FileSave菜单,保存你的修改信息。3.1.3.2 保存修改信息 在Oracle Workflow Builder 里选择“FileSave命令保存你的修改,并使修改立即生效。当你使用保存命令的时候,在当前的数据存储里保存了所有对象的修改信息,如果只想保存一个特定的单据类型,你需要创建一个新的数据存储,并把这个单据类型复制到新的数据存储里保存。 如果你想把单据类型存放到另外一个数据存储,或者想保存和当前系统不同的另外一个生效的数据,你可以使用“FileSave as命令 注意,当你保存你的工作的时候,Oracle Workflow会自动验证流程定义里无效或缺失的信息,并把它显示出来,你可以修改根据提示的信息修改错误也可以先保存等有时间的时候再修改。如果你没有改正错误就保存,那么在你重新打开的时候,Oracle Workflow Builder还会报错 选择“FileClose 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:属性的值是一个角色的内部名称,如果在一个通知里包含了一个角色类型的属性,如此该属性会自动解释为角色的显示名称,省去了在内部名称和外部名称之间维护的工作。为了给角色类型的属性赋一个默认值,你必须首先从数据库里装载角色。 Attribute:属性类型的值是对单据类型的引用,Persistence Type:当你定义一个单据类型时,你必须指定它的Persistence Type,它主要是控制单据类型实例的状态审核追踪的保存时间,如果你把持续类型设置为Permanent,如此运行时的状态信息会一直保存,除非你调用WF_Purge.Totalperm()过程去除;如果你把持续类型设置为Temporary,你必须指定持续的天数,临时持续类型的单据类型实例在完成之后至少保存你指定的持续天数,在n天过后,你可以调用任何一个WF_Purge的API去除单据类型的运行时信息。Selector Function:如果你的单据类型有或者将有多个可运行的流程活动,定义一个PL/SQL函数决定在一个特殊的条件下运行哪一个流程活动。你也可以扩展这个选择函数为一个回调函数,这样在流程执行的过程中,如果会话信息中断的话,可以恢复单据类型实例的上下文信息。当你从通知详细页面上去查看一个页面属性时特别有用3.2.1.1 创建一个单据类型 如果你没有打开一个data store,从File里选择New菜单创建一个新的Data Store,然后从Edit菜单里选择New Item Type在浏览树里定义一个新的单据类型,此时单据类型的属性页会出现; 每一个单据类型有一个大写的内部名称,最多8个字符,所有的工作流API、PL/SQL过程,SQL脚本在识别单据类型的时候都引用单据类型的内部名称。在内部名称里不能包括“:和“/; 输入一个翻译性的名字,该名字是一个长一些的描述性名称,你也可以为单据类型输入一段摘要信息; 指定单据类型的持续类型,如果你为单据类型指定了一个临时类型,指定在单据类型实例完毕之后状态审核记录必须保存的时间; 如果单据类型有多个或会有多个流程和它联系在一起,你需要为单据类型指定一个选择函数,选择函数的语法是.。选择函数是一个PL/SQL存储过程,它自动标识工作流引擎应该执行的那个流程; 选择“Apply保存你的修改; 选择“Roles页规定能访问单据类型的角色这个功能会在将来的发行版本支持; 选择“Access页规定单据类型的访问和定制级别; 选择“Apply保存你的修改; 在浏览树里会出现一个二级分支来表示你刚创建的单据类型,你可以在浏览树里双击单据类型浏览或修改单据类型的属性; 定义尽可能多的单据类型属性作为全局变量,这样在流程活动里就可以引用这些单据类型属性。3.2.1.2 定义一个单据类型或活动属性 从浏览树里选择一个单据类型,然后从“Edit选择“New Attribute可以创建一个单据类型属性从浏览树里选择一个活动,然后从“Edit选择“New Attribute可以创建一个活动属性在两种情况下都会出现属性定义页 输入一个大写的内部名称; 输入一个显示名称,该名称会出现在浏览树里; 你可以输入一段描述摘要信息; 选择属性的数据类型,在定义活动属性的时候,没有Form,URL,Document属性类型; 根据你选择的属性类型,为属性指定默认值信息; 对单据类型属性来说,可选的默认值是一个你输入或从列表中选择的常量,不过,这个常量可以是一个在运行时替换的字符串;对活动属性来说,默认值可以是一个常量或者一个单据类型属性; 选择“Apply保存你的修改,选择“Ok保存你的修改并推出属性页面,“Cancel取消你的修改并推出属性页面; 如果你在定义一个单据类型属性,选择“Access页设置允许修改属性的访问级别; 选择“Apply保存你的修改; 你创建的任何单据属性类型会出现在浏览树的“Attributes分支下,所有的函数属性出现在对应的函数下面,你可以从浏览树里双击一个属性浏览或修改属性的定义。3.2.1.3 定义一个URL属性 在属性默认值里指定一个URL地址,这个URL可以是一个常量或者一个从其它单据属性返回的值; 你也可以在URL里包含字符串参数,这个参数可以是一个字符串文本或一个其它单据类型的格式替换。在参数字符串里采用其它单据类型进展格式替换,需要采用如下的格式:&item_attr; 如果URL里包含一个参数字符串,你必须遵守如下的限制:你不能用一个文档类型的单据类型属性对参数进展格式替换;你可以用表单或URL属性对参数进展格式替换,但不能进展嵌套替换; 如果你需要在URL里传递一个日期时间参数,你需要使用TO_CHAR函数把日期时间转换为如下格式:“YYYY-MM-DD+HH24:MM:SS,同样对日起类型需要使用TO_DATE; 完毕工作之后选择“OK按钮保存。3.2.1.4 定义一个Form属性 在窗体属性页的默认值里指定一个窗体函数的名称以与可选的字符串参数窗体函数的参数; 默认值必须使用下面的格式输入:function_name:arg1=value1 arg2=value2argn=valuen,argn的值可以是一个包含在双引号内的字符串,也可以是一个被其他单据类型属性进展格式替换的值,可以使用下面的方式定义格式替换:argn=&item_attr或者argn=value &item_attr; 如果你的窗体属性内包括参数,你必须牢记以下的限制:你不能使用一个文档类型的属性进展标记替换;你可以使用一个窗体类型或URL类型的属性进展标记替换,但是你不能进展嵌套替换; 保存你的工作。3.2.1.5 定义一个Document属性 在属性页的默认值里输入一个标识文档的字符串; 你可以标识以下两种类型的文档:PL/SQL文档或者存放在文档管理系统里的文档; 一个PL/SQL文档表示数据库里的数据,该文档由一个存储过程产生,需要使用下面的方式来指定一个PL/SQL文档的默认值:plsql:/。在使用时用一个包和过程名称来替换procedure,用直接传送给过程的字符串参数替换document_identifier,这个参数字符串应该能标识这个文档。PL/SQL存储过程必须按照标准的API格式来写;默认值的实例如下所示:plsql:po_wf.show_req/po_req:2034; 如果你想动态的生成一个PL/SQL文档,你可以把文档标识定义成一个标记替换,然后使用其它单据类型属性的值替换,例如:plsql:po_wf.show_req/&item_attr1:&item_attr2; 如果想指定一个由外部文档管理系统管理的文档,可以在默认值里输入如下格式的信息:DM:version; 选择“OK保存你的修改。3.2.2 查找类型Lookup Type查找类型是一个静态值列表,这些列表可以被活动、单据类型、消息或属性引用,例如一个活动可以引用一个查找类型作为它可能的返回值。当你定义一个查找类型的时候,你必须把它和一个单据类型联系起来;然而,但你在创建一个活动或属性的时候,你可以引用但前数据存储里的任何查找类型,不论这个查找类型和哪个单据类型联系在一起。3.2.2.1 创建查找类型 从浏览树里选择一个单据类型,然后从“Edit选择“New Lookup Type,一个查找类型属性页就会出现; 查找类型有一个大写的内部名称、一个显示名称,你也可以输入一段描述性的摘要信息,在引用查找类型的时候,需要指定它的内部名称; 选择“Access页定义允许修改查找类型的访问级别; 保存你的修改; 新定义的查找类型会出现在浏览树的“Lookup Types分支下面,你可以在今后双击该查找类型来查看和修改它的属性;3.2.2.2 为查找类型定义编码 选择一个查找类型,并从“Edit里选择“New Lookup Code,一个查找编码属性页会出现; 输入大写的内部名称、显示名称,你也可以输入一段摘要信息; 保存你的修改; 新定义的查找类型编码会在相对应的查找类型下面出现。3.2.3 消息Message消息时工作流程里通知活动发送给角色的内容,消息可以提示户对通知进展回复或者让用户采取一个动作决定下一个活动,在工作流里一个消息的接收者被称作“Performer;每个消息都和一个单据类型联系在一起,这样可以允许消息引用单据类型属性,在运行时进展标记替换。当你定义消息的时候,可以指定接收者回复的值,然后工作流引擎根据用户的返回值决定流程的下一个活动,你也可以在消息的主题和消息体内包括消息属性使消息成为一个上下文环境敏感的消息。你可以从浏览树里直接把一个消息直接拖拽到通知分支下面创建一个发送该消息的通知,也可以把消息拖拽到一个已存在的通知活动上更新通知发送的消息。当你为通知活动创建一个通知的时候,你需要注意通知是否规定了一个结果类型,如果有结果类型的话,你创建的通知需要提示通知接收者一些特定的响应用来解释通知的结果类型,工作流引擎使用这些结果断定流程需要流到哪些活动。要想创建一个对特殊响应进展提示的消息,你需要完成消息页面的“Result页,你输入的信息创建了一个特殊的“Response消息属性,它有一个内部名称“RESULT,结果消息属性的数据类型是一个查找类型,并且必须和通知的结果查找类型一致,这可以保证通知活动的执行者从一个通知活动期望的结果值列表里选择一个值。一旦你创建了一个消息,你可以为消息定义需要的所有属性,在浏览树里消息的属性存放在消息的下面。消息属性的来源Send or Respond决定了消息属性的使用方式,你可以使用“Send类型的消息属性进展标记替换或者和消息一块发送。每个消息类型都有一个数据类型,“Send类型的消息属性可以是一个常量或者是一个对单据类型属性的引用。“Response类型的消息属性组成了消息的响应局部,响应消息属性为接收者的响应提供了指令。如果你定义了一个响应消息属性,你必须给它指定数据类型,你也可以给它指定一个默认值,默认值可以是一个常量,也可以是对一样数据类型单据类型属性的引用。3.2.3.1 创建消息Message 从浏览树里选择一个单据类型,然后从“Edit菜单里选择“New Message,消息属性页面就会出现; 为消息提供一个大写的内部名称,一个显示名称,你可以为消息输入一段描述性的信息; 为消息选择一个默认的优先级,消息的优先级只是提醒接收者消息的紧急程度,对消息的传送和处理没有影响; 保存你的修改; 选择“Body页定义消息体; 主题会有一个和消息显示名称一样的默认值,你可以保存这个默认的主题或者输入一个新的主题,消息的主题可以包含消息的属性,在运行时通过标记替换来赋值。 在消息体输入框内输入一段纯文本信息,Oracle工作流使用你输入的文本生成通知消息的一个文本版本,这段文本消息可以从一个阅读器里查看; 你也可以输入一个HTML格式的消息体,同时也可以从一个HTML文件里导入,注意,当你输入或导入HTML文件的时候,不要包括HTML标记,如果你包括了这些标记,Oracle工作流只是简单的抽取这些标记之间的内容,标记之前的内容。Oracle工作流使用你在HTML消息体内的内容为通知消息生成一个HTML格式的版本,你可以从通知的详细页面来查看HTML格式的通知消息或者从一个阅读器来查看HTML格式的消息或者HTML格式的附件,如果你的HTML消息体的内容是空的,工作流会使用你在文本消息体内输入的内容生成通知消息。另外一个需要注意的问题是,Oracle工作流不能识别消息体内的图标和图像文件。 你可以再消息体内包括消息的属性,这样在运行的时候,可以使用消息属性的值进展标记替换。 保存你所作的修改。 选择“Role页面规定访问该消息的角色信息这个功能在将来的版本可能会实现; 选择“Access页面规定允许修改消息的访问级别; 如果你想让通知消息提示“Performer返回一个结果值并且希望Oracle工作流引擎把消息的结果值解释为通知活动的返回结果值,你需要选择“Result页完成要求的信息,Oracle工作流使用你在该页面上输入的信息生成一个叫做“Result的特殊“Response类型的消息属性;在该页面上输入一个显示名称和一段描述性的信息,并在列表里选择一个查找类型,你选择的查找类型应该和通知或定的结果查找类型一致,在默认值区域里选择一个查找类型编码; 保存你所作的修改; 你刚定义的消息会出现在浏览树的Messages分支下面,你可以双击这个消息来查看或修改消息的信息; 你必须定义所有包含在消息主题和消息体内的消息属性; 如果你想创建一个引用单据类型属性的消息,从浏览树里选择一个单据类型属性并把它用鼠标拖拽到消息上,你必须在消息属性窗口里编辑该属性,确保消息属性有正确的来源。默认值区域会自动的设置成单据属性并引用原始的单据属性; 你也可以创建一个不引用已存在单据类型属性的消息属性;3.2.3.2 创建一个消息属性 创建一个不引用单据类型属性的消息属性,从浏览树里选择一个消息,并从“Edit菜单里选择“New Attrbute,此时消息属性页面会出现; 提供一个大写的内部名称; 选择属性的“Source类型; 输入显示名称; 输入可选的摘要信息; 选择属性的数据类型; 根据你选择的数据类型,提供相应的默认值信息; 如果你的属性数据类型是一个URL或DM文档,规定一个Frame目标,当你在消息里引用这个属性时,会根据你规定的Frame目标打开URL或DM文档,Frame目标可以有以下类型:“New Window:URL会在一个新的未命名浏览窗口里打开;“Same Frame:URL会作为一个元素在当前的Frame里打开;“Parent FrameSet:URL会装载进当前窗口里的父Frameset,如果当前的Frame没有父对象,如此这个值等于当前的Frame:“Full Frame:URL装载进一个原始的窗口,取消其他所有的Frame; 如果你的消息属性是一个URL或DM类型的Send消息属性,你可以检查Attach Content把属性的内容附在通知里; 消息属性的默认值可以是一个常量或者是对单据类型属性的引用; 保存你所作的修改; 你定义的任何消息属性在浏览树里位于消息的下面,你可以用鼠标双击一个属性来查看或修改属性的信息。3.2.4 活动Activities活动是完成流程的一个工作单元,活动可以是一个通知、一个函数或者一个过程。在浏览树里活动被组织在相应的流程、通知和函数下面,你可以再浏览树里创建、删除、修改活动的定义信息,你也可以从浏览树里把活动拖拽到一个流程窗口在流程图里新增一个活动的实例,在流程图里,每一个活动都是用图标表示的。Oracle工作流提供了一些标准单据类型,里面包含了一些通用的活动,你可以在任何流程里使用它们,例如比拟两个值大小的活动;另外Oracle工作流提供了一个System:Error的单据类型,里面包含有标准的错误流程和错误活动,你可以使用它们来创建自己的自定义错误处理流程。3.2.4.1 创建一个通知活动 从浏览树里选择一个单据类型,然后从“Edit菜单里选择“New Notification,在出现的活动窗口里定义通知活动; 通知活动必须有一个大写的内部名称,另外还必须有一个显示名称,你也可以为通知定义一段描述信息对通知活动进展描述。 指定通知活动的结果类型一个定义好的查找类型,结果类型是一个可能返回结果的列表,你的工作流会根据活动的返回结果进展分支处理。你的通知活动也可以没有返回结果。 选择你的通知想发送的消息名称; 如果你想把通知指定给一个包含多个人的角色,并且给角色里的每一个人发送一份通知的拷贝,选择“Expand Role,如果你把选择该选项,就给整个角色发送一个通知的拷贝。 你可以在“Function域里指定一个PL/SQL存储过程,这就是一个“Post-Function函数,工作流引擎会根据用户的响应在不同的模式下执行这个函数,可能的模式类型有:Respond、Forward、Time Out和Transfer; 为活动选择一个图标按钮,便于在流程图里标识活动; 保存你的修改; 选择“Details页面显示或修改活动的详细信息; 选择“Roles页面制定访问活动的角色信息这个功能可能在将来的版本里支持; 选择“Access页面规定允许修改活动的访问信息; 保存你的修改; 新定义的通知活动会出现在浏览树里的“Notifications分支下面,你可以用鼠标双击这个通知活动来查看和修改通知活动的信息。3.2.4.2 创建一个函数活动Function 从浏览树选择一个单据类型,从“Edit菜单里选择“New Function,在活动属性页里定义函数活动的信息; 为函数活动提供一个大写的内部名称以与显示名称,你也可以一段描述活动的摘要信息; 输入函数活动执行的函数名称,并选择函数的类型; 选择函数活动的结果类型, 输入函数活动的时间花费; 选择一个标识函数活动的图标; 保存你的修改 选择“Details页面显示或修改活动的详细信息; 选择“Roles页面制定访问活动的角色信息这个功能可能在将来的版本里支持; 选择“Access页面规定允许修改活动的访问信息; 新定义的函数活动会出现在浏览树里的“Functions分支下面,你可以用鼠标双击这个函数活动来查看和修改函数活动的信息。 如果你的函数需要输入参数,你可以为函数活动定属性。3.2.4.3 定义一个流程活动在你画流程图之前,你必须先定义一个流程活动来表达流程图。 从浏览树里选择一个单据类型,从“Edit菜单里选择“New Process,在活动属性页上定义流程活动信息; 流程活动必须有一个全部大写的内部名称和一个显示名称,你也可以输入一段摘要信息来描述这个活动; 指定流程活动的结果类型,流程活动可以不返回结果; 为流程活动选择一个图标来标识它; 选中Runnable,这样你就可以把流程当作一个独立的流程来运行,如果不选的话,定义的流程只能作为一个子流程在别的流程下运行; 保存你的工作; 选择“Details页定义流程活动的详细信息; 选择“Access页指定允许修改流程的访问级别; 保存你所作的修改; 在浏览树的“Processes分支下回出现你新定义的流程,在浏览树里用鼠标双击流程就可以查看和修改流程活动的信息。3.2.4.4 投票活动Voting Activity你可以创建一个投票活动,这样允许你把通知发送给一个角色里的所有用户,并处理这些用户的响应,处理的结果断定活动里的流向。一个投票活动是一个通知活动,它首先把通知发送给一组用户,然后执行一个PL/SQL post-notification函数处理这些用户的响应投票。你在通知活动页面里定义的活动属性以与下面的四个域决定了投票的行为:消息域、结果类型域,展开角色选择框、函数域 创建一个投票查找类型,在该类型里包含了投票活动相处理的响应结果; 创建一个投票消息,它提示用户对投票查找类型的其中一个结果进展响应,你在定义消息的时候必须完成消息的结果页面,把消息的返回结果类型设置为投票查找类型; 从浏览树里选择一个单据类型,创建一个新的通知活动; 为投票活动指定一个内部名称和显示名称,你也可以输入一段描述性的摘要信息; 结果类型必须是投票查找类型; 选择一个图标来表示这个活动; 在消息域里,选择你刚刚定义的投票消息; 选中展开角色这个选项; 在函数域输入一个函数来处理用户的响应; 保存你所作的修改; 选择详细页来显示和修改活动的详细信息 选择角色页规定访问活动的角色信息; 选择访问页规定允许修改活动的访问级别;3.3 定义一个流程图在Oracle Workflow Builder里,流程图采用一种图形化的方式来显示流程里的活动以与活动之间的转移。在流程图里用一个图标来表示活动,用一个箭头来表示活动之间的转移。你可以从浏览树里把一个活动拖拽到流程图里,也可以直接在流程图里创建一个活动,在流程图里双击一个活动节点可以查看或修改节点的信息。通过在两个活动之间画一个箭头来表示活动之间的转移。转移在流程图里使用一个箭头表示的,它表示一个活动的完毕以与另外一个活动的激活。如果一个活动的结果类型是None,如此转移表现为一个指向另外一个活动的箭头,表示只要初始的活动一完毕,就流向下一个活动。如果一个活动有返回结果类型,如此你必须把转移和活动的一个结果联系起来,你也可以为定义了返回结果的活动定义下面的转移类型:Default,Any,Timeout。在没有任何转移匹配完成结果时,工作流引擎执行默认的转移;如果定义了一个人以的转移,如此不论活动的返回结果是什么,工作流引擎就执行这个转移,这样可以保证你除了在工作流里执行和放返回结果对应的活动外,还可以执行一个通用的活动。如果一个活动在完成之前已经超时,如此工作流引擎执行超时转移。一个活动的返回结果可以有多个转移来进展并行处理。3.3.1 增加一个节点 在开始画流程图之前,你必须先显示流程活动的流程窗口,你可以通过以下的方式显示流程窗口:在浏览树里双击一个定义好的流程活动;选择一个定义好的流程活动并按下Ctrl+E;选择一个流程活动,并从编辑菜单里选择流程详细信息;使用快速启动向导创建一个新的流程。 可以通过下面的方式创建一个节点:从浏览树里拖拽一个活动;选择New Function、New Notification、New Process工具栏按钮创建一个节点;在弹出菜单里选择Create Activity创建一个新的节点; 按住鼠标右健并把鼠标从一个活动拖到另一个活动就在两个活动之间创建了一个转移; 如果来源活动定义了放回结果类型,如此需要把转移和一个结果联系起来; 你可以在流程图里进展Copy和Paste;3.3.2 定义一个节点 打开流程活动的流程窗口; 使用工具栏按钮创建一个新的活动; 在单据类型域里,选择一个单据类型; 采用下面的方式定义节点的剩余信息:选择一个已定义活动的内部名称或显示名称,Workflow Builder会自动显示出原来定义的信息;另外你也可以使用新建按钮来创建一个新的活动,并根据活动的类型分别定义它们的信息,注意,在流程图里说做的修改都会反映到浏览树里的活动信息里; 选择“Node页来定义节点的特定信息,为节点指定一个标签,因为一个活动在一个流程里可能有多个实例,可以通过标签来区分同一个活动的不同实例; 指定节点是否为一个开始或完某某点; 如果流程有一个接过类型,你必须为完某某点指定一个最终的结果; 你可以提供一段注释信息供自己观察; 对一个通知或一个子流程活动,你可以规定该活动节点是否必须在规定的时间之内完成; 对一个通知节点来说,你可以覆盖同志消息的优先级,另外需要给通知活动指定一个执行者,这是一个角色; 保存你的修改; 如果节点是一个函数或通知活动,并且这个活动有参数,你可以选择节点属性页给这些活动属性赋值; 如果这个节点是一个子流程,如此一个子流程的标识会出现在子流程节点图标上。3.3.3 定义活动属性值活动属性值主要是别PL/SQL存储过程服务的,这个存储过程被函数或通知活动调用。 显示属性值页; 选择一个属性; 在值区域里,输入这个属性的值,这个值可以是一个常量也可以是一个对单据类型属性的引用。注意,这个值的类型必须和活动属性的类型以与存储过程参数的类型保持一致; 保存你的修改。4 在应用中调用工作流工作流在FORM中的触发。4.1、工作流的参数说明:1)itemType:工作流可看作一个类,itemType指类名,即工作流的内部名称,在工作流定义中设置。2)itemkey:工作流的触发可看成一个工作流类实例的形成。工作流触发后,一个工作流线程的生命周期如此开始了,直到这个流程的完毕,itemkey是这个实例的标识,它在已存活流程中是唯一的,建议以(ITEMTYPE+序列)的方式给其命名,以保证标识的唯一性。3)process:工作流中的流程名。在工作流定义中设置创建。4.2、工作流的启动步骤:4.2.1用CreateProcess创建工作流:wf_engine.CreateProcess( itemtype = l_itemtype, itemkey = l_itemkey, process = PROC1 );/*wf_engine.SetItemUserKey( itemtype = l_itemtype, itemkey = l_itemkey, userkey = p_je_batch_name ); wf_engine.SetItemOwner( itemtype = l_itemtype, itemkey = l_itemkey, owner = l_fnd_user_name );*/SetItemAttrText设置工作流属性:wf_engine.SetItemAttrText( itemtype= l_itemtype, itemkey = l_itemkey, aname = AAA, avalue = 兴征测试 );4.2.5用StartProcess启动工作流:wf_engine.StartProcess( itemtype = l_itemtype,itemkey = l_itemkey );4.2.6提交开始工作流:MIT;以上步骤中的2,3,4并不是必须的。4.3实例代码:首先在FORM中建一个按钮,点击时触发工作流。代码如下:declarel_itemtype VARCHAR2(10) := WJTEST;-工作流的内部名称l_itemkey VARCHAR2(40);-当前工作流线程的唯一标识符。p_je_batch_name VARCHAR2(40):=TEST78 ;l_fnd_user_name VARCHAR2(40):=SYSADMIN;begin select cc_con_contract_seq.nextval into l_itemKey from dual;-用CreateProcess创建工作流wf_engine.CreateProcess( itemtype = l_itemtype, itemkey = l_itemkey, process = PROC1 );/*wf_engine.SetItemUserKey( itemtype = l_itemtype, itemkey = l_itemkey, userkey = p_je_batch_name ); wf_engine.SetItemOwner( itemtype = l_itemtype, itemkey = l_itemkey, owner = l_fnd_user_name ); */ wf_engine.SetItemAttrText( itemtype= l_itemtype, itemkey = l_itemkey, aname = AAA, avalue = 兴征测试 );wf_engine.StartProcess( itemtype = l_itemtype,itemkey = l_itemkey );MIT; end;File Name:Document TemplateRef Number:xxxx-QLT-PSM-TEMP-001Version:Status:ReleasedAuthor:Xx ssIOrganization:XxxxxxxxxxxxxxxDepartment:Software Quality DepartmentTelnet:Email:Last Modified:2019/10/25 13:09:47Change RecordVersion(x.x)Summary of ChangeWritten By(First LAST)Approved By(First LAST)Date(mm/dd/yy)First Release06/01/01Change the location of reference number in footer06/28/01SIGNATURESTitleNameSignatureDateHOW TO USE THE TEMPLATEThis section describes how to use this template in generating document. Document developers are required to read this section carefully before using this template.1. Conventionsment TextsThe box with blue italic text are ments to record into each section. They are defined as “hidden in the font property so that they will not appear in the printed document by default. To view them in edit mode, check “hidden text in the “nonprinting character area in Tools-Options-View.To print them check “hidden text in the “Include With Document area in Tools-Options-Print.The text enclosed in the less than () quotations represent contents of the process writer. This should be detailed text.Optional ItemsThere are some items in this template that are enclosed by a pair of square brackets ( ). These items could be replaced by details or removed from the final document depending on the needs.Normal TextThe normal text is content provided by the template. They should be
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!