Oracle_Workflow_Builder工作流工具(一)

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

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

    1. 创建流程定义
      1. 从下往上定义
  • 启动Oracle  Workflow Builder;
  • 选择File——〉New菜单为流程定义创建一个新的Workspace;
  • 创建一个新的单据类型(Item Type)
  • 你可以定义单据类型属性来完全描述你的单据类型,或者定义需要在活动里需要引用的信息;
  • 创建新的查找类型(Lookup Type):在定义活动之前,你应该先定义表示活动结果的查找类型,活动结果是活动完成时可能返回值的一个列表。在定义完活动和查找类型之后,你可以从浏览树上把一个查找类型拖拽到一个活动上来指定一个活动的结果类型;
  • 创建新的消息(Message):如果你希望为你的流程定义一个通知活动,你首先需要定义一个你希望通知活动发送的消息,你可以在浏览树里把一个消息拖拽到一个通知上来指定活动的通知类型。你也可以为消息定义属性,消息的属性有两种类型:“Send”类型的属性用来生成动态内容,“Response”类型提醒接收者进行响应。
  • 创建一个新的流程活动、通知活动或函数活动,你也可以使用在标准单据类型里定义的标准活动。你至少需要定义一个流程活动来表达你的流程图,流程图建立了流程里所有活动的关系。
  • 画流程图:显示流程活动的流程窗口,并画出工作流程里的活动以及活动之间的转移关系。你可以从浏览树里直接把活动拖拽到流程图里。
  • 选择“File——〉Save”或“File——〉Save As”保存你的工作
  • 在数据库里创建函数活动调用得PL/SQL存储过程
      1. 从上往下定义
  • 启动Oracle  Workflow  Builder
  • 使用快速启动向导为你的流程定义建立一个框架,指定新单据类型和流程活动所需要的信息。
  • 在流程窗口里会出现一个开始节点和结束节点,你可以在开始节点和结束节点之间增加流程需要的活动
  • 在流程图里画出活动之间的流转关系
  • 保存你的工作
      1. 打开保存单据类型

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

        1. 访问保存的流程定义
  • 启动Oracle Workflow Builder,并选择“File——〉Open”;
  • 选择保存工作流程定义的类型:文件或数据库
  • 打开一个文件是可以输入该文件的完整路径和文件名,并选择Ok按钮,或者使用浏览按钮来定位文件;
  • 打开数据库连接的话,输入用户名和口令,并输入数据库别名或连接字符串并单击OK按钮;
  • 如果同时有多个单据类型存在的话,显示单据类型窗口就会出现,从隐藏列表里选择一个
  • 如果你想查看或修改隐藏的的单据类型,你可以从浏览树上从双击隐藏单据类型来选择;
  • 当你完成工作之后,选择“File——〉Save”菜单,保存你的修改信息。
        1. 保存修改信息
  • 在Oracle Workflow Builder 里选择“File——〉Save”命令保存你的修改,并使修改立即生效。当你使用保存命令的时候,在当前的数据存储里保存了所有对象的修改信息,如果只想保存一个特定的单据类型,你需要创建一个新的数据存储,并把这个单据类型复制到新的数据存储里保存。
  • 如果你想把单据类型存放到另外一个数据存储,或者想保存和当前系统不同的另外一个生效的数据,你可以使用“File——〉Save as”命令
  • 注意,当你保存你的工作的时候,Oracle Workflow会自动验证流程定义里无效或缺失的信息,并把它显示出来,你可以根据提示的信息修改错误也可以先保存等有时间的时候再修改。如果你没有改正错误就保存,那么在你重新打开的时候,Oracle Workflow Builder还会报错
  • 选择“File——〉Close Store”关闭和数据存储的连接
  • 推出Oracle Workflow Builder。
    1. 定义工作流组件

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

      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函数决定在一个特殊的条件下运行哪一个流程活动。你也可以扩展这个选择函数为一个回调函数,这样在流程执行的过程中,如果会话信息中断的话,可以恢复单据类型实例的上下文信息。当你从通知详细页面上去查看一个页面属性时特别有用

        1. 创建一个单据类型

  • 如果你没有打开一个data store,从File里选择New菜单创建一个新的Data Store,然后从Edit菜单里选择New Item Type在浏览树里定义一个新的单据类型,此时单据类型的属性页会出现;
  • 每一个单据类型有一个大写的内部名称,最多8个字符,所有的工作流API、PL/SQL过程,SQL脚本在识别单据类型的时候都引用单据类型的内部名称。在内部名称里不能包括“:”和“/”;
  • 输入一个翻译性的名字,该名字是一个长一些的描述性名称,你也可以为单据类型输入一段摘要信息;
  • 指定单据类型的持续类型,如果你为单据类型指定了一个临时类型,指定在单据类型实例结束之后状态审核记录必须保存的时间;
  • 如果单据类型有多个或会有多个流程和它联系在一起,你需要为单据类型指定一个选择函数,选择函数的语法是<package_name>.<procedure_name>。选择函数是一个PL/SQL存储过程,它自动标识工作流引擎应该执行的那个流程;
  • 选择“Apply”保存你的修改;
  • 选择“Roles”页规定能访问单据类型的角色(这个功能会在将来的发行版本支持);
  • 选择“Access”页规定单据类型的访问和定制级别;
  • 选择“Apply”保存你的修改;
  • 在浏览树里会出现一个二级分支来表示你刚创建的单据类型,你可以在浏览树里双击单据类型浏览或修改单据类型的属性;
  • 定义尽可能多的单据类型属性作为全局变量,这样在流程活动里就可以引用这些单据类型属性。
        1. 定义一个单据类型或活动属性
  • 从浏览树里选择一个单据类型,然后从“Edit”选择“New Attribute”可以创建一个单据类型属性

从浏览树里选择一个活动,然后从“Edit”选择“New Attribute”可以创建一个活动属性

在两种情况下都会出现属性定义页

  • 输入一个大写的内部名称;
  • 输入一个显示名称,该名称会出现在浏览树里;
  • 你可以输入一段描述摘要信息;
  • 选择属性的数据类型,在定义活动属性的时候,没有Form,URL,Document属性类型;
  • 根据你选择的属性类型,为属性指定默认值信息;
  • 对单据类型属性来说,可选的默认值是一个你输入或从列表中选择的常量,不过,这个常量可以是一个在运行时替换的字符串;对活动属性来说,默认值可以是一个常量或者一个单据类型属性;
  • 选择“Apply”保存你的修改,选择“Ok”保存你的修改并推出属性页面,“Cancel”取消你的修改并推出属性页面;
  • 如果你在定义一个单据类型属性,选择“Access”页设置允许修改属性的访问级别;
  • 选择“Apply”保存你的修改;
  • 你创建的任何单据属性类型会出现在浏览树的“Attributes”分支下,所有的函数属性出现在对应的函数下面,你可以从浏览树里双击一个属性浏览或修改属性的定义。
        1. 定义一个URL属性
  • 在属性默认值里指定一个URL地址,这个URL可以是一个常量或者一个从其它单据属性返回的值;
  • 你也可以在URL里包含字符串参数,这个参数可以是一个字符串文本或一个其它单据类型的格式替换。在参数字符串里采用其它单据类型进行格式替换,需要采用如下的格式:&item_attr;
  • 如果URL里包含一个参数字符串,你必须遵守如下的限制:你不能用一个文档类型的单据类型属性对参数进行格式替换;你可以用表单或URL属性对参数进行格式替换,但不能进行嵌套替换;
  • 如果你需要在URL里传递一个日期时间参数,你需要使用TO_CHAR函数把日期时间转换为如下格式:“YYYY-MM-DD+HH24:MM:SS”,同样对日起类型需要使用TO_DATE;
  • 结束工作之后选择“OK”按钮保存。
        1. 定义一个Form属性
  • 在窗体属性页的默认值里指定一个窗体函数的名称以及可选的字符串参数(窗体函数的参数);
  • 默认值必须使用下面的格式输入:function_name:arg1=value1 arg2=value2…argn=valuen,argn的值可以是一个包含在双引号内的字符串,也可以是一个被其他单据类型属性进行格式替换的值,可以使用下面的方式定义格式替换:argn=”&item_attr”或者argn=”value &item_attr”;
  • 如果你的窗体属性内包括参数,你必须牢记以下的限制:你不能使用一个文档类型的属性进行标记替换;你可以使用一个窗体类型或URL类型的属性进行标记替换,但是你不能进行嵌套替换;
  • 保存你的工作。
        1. 定义一个Document属性
  • 在属性页的默认值里输入一个标识文档的字符串;
  • 你可以标识以下两种类型的文档:PL/SQL文档或者存放在文档管理系统里的文档;
  • 一个PL/SQL文档表示数据库里的数据,该文档由一个存储过程产生,需要使用下面的方式来指定一个PL/SQL文档的默认值:plsql:<procedure>/<document_identifier>。在使用时用一个包和过程名称来替换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:<node_ID>:<document_ID>:[version];
  • 选择“OK”保存你的修改。
      1. 查找类型(Lookup Type)

查找类型是一个静态值列表,这些列表可以被活动、单据类型、消息或属性引用,例如一个活动可以引用一个查找类型作为它可能的返回值。

当你定义一个查找类型的时候,你必须把它和一个单据类型联系起来;然而,但你在创建一个活动或属性的时候,你可以引用但前数据存储里的任何查找类型,不论这个查找类型和哪个单据类型联系在一起。

        1. 创建查找类型

  • 从浏览树里选择一个单据类型,然后从“Edit”选择“New Lookup Type”,一个查找类型属性页就会出现;
  • 查找类型有一个大写的内部名称、一个显示名称,你也可以输入一段描述性的摘要信息,在引用查找类型的时候,需要指定它的内部名称;
  • 选择“Access”页定义允许修改查找类型的访问级别;
  • 保存你的修改;
  • 新定义的查找类型会出现在浏览树的“Lookup Types”分支下面,你可以在今后双击该查找类型来查看和修改它的属性;
        1. 为查找类型定义编码

  • 选择一个查找类型,并从“Edit”里选择“New Lookup Code”,一个查找编码属性页会出现;
  • 输入大写的内部名称、显示名称,你也可以输入一段摘要信息;
  • 保存你的修改;
  • 新定义的查找类型编码会在相对应的查找类型下面出现。
      1. 消息(Message)

消息时工作流程里通知活动发送给角色的内容,消息可以提示户对通知进行回复或者让用户采取一个动作决定下一个活动,在工作流里一个消息的接收者被称作“Performer”;每个消息都和一个单据类型联系在一起,这样可以允许消息引用单据类型属性,在运行时进行标记替换。

当你定义消息的时候,可以指定接收者回复的值,然后工作流引擎根据用户的返回值决定流程的下一个活动,你也可以在消息的主题和消息体内包括消息属性使消息成为一个上下文环境敏感的消息。你可以从浏览树里直接把一个消息直接拖拽到通知分支下面创建一个发送该消息的通知,也可以把消息拖拽到一个已存在的通知活动上更新通知发送的消息。

当你为通知活动创建一个通知的时候,你需要注意通知是否规定了一个结果类型,如果有结果类型的话,你创建的通知需要提示通知接收者一些特定的响应用来解释通知的结果类型,工作流引擎使用这些结果决定流程需要流到哪些活动。要想创建一个对特殊响应进行提示的消息,你需要完成消息页面的“Result”页,你输入的信息创建了一个特殊的“Response”消息属性,它有一个内部名称“RESULT”,结果消息属性的数据类型是一个查找类型,并且必须和通知的结果查找类型一致,这可以保证通知活动的执行者从一个通知活动期望的结果值列表里选择一个值。

一旦你创建了一个消息,你可以为消息定义需要的所有属性,在浏览树里消息的属性存放在消息的下面。消息属性的来源(Send or  Respond)决定了消息属性的使用方式,你可以使用“Send”类型的消息属性进行标记替换或者和消息一块发送。每个消息类型都有一个数据类型,“Send”类型的消息属性可以是一个常量或者是一个对单据类型属性的引用。“Response”类型的消息属性组成了消息的响应部分,响应消息属性为接收者的响应提供了指令。如果你定义了一个响应消息属性,你必须给它指定数据类型,你也可以给它指定一个默认值,默认值可以是一个常量,也可以是对相同数据类型单据类型属性的引用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秒变学霸的18岁码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值