




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
文档控制文档控制iUNIT1 工作流概述1单元培训目标1LESSON 1 概述1UNIT2 工作流流程3单元培训目标3LESSON 1 工作流流程的组成结构3LESSON 2 计划一个工作流流程3UNIT3 创建工作流流程4单元培训目标4LESSON 1 创建工作流流程4UNIT4 定义项目类型、项目类型属性和快速编码8单元培训目标8LESSON 1 定义项目类型、项目类型属性和快速编码8UNIT4 定义通知活动9单元培训目标9UNIT5 工作流的目录服务11单元培训目标11LESSON 1 工作流的目录服务11UNIT6 定义功能和流程活动12单元培训目标12LESSON 1 定义功能和流程活动13UNIT7 工作流引擎17单元培训目标17LESSON 1 工作流引擎17LESSON 2 目录集和行顺序19LESSON 3 报表输出19UNIT8 使用工作流通知19单元培训目标19LESSON 1 使用工作流通知19UNIT9 监控工作流的进程21单元培训目标21LESSON 1 监控工作流进程21UNIT10 PL/SQL文档24单元培训目标24LESSON 1 PL/SQL文件24LESSON 2 年末关帐24UNIT11 SELECTOR功能24单元培训目标24LESSON 1 SELECTOR功能25LESSON 2 年末关帐26UNIT12 清除26单元培训目标26LESSON 1 清除26UNIT15 工作流安装配置27单元培训目标27LESSON 1 工作流配置27UNIT1 工作流概述单元培训目标u 了解工作流流程的概念u 了解工作流的体系结构u 了解工作流的特性LESSON 1 概述u 工作流主要用于完成以下三种业务需求:1 在业务流程中发送、提供附加信息,这些附加信息以自助的Web页面或Form的形式存在,例如:在Application中审批采购订单时,采购订单的form会作为附加信息提供给审批人。2 定义业务规则。使用WorkflowBuilder(图形化工具)修改业务规则的流程;使用PL/SQL写流程中活动的源代码。3 发送电子邮件。工作流可以以电子邮件的方式向任何Application的用户发送通知。u 工作流体系结构:1 开发者客户端:只要在PC上安装了WorkflowBuilder并且可以连接到数据库,就可以用来创建和修改工作流的定义。2 数据库服务器:工作流是和Oracle的数据库集成在一起的。3 应用服务器:包括Oracle Web Server、WebDB以及发送电子邮件的后台程序。4 最终用户端:安装了浏览器可以使用Application、接收工作流发出的邮件和使用用来监控工作流的Web页面。u 工作流的特性和定义:1 WorkflowBuilder:用来定义和修改工作流的图形化工具,运行在Windows操作系统上。可以将一个或几个工作流的定义保存到数据库中或保存成一个文件。WorkflowBuilder由对象浏览器和流程图表 两种窗口构成。对象浏览器以树状结构显示了工作流的对象构成,最上面一层是一个数据库连接或一个wft文件,下面一层显示的是在数据库或文件中包含的工作流定义,更下面一层的是构成一个完整的工作流定义的对象(例如:属性、流程、功能、通知、消息和快速编码)。流程图表窗口使用对象浏览器窗口中的对象来创建和修改工作流中的流程。工作流的流程是由活动(活动可以是功能、通知或另一个工作流流程)和各活动之间的连线构成的。在应用中可以通过工作流引擎的API来调用一个工作流的流程。一个工作流的流程开始于一个开始的活动。工作流引擎会自动地一个接一个地运行流程中的活动,直到遇到一个通知或一个暂停工作流流程的活动。当工作流引擎遇到一个通知时,它会调用通知程序来发送信息给某个角色,当用户或角色对通知作了回应,工作流引擎会接着运行后面的活动,直到遇到一个结束活动。在工作流的流程中可以使用循环、分支和平行结构以及使用子流程来实现复杂的业务规则。2 工作流引擎:工作流引擎是嵌在Oracle8i的服务器里的,执行由WorkflowBuilder创建的工作流流程的活动,监控每个活动的状态。3 工作流定义导入程序:导入程序运行在服务器端,用来将保存成wft文件的工作流定义装载到数据库中。在WorkflowBuilder中也集成了导入程序。4 通知系统:用来给角色发送通知(角色可以是一个用户或一组用户)。使用户可以通过电子邮件系统的客户端或Web浏览器来接收和回应通知。5 通知汇总(Notification Worklist)的Web页面:通知汇总列出了所有当前用户尚未回应或确认的通知。用户通过通知汇总的Web页面来阅读和回应发送给他的通知。6 通知明细Web页面:从通知汇总的Web页面可以连接到通知明细的Web页面,以查看每条通知的明细信息。7 电子邮件方式的通知:工作流的通知除了可以在11i提供的Web页面中查看,还可以以电子邮件的方式发送给Application的用户,这一功能是通过名为通知邮递员(Notification Mailer)的后台程序实现的。8 目录服务(Directory Services):工作流的目录服务是存在于数据库中的三个视图:WF_USERS、WF_USER_ROLES、WF_ROLES。WF_USERS记录了工作流的用户,接收通知的偏好(以通知汇总的方式或电子邮件的方式)和用户的电子邮件地址;WF_USER_ROLES记录了用户和角色之间的关系,一个用户可以同时从属于多个角色(例如:系统管理员的责任是一个角色,采购员的职位也是一个角色,一个用户可以即拥有系统管理员的责任又拥有采购员的职位),一个角色可以包含多个用户,用户和角色之间是多对多的关系;WF_ROLES记录了工作流中角色的信息,角色可以是一个用户、一个责任(所有拥有该责任的用户都属于这个角色)或一个职位(所有拥有该职位的用户都属于这个角色)。工作流的通知系统根据目录服务来决定将通知发送给谁,以什么样的方式发送。通知可以发送给一个单独的用户或发送给一个角色(一组用户)。9 工作流的监控u 系统管理员和用户可以通过Web浏览器来管理和控制工作流的实例。通过Application提供的监控Web页面,用户可以查看某个工作流实例的状态(eg.运行中、已完成或出错),工作流实例运行到哪个活动以及相关的工作流实例的属性的值,用户还可以对工作流实例进行加速(跳过某个活动)或者重试(重新运行某个活动)。UNIT2 工作流流程单元培训目标u 理解工作流流程由哪些对象组成u 计划一个工作流流程LESSON 1 工作流流程的组成结构u 项目类型(Item Type):组成工作流的对象的集合,在工作流流程中的每一个对象都必须从属于一个项目类型。u 项目类型属性(Item Type Attribute):就好像PL/SQL中的全局变量,它可以全局地被工作流流程中的活动引用(例如:在审批采购订单的工作流流程中,采购订单的编号就是一个项目类型属性,在审批流程的活动中可以随时获得这个属性的值,也就是采购订单的编号)。u 流程活动(Process Activity):在工作流的流程中包括三种类型的活动:功能、通知和子流程。u 功能活动(Function Activity):对应一个PL/SQL的存储过程(例如:在采购订单审批的工作流中,会有一个名为创建审批人列表的活动,它所对应的PL/SQL存储过程执行从审批层次的表中取出记录并将记录插入到审批人列表的表中的功能)。u 通知功能(Notification Activity):执行将特定信息发送给某个接收人的功能。u 信息(Message):通知的内容,必须将信息指定给某个通知。u 快速编码(Lookup Code):指定给某个工作流对象的值列表(例如:在采购订单审批工作流中回应通知审批采购订单的结果就是一个快速编码,回应的结果只能是审批、拒绝、转交或审批并转交之一)。u Workflow Builder:在Workflow Builder的对象浏览器窗口中以树状的方式显示了工作流的对象的组成,在树状结构的第三层(也就是项目类型的下面一层),包含以下这些分支:属性(Attribute)、流程(或子流程Process)、功能(Function)、通知(Notification)、信息(Message)和快速编码(Lookup Types);一个完整的工作流的定义就是由这些对象构成的。LESSON 2 计划一个工作流流程u 计划一个工作流的流程:1 确定你的业务需求。2 确定需求将由那些活动(步骤)来实现:a活动的类型,功能活动、通知活动或子流程;b.活动的结果是否会影响后续的活动,如果根据活动的结果的不同工作流流程会执行不同的后续活动(相当于PL/SQL中的判断结构),那么需要为活动的结果指定一个快速编码。3 定什么时候启动工作流流程,例如采购订单审批的工作流是当用户在采购订单的Form中按下提交审批的按钮后启动的。4 确定流程的结果,为流程的结果指定一个快速编码,例如采购订单审批的流程的结果有三个可能的结果值:审批、拒绝或超时。u 手工创建一个工作流的流程:1 定义一个项目类型;2 定义项目类型的属性;3 定义快速编码以及每个快速编码包含的值;4 定义信息;5 定义信息的属性;6 定义功能、通知以及子流程等对象;7 在Workflow Builder的流程图表 窗口中,绘制工作流流程(通过从对象浏览器窗口拖拽对象到流程图表 窗口,并在活动之间创建连线)。u 在2.5版本的Workflow Builder中,用户可以通过向导来创建工作流流程。UNIT3 创建工作流流程单元培训目标u 绘制工作流流程u 将标准的活动集成到流程中LESSON 1 创建工作流流程u 手工创建工作流流程的步骤请参考UNIT2的手工创建一个工作流的流程u 导入角色:如果在工作流流程的通知活动中要将通知的接收人设为一个常数,也就是将通知发送给某个固定的角色,那么需要将角色的信息从工作流的目录服务导入到Workflow Builder中,步骤如下:1 在Workflow Builder的 文件 菜单下选择打开菜单项,选择从数据库中(而不是从文件系统中)打开工作流,连接数据库然后选择一个要打开的项目类型;2 在 文件 菜单下选择导入菜单项,从数据库中导入角色;3 在查询角色的域中输入查询条件,然后按查找按钮;4 然后在查询结果的列表中选择你要导入的角色,单击添加按钮将角色添加到已导入角色列表中;5 单击OK按钮就完成了导入工作。这时在对象浏览器窗口中打开目录服务的分支(和项目类型位于同一层次上)就可以看到你刚才导入的角色,并且在通知活动的属性中指定接收人(performer)时可以选择到你刚才到入的角色。u 绘制流程每个流程都有一个或多个开始的活动和一个或多个结束的活动,在绘制流程之前你必须先进入到流程图表的窗口中,可以通过以下几种方式进入该窗口:1 在对象浏览器窗口中双击流程活动2 选择一个流程活动(将焦点定位到流程活动上),然后按Ctrl+E3 选择一个流程活动(将焦点定位到流程活动上),然后选择编辑菜单的流程明细(Process Detail)菜单项(也可以右击流程活动选择该菜单项)4 使用向导来创建流程活动,向导会打开流程图表窗口并在流程中创建一个开始活动和一个结束活动。在进入流程图表窗口后,通过以下几种方式往流程中加入新的活动:1 在对象浏览器窗口中选择一个活动(子流程、功能或通知),将它拖拽到流程图表窗口中2 在 流程窗口的工具栏上按新流程(new process)、新功能(new function)或新通知(new notification)按钮,这时鼠标指针变成十字形,然后单击流程图表窗口的空白处3 右击流程窗口的空白处,在弹出的菜单中选择新流程(new process)、新功能(new function)或新通知(new notification)菜单项。在加入新的活动后,需要将活动连接成一个完整的流程(在活动之间画上箭头):1 选择一个活动(源活动),按住鼠标右键,拖拽到目标活动,然后松开鼠标右键,这样会创建一个由源活动指向目标活动的箭头(注:箭头也可以指向自己,即源活动和目标活动都是同一个活动,例如:一个通知活动如果超时的话,那么重新再发一次通知)2 如果源活动有几个可能的结果值,那么在创建箭头的时候会弹出一个包含所有源活动结果值的菜单要求用户选择一个结果值,并且这个结果值将作为箭头的标签显示。关于活动之间的箭头的标签:1 如果源活动没有结果值或者活动的返回值不在活动所分配的快速编码的范围内,那么它和目标活动之间的箭头的标签为,的结果就相当于IfThenElsifElse.End If语句中的Else子句2 如果源活动有结果值,并且在画指向目标活动的箭头时指定了某个结果时,那么箭头的标签为源活动的某个结果值(即相应的快速编码的某个的值的显示名称)3 如果源活动有结果值,但无论结果值为什么它都将指向某个目标活动时,箭头的标签为,当源活动返回某个值后,工作流除了要运行相应的箭头所指向的目标活动以外还要执行后面的活动,在的箭头后面可以运行一些通用的活动(例如:写log文件)4 活动除了它所分配的快速编码所包含的结果值外,还会有活动超时的情况(例如:通知一直没有被回应),这时箭头的标签为5 对于实现投票表决功能的工作流活动,还可以有平局的结果或没有结果,这时箭头的标签可以是或。 u 从上至下地设计工作流流程在前面介绍的创建工作流的方式是由下至上地设计,即用户在进入流程图表窗口绘制流程前,先要在对象浏览器窗口中定义很多的底层对象(功能、通知、信息和快速编码)。而从上至下的设计方法正好相反,你可以先在流程图表窗口中绘制流程,然后再定义底层的对象。这种设计方法是通过WorkflowBuilder的向导实现的。用户在保存以这种方式设计的定义不完整的工作流时, WorkflowBuilder会显示一个列出所有错误信息的窗口,这些错误信息是由于流程或一些底层对象定义的无效引起的,用户仍然可以先保存该工作流,以后再对它进行修改。u 校验工作流流程的有效性当用户保存一个新创建或修改过的工作流时,WorkflowBuilder会自动校验工作流的有效性。如果工作流流程未通过校验,则将弹出一个错误信息列表的窗口,在该窗口中显示了未通过校验的原因。用户也可以进入对象浏览器窗口,然后选择文件菜单下的校验菜单项,对工作流进行校验。用户应该在每创建一个新的流程后,对新创建的流程进行校验,这将有助于发现一些有可能导致工作流流程无法正常运行结束的潜在的问题。一些会导致校验失败的原因:1 在一个工作流流程中是否存在开始和结束的活动2 工作流流程是否有递归调用的情况,即在流程活动里面又将自己作为子流程进行调用3 相同的子流程是否在同一个流程活动中被调用两次4 对于活动的每一个结果值是否都有一个相应的箭头指向一个目标活动5 结束活动是否被当作了一个源活动指向了另一个目标活动6 通知活动的结果值(快速编码)是否与分配给该通知的信息的结果值(快速编码)一致7 信息的信息体内所引用的信息属性,是否真的在定义信息的时候被定义u 修改流程中活动的节点属性活动(功能、通知、子流程)可以在同一个流程中被重复使用,所以用户在流程图表窗口中看到的每一个图标是活动的一个实例,即一个节点。在活动的属性窗口中有一个节点标签页,用于记录节点(也就是活动的实例)的属性。在流程图表窗口中选中一个活动然后按鼠标右键,在弹出的菜单中选择属性菜单项,然后单击活动属性窗口的节点标签页,对节点的属性进行修改:1 确定活动在流程中是一个开始活动、结束活动还是一般活动。如果活动是一个结束活动,并且流程本身有多个可能的结果值,那么需要为结束活动选择一个流程的结果值,例如:采购订单审批的流程有审批和拒绝两个可能的结果值,那么在流程的结束活动中需要选择一个结果审批或拒绝,即当结束活动执行结束后流程的结果是审批还是拒绝。2 一个活动可能在流程中被多次使用,为了唯一地标识每一个节点,需要在被复用活动标签后面加上-n,以唯一地标识它们。3 如果活动是一个通知活动,那么需要指定一个通知的执行人(performer),也就是通知的接收人。通知的接收人可以是一个固定值,用户可以选择一个角色(前提是用户已经在Workflow Builder中作过工作流角色的导入);接收人也可以是动态的,这时用户需要选择一个项目类型的属性,在工作流流程运行后,通知将发送给项目类型的属性所指定的角色。u 活动的属性(Activity Attribute)用户可以为项目类型定义很多属性,这些属性就相当于PL/SQL中的全局变量,在工作流流程运行的时候,任何活动都可以读写这些属性的值(例如:在采购订单审批的工作流中,有一个名为文档编号的属性用于存放采购订单的编号,在采购订单审批流程中的任何活动都可以读取这个文档编号)。对于流程中的活动,用户也可以根据业务的需要定义多个属性,这些属性的有效范围只局限于当前的活动,一旦这个活动运行结束,再也无法读写该属性的值,它就相当于PL/SQL中的局部变量。在活动的属性窗口的活动属性(Activity Attribute)标签页中可以为活动的属性指定值,属性的值可以是常数也可以是动态的,如定义动态的属性值,那么它的值必须参考项目类型的属性值。u 删除一个项目类型的属性要从数据库中删除一个项目类型的属性,用户必须从数据库中打开项目类型,而不是打开一个工作流的文件,然后删除项目类型的属性并保存,这样将真正从数据库中删除项目类型属性的定义。如果用户只是从文件中删除了项目类型的属性,然后将文将上载到数据库,这样并不能从数据库中删除该属性的定义。u 标准项目类型在工作流安装后就会有一个叫标准的项目类型,在这个项目类型中包含的一些功能和通知可以在别的项目类型中被引用,例如:在流程中的开始和结束活动都可以直接调用标准项目类型中的这两个功能,而无需用户每次都在对象浏览器窗口中定义这两个功能。u 查看工作流流程定义的WEB页面在11i版本的Application中Oracle提供了一个用于查看工作流流程定义的WEB页面,在用户选择了要查看的工作流流程后,Web页面会显示该流程包含的所有对象以及这些对象的详细信息。该页面的地址是/wf_item_definition.find_item_type。u 显示名称的冲突在同一个项目类型或同一个流程活动中所有的对象的显示名称都必须是唯一的,如果显示名称有重复在保存将会报错。如果用户使用工作流的导入程序来上载或升级工作流流程导数据库中,那么导入程序会自动解决显示名称冲突的问题,它会在那些重复的名称前拼上符号。UNIT4 定义项目类型、项目类型属性和快速编码单元培训目标u 创建项目类型u 创建项目类型Selector/Callback功能u 创建项目类型属性u 创建快速编码LESSON 1 定义项目类型、项目类型属性和快速编码u 定义项目类型在对象浏览器窗口中定位到一个数据库链接(Data Store)或一个文件(Work Space),然后在编辑菜单下选择新建项目类型菜单项,开始新建一个项目类型:1 输入项目类型的内部名称,该名称的最大长度为8个字符,并且不能包含冒号和空格2 输入显示名称和它的描述3 Specify the persistence type for this item type4 Specify the name of the selector/callback function for this item type.u 项目类型Selector/Callback功能u 定义项目类型属性(Item Attribute)需要定义哪些属性取决于业务的需要,就好像在写程序前需要确定要定义哪些变量一样:1 某些需要在通知里面显示的内容,这些内容需要被定义成项目类型的属性。例如:审批采购订单的通知中会显示采购员、供应商等信息,所以需要定义用于保存采购员、供应商等信息的属性2 在功能中经常要被引用的数据需要被定义成属性,例如:采购订单工作流的项目类型属性采购订单编号3 通知的收件人信息也需要定义成项目类型的属性创建项目类型属性的工作也是在对象浏览器窗口中完成的,先选择一个项目类型,然后选择编辑菜单下的创建新的项目类型属性菜单项。在项目类型属性的属性窗口中输入属性的内部名称、显示名称和描述,还要输入属性的数据类型。属性的数据类型包括:文本、数字、快速编码(枚举类型)、属性(参考另一个项目类型的属性的值)、URL、Form和文件。u Form类型的属性Form类型的属性主要被消息的属性参考,用于用户从接收到的通知追索到相关的Form。这种类型的属性,在通知明细的Web页面中,以图标的形式出现,用户点击图标可以打开相应的Form,例如:在审批采购订单的通知明细的Web页面中,有一个采购订单的图标,用户点击该图标可以打开采购订单的Form。这类属性的值是一个包含在双引号中的字符串,格式如下:parameterN = “Value”;双引号中字符串的值也可以参考另一个项目类型的值,格式如下:parameterN = “&item_type_attribute”。(Form类型的属性只有在Application中有效)u 文件类型的属性u URL类型的属性u 定义快速编码u 快速编码从属于一个项目类型,但是可以被多个项目类型引用。在对象浏览器窗口中选择一个项目类型,然后选择编辑菜单的新建快速编码菜单项来创建一个新的快速编码,接着输入快速编码的内部名称、显示名称和描述。在创建完快速编码后,需要为快速编码定义值(Lookup Type Code),选择一个快速编码,然后选择编辑菜单的新建快速编码值的菜单项,接着输入快速编码的内部名称、显示名称和描述。UNIT4 定义通知活动单元培训目标u 定义消息(Message)u 定义消息的属性u 定义通知活动LESSON 1 定义通知活动 u 通知活动A step to communicate with a human being. A notification activity sends a message to a user containing the information needed to complete the work. The notification may or may not require a response from the recipient. u 创建消息在对象浏览器窗口中,定位到对象树的消息分支上,选择编辑菜单下的新建消息菜单项,创建一个新的消息。1 输入消息的内部名称、显示名称和描述2 确定消息的优先级,当用户收到多条通知时可以按照消息的优先级对它们进行排序。u 编辑消息的内容消息的内容包括主题(Subject)和信息体(Body)。主题是显示在通知汇总的Web页面里的,而信息体是显示在通知明细的Web页面里的。定位到消息属性窗口的信息体(Body)标签页上,分别编辑消息的主题和信息体,信息体可以是文本的形式或HTML的形式。在标题和信息体中可以使用消息的Attribute,例如:审批采购订单的工作流中有一个名为审批采购订单的消息,消息包含了一个叫采购订单编号的Attribute,这个Attribute的内部名称为DOCUMENT_NUMBER,消息的主题为请审批采购订单&DOCUMENT_NUMBER,那么当通知发送给用户时消息主体中的&DOCUMENT_NUMBER将由消息的Attribute的值取代,如果审批的采购订单的编号为100,那么消息的主题将是请审批采购订单100。u 定义消息的结果如果消息需要用户做出回应,这时就需要定义消息的结果,消息的结果在消息的属性窗口中的结果标签页中进行编辑。输入结果的显示名称,这个显示名称将作为在通知的Web页面中作为提示信息,提示用户输入结果。为消息的结果分配一个快速编码(结果的可能值,例如:审批、拒绝),消息的结果快速编码必需与分配给通知活动的结果的快速编码一致。在对象浏览器窗口中,那些定义过结果的消息的图标左下角有一个红色的问号。u 定义消息的Attribute在对象浏览器窗口中定位到消息,然后选择编辑菜单下的新建消息Attribute菜单项。消息Attribute的属性窗口和项目类型Attribute的属性窗口相类似,但是多了一个名为来源(Source)的域。那些用于消息的主题和信息体的Attribute的来源为发送(Send),Attribute可以是一个常数或参考一个项目类型的Attribute的值。如果需要用户在回应通知时,输入一些附加信息(例如:在审批或拒绝采购订单时,需要用户输入一些批注信息 ),那么需要在消息下面定义Attribute,并且Attribute的来源为回应(Respond)。对于包含来源为回应的Attribute的消息,当用户收到通知时,在Web页面中会有一些要求用户输入回应的域。在对象浏览器窗口中,来源为回应的消息Attribute的图标的左下角有一个红色的问号。u 创建通知活动通知必须从属于一个项目类型,在 对象浏览器窗口中,选择一个项目类型,然后选择编辑菜单下的新建通知菜单项,创建一个新的通知活动。1 输入通知活动的内部名称、显示名称和描述2 分配一个快速编码,通知活动只能返回快速编码的值之一3 通知活动有一个缺省的图标,用户也可以选择其他的图标4 为通知选择一个消息5 如果通知要发送给一个包含多个用户的角色,并且希望为每个用户创建一个单独的副本,那么需要选择扩展用户(Expend Roles)复选框6 可以为通知选择一个数据库的存储过程,那么在通知被回应后,工作流引擎将运行该存储过程7 如果通知是一个FYI(For Your Information)通知,由于这类通知不需要用户回应(即通知没有结果值),用户只需阅读该通知,所以建议选择扩展用户(Expend Roles)复选框8 选择扩展用户(Expend Roles)复选框的另一个用途是投票表决系统,例如:如果将采购订单发送给一个角色要求审批,并且未选中扩展用户(Expend Roles)复选框,那么尽管角色所包含的每一个用户都能收到一个要求审批采购订单的通知,但是只要其中任何一个用户审批了该采购订单(即在回应通知时选择审批),采购订单即被审批,并且其他用户的审批该采购订单的通知也将被关闭;如果选择了扩展用户(Expend Roles)复选框,那么当一个用户回应了通知后,其他用户仍然能回应审批采购订单的通知,只有当所有用户都做出了回应后,通知活动的后续活动才会根据每个人的回应结果,决定采购订单是否被审批,投票表决的规则是通知活动的后续活动实现的。u 通知活动的明细属性页进入通知活动的明细属性(Detail Property)标签页,该页面用于输入通知活动的出错处理,这些属性是可选的。在错误处理的项目类型(Error Item Type)域中输入一个项目类型的内部名称,在错误处理的流程活动(Error Process)域中输入流程活动的内部名称,当通知活动出错时,工作流引擎将执行在该标签页中指定的项目类型的流程活动。 u 指定通知活动的超时属性将通知活动从对象浏览器窗口拖到流程图表窗口后,在流程图表窗口中打开通知活动的属性窗口,会增加一个节点(Node)标签页。在该标签页中可以输入通知活动的超时属性,超时属性有三种取值类型:无超时、项目类型Attribute、相对时间。如果超时属性为无超时那么通知不要求用户在特定时间内回应;如果为相对时间,例如:相对时间为5天,那么通知必须在发出后5天内进行回应,否则流程将进行超时处理,即运行通知结果为超时的后续流程;项目类型Attribute和相对时间的效果类似,只是相对时间的取值为常数,而项目类型Attribute的值是动态的。u 定义通知的优先级前面介绍过定义消息的优先级,在通知活动的节点标签页中,可以定义通知的优先级。如果用户未定义通知的优先级,那么通知将取分配给它的消息的优先级;如果用户定义了通知的优先级,那么工作流运行时将以通知的优先级为准。通知的优先级可以定成常数,也可以参考项目类型Attribute的值。u 定义通知的执行人(Performer),即收件人u 用户必须在节点标签页中指定通知的收件人,通知收件人可以是常数,也可以参考一个项目类型Attribute的值(在此之前必须先定义一个类型为角色或文本的项目类型Attribute)。UNIT5 工作流的目录服务单元培训目标u 解释工作流如何接收角色信息u 联接工作流和目录库LESSON 1 工作流的目录服务u 术语角色:A grouping of one or more users who share a common responsibility目录库(Directory Repository): A set of database tables that contain user informationu 目录服务的数据库视图、工作流的目录服务本身并不包含目录库(基表),它是由三个数据库视图组成:WF_ROLES、WF_USERS、WF_USER_ROLES。这些视图从基表中获取有关用户和角色的信息。这些视图是由Application提供的wfdirhrv.sql创建的。u WF_USERS视图WF_USERS的列:Name:用户的内部名称Display_name:用户的显示名称Description:用户的描述Notification Perference:用户接收通知的偏好,是通过Application提供的Web页面查看通知,还是通过电子邮件的方式Language:语言信息Territory:日期、数字格式Email Address:电子邮件地址或地址列表Fax:传真号Orig_System:视图的基表信息Orig_System_id:记录在基表中的主键Status:用户信息当前的状态:有效、无效或暂时离开Expiration_Date:用户信息在目录服务中失效的日期u WF_ROLES工作流的角色可以是职位或责任,同时它还包含了所有的工作流用户。该视图的列的含义和WF_USERS类似。如果WF_ROLES的Email_Address字段为空,那么通知系统将给该角色所包含的所有用户发邮件。u WF_USER_ROLESu 记录了用户和角色之间的关系,用户和角色之间是多对多的关系。u 目录服务的信息是取自Application的基表的,如果用户需要从外部系统增加信息到工作流的目录服务,那么需要在WF_LOCAL_USERS、WF_LOCAL_ROLES、WF_LOCAL_USER_ROLES中输入信息,这三张表的字段和前面介绍的三个视图的字段相同。向这些表中添加记录是通过包WF_DIRECTORY中的存储过程实现的。UNIT6 定义功能和流程活动单元培训目标u 定义功能活动u 定义活动的Attributeu 应用工作流引擎的APIsu 定义流程活动LESSON 1 定义功能和流程活动u 定义一个功能活动功能活动在对象浏览器窗口中定义。功能活动必须从属于一个项目类型,所以首先选择一个项目类型,定位到它的功能分支上,选择编辑菜单下的新建功能菜单项,创建一个新的功能。1 输入功能的内部名称,显示名称和描述2 功能有缺省的图表,用户可以为它选择另一个图标3 在功能类型(Function Type)域中输入功能的类型:PL/SQL存储过程或外部程序;在功能名称(Function Name)域中输入存储过程的名字或者外部程序的名字4 输入功能活动的系统开销,即工作流引擎需要运行该功能活动的时间。如果系统开销过大,那么该功能活动将由后台的工作流引擎运行。u 标准的PL/SQL API所有功能活动调用的PL/SQL存储过程,必须按一定的格式书写,只有这样工作流引擎才能正确地运行它们,格式如下:procedure (itemtype in varchar2,itemkey in varchar2,actid in number,funcmode in varchar2,resultout out varchar2) isbeginif (funcmode=RUN) thenresultout:=COMPLETE:;return;endif;if (funcmode=CANCEL) thenresultout:=COMPLETE;return;endif;.u 参数的含义itemtype:项目类型的内部名称,例如:请购单审批的项目类型的内部名称为REQAPPRVitemkey:由应用生成的一个字符串类型的主键,用来在项目类型中唯一地标识一个项目。例如:用户在APPLICATION的请购单的FORM中进行提交审批的操作,那么FORM会调用请购单审批的工作流(REQAPPRV),并且会为ITEM_KEY产生一个值(例如:100-221),如果另一个用户也提交了一张请购单审批,那么它的ITEM_KEY为101-222,这样ITEM_KEY就能唯一地标识了这两次请购单审批actid:活动的IDfuncmode:运行模式,它的可能的取值为RUN(功能活动第一次被运行),或CANCEL(功能活动作为循环的重置被再次运行;功能活动所属的流程活动被取消或被执行UNDO操作;)resultout:返回值,它的可能的取值为:1 COMPLETE: 如果功能活动正常结束,并且功能活动分配过返回值的快速编码,例如:功能活动可能的返回值为Y或N,那么功能活动正常结束的话,存储过程的返回值为COMPLETE:Y或COMPLETE:N2 WAITING 活动被暂挂,等待另一个活动结束3 DEFERRED: 活动由后台工作流引擎运行,并且被推迟到一个具体的时间,由指定的具体时间(书写日期的格式:to_char(,wf_engine.date_format))4 NOTIFIED:5 ERROR: 活动遇到一个错误,并且返回作为错误代码u 通知活动对应的PL/SQL存储过程的格式procedure (itemtype in varchar2,itemkey in varchar2,actid in number,funcmode in varchar2,resultout out varchar2) isbeginif (funcmode=RESPOND) thenresultout:=COMPLETE;return;endif;if (funcmode=FORWARD) thenresultout:=COMPLETE;return;endif;if (funcmode=TRANSFER) thenresultout:=COMPLETE;return;endif;if (funcmode=RUN) thenresultout:=COMPLETE:;return;endif;if (funcmode=TIMEOUT) thenresultout:=COMPLETE;return;endif;.u 信息活动的功能执行模式(FUNCTION MODE)1. RESPOND 用户对通知进行了回应,通知活动对应的存储过程可以根据用户的回应运行相应的代码,例如:如果用户只能回应审批,那么当用户回应拒绝时,可以在通知活动对应的存储过程中报错,不让用户回用拒绝2. FORWARD 通知的收件人将通知转交给另一个用户,通知活动对应的存储过程可以决定是否允许用户进行转交3. TRANSFER 同FORWARD4. RUN无论用户回应的结果是什么,该模式可以执行一些附加的业务逻辑5. TIMEOUT 在通知超时的情况下,执行相应的业务逻辑u 通知活动对应的存储过程的返回值在RESPOND、FORWARD、TRANSFER的模式下,RESULTOUT参数将被忽略,除非程序返回ERROR:,这样错误信息将取代用户的回应,在存储过程中触发一个异常,也能达到同样的效果。u 异常处理在功能活动中异常处理的代码格式如下:exceptionwhen others thenWF_CORE.CONTEXT (, , ,to_char(), ;raise;end 用户可以从表WF_ITEM_ACTIVITY_STATUSES的字段ERROR_MESSAGE、ERROR_STACK中获得活动的出错信息。u 定义功能活动的Attribute功能活动对应的PL/SQL存储过程或外部程序必须按照前面介绍的格式书写,如果用户希望为功能活动增加额外的参数,必须通过功能活动Attribute。功能活动是在对象浏览器窗口中定义的,它必须从属于一个功能活动,所以首先选择一个功能活动,然后选择编辑菜单的新建Attribute菜单项。功能活动Attribute的属性窗口和项目类型的属性窗口类似。功能活动的Attribute和项目类型的Attribute的区别在于前者只能用于功能活动,而后者对于整个工作流流程来说是全局的。u 定义流程活动在用户进入流程图表窗口绘制流程前,必须先定义一个流程活动。在对象浏览器窗口中选择一个项目类型,然后选择编辑菜单下的新建流程菜单项。1 输入流程活动的内部名称、显示名称和描述2 为流程活动选择一个图标,也可不选(使用缺省的图标)3 如果流程有几个可能的结果,那么选择一个结果的快速编码4 如果流程是最上一层的流程,即不会作为别的流程的子流程,那么选择Runnable复选框;反之,如果流程是别的流程的子流程,则清空Runnable复选框。u 配置流程活动的明细属性任何活动(流程活动、通知活动和功能活动)都有配置明细属性的标签页,它们的明细属性配置十分类似。1 输入一个项目类型的内部名称和该项目类型中一个流程活动的内部名称。该项目类型和它的流程将在当前的流程活动出错时运行。2 On Revisit域用于确定当活动在同一流程中被工作流引擎再次访问时将如何处理:Ignore该流程的后续流程将被忽略;Reset重置活动的状态(通过参数Function Mode=CANCEL实现);Loop不重置活动状态而重新运行。u 错误处理u xxxUNIT7 工作流引擎单元培训目标u 理解工作流引擎是怎样管理工作流流程的u 在功能活动中使用工作流引擎的APILESSON 1 工作流引擎u 工作流引擎概览1 工作流引擎是运行在数据库服务器端的PL/SQL程序2 工作流引擎任何时候都处于激活状态,只要它的PL/SQL过程或函数被调用3 工作流引擎管理着每个工作流流程实例的活动4 当一个活动完成后,工作流引擎决定了下一个将被运行的活动5 工作流引擎自动执行工作流的功能活动6 工作流引擎会调用通知
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届山东省东营市四校连赛化学九年级第一学期期中监测模拟试题含解析
- 离婚协议书:婚姻终止后财产保值增值合作协议
- 离婚协议签订中关于子女抚养权纠纷的法律解决途径
- 离婚协议中赡养费支付期限与方式创新性研究
- 离婚协议书范本:融合心理辅导、情感疏导的合同样本
- 文化传媒私人工厂影视制作人员劳务派遣合作协议
- 宁波市精装修商品房买卖合同及售后装修质保服务协议
- 理发店员工培训与发展聘用一体化服务协议
- 婚姻破裂房产过户合同范本:合法合规操作指南
- 离婚协议书附带债务偿还及财产分割细则
- 2025主题教育应知应会知识题库及答案
- 无人机航空安全知识培训课件
- 警用侦查无人机在侦查行动中的应用分析报告
- 2024年春季云南省高中学业水平合格性考试化学试卷真题(含答案)
- 石膏板项目可行性研究报告
- 2025年肠造口护理及并发症防治考核试题及答案
- 勘查地球物理导论课件
- 腹痛教学课件
- 2025年全国青少年学宪法讲宪法知识竞赛高中答案
- 2025年放射工作人员培训考试试题(+答案)
- 2025 临终患者症状管理课件
评论
0/150
提交评论