部分参考: http://hutianci.iteye.com/blog/1023363
工作流组成:
1).工作流(item type):
其实就相当于一个业务类型。主要是定义业务信息,另外还包含一些在其他对象需要引用的信息。
为方便理解,可以看作是一个工作流的容器和标志。
2).活动(activity):
是工作流程中的一个执行单元。活动有自己的类型,在运行时,活动的实例会返回一个结果,工作流引擎会更具活动实例的返回值
决定业务流程如何流转。 活动有三种类型:通知,流程和函数。
3).流程(process):
是业务流程的流转规则,真正的流程,由Notification、Function、子Process组成,
开始于一个Start Function,结束于一个或多个End Function,中间是Notification和Function组成的业务流程,
在这个级别上可以把Notification、Function、子Process看成是一样的即activity,
他们都有返回值,不同的结果走不同的流程,由此组成一个符合业务需要的图表
4).消息(message):
消息主要是为通知服务的,可以把消息当作通知的内容和类型。
就是一个消息,内容在Body里面定义,用&引用Message自己的Attribute;对我们程序有用的的是Message的Attribute,
一般和上面的全局变量Attribute对应,Send类型的Attribute将取当时的全局变量Attribute的值发给用户看,
Response类型Attribute将把用户输入的内容返回给全局变量Attribute供我们的程序作下一步判断使用。
一个可以自动执行的活动,该活动可以完成一定的功能,函数通常和一个PL/SQL存储过程联系在一起。
一般对应一个PL/SQL函数并定义返回值为某个Lookup Type。
6).事件(Event):
7).通知(notification):
通知活动对一个人或一个角色发送一个通知,通知必须和一个消息联系在一起。
发送一个消息,消息内容为定义的Message内容,消息的接收人是定义的Performer
8).查找类型(lookup type):
查找类型是你定义的一些枚举类型。工作流里的查找类型主要用来表达活动结果返回值类型。
基础字典列表,就像我们的部门字典表,销售方式字典表一样,不过它是静态的;根据需要设置,
一般用来标志工作流各类Item的返回值,和我们的PL/SQL函数返回值一一对应。
9).属性(Attribute):
全局变量,供整个Item Type里面的元素使用,可以作为Message的附加属性,
Send给用户看或者存储用户的Response内容比如Note和Forward To;
Attribute另一个常用的地方是作为Notification的Performer。当然我们的PL/SQL代码是离不开Attribute,
几乎任何PL/SQL函数都需要通过取得Attribute变量--判断Attribute变量--设置Attribute变量,
决定程序如何走,返回什么值。
-----------------------------Workflow 的保存方式:----------------------------------------
1、Workflow builder 中直接保存到数据库或本地文件目录(后缀名.wft)。
2、用FTP工具将wft文件上传到应用服务器的客户化应用目录,在命令行运行如下命令:
注意UNIX区分大小写。
cd $CUX_TOP/install
WFLOAD apps/apps 0 Y UPLOAD $CUX_TOP/install/Your_workflow_file_name.wft
3、用FTP工具将wft文件上传到应用服务器的客户化应用目录,然后到系统管理员职责提交请求:
请求名:Workflow Definitions Loader
参数:
Mode: Upload
File:$CUX_TOP/install/Your_workflow_file_name.wft
Item Type:置空
-----------------------------Workflow 的保存方式:----------End------------------------------------
----------------------------------------运行Workflow的方式-----------Start------------------
方式一、Workflow管理界面(N:System Administrator/Workflow/Adminnistrator Workflow/Home)
方式二、PL/SQL 启动WorkFlow
DECLARE
l_item_key VARCHAR2(30) := 'COX_DEMO_201303281446';
l_user_item_key VARCHAR2(30) := 'COX_DEMO_201303281446';
l_item_type VARCHAR2(30) := 'COX_0002';
l_process VARCHAR2(30) := 'COX_TOP';
l_submiter_id NUMBER := 31819;
l_approver_id NUMBER := 31819;
l_orig_system VARCHAR2(30) := 'PER';
l_user_name wf_roles.NAME%TYPE;
l_display_name wf_roles.display_name%TYPE;
BEGIN
--01 创建
wf_engine.createprocess(itemtype => l_item_type,
itemkey => l_item_key,
process => l_process,
user_key => l_user_item_key);
--02 初始化
wf_directory.getusername(p_orig_system => l_orig_system,