日期:2014-05-16  浏览次数:20522 次

Oracle Workflow Demo (1) - 一个简单的请假申请工作流

目标:通过Oracle Workflow做一个简单的请假申请工作流,效果:经理接到流程后,可以Approve,也可以Reject。


File > Quick Start Wizard

Item Type名字取得不好,让人不好理解,实际上Item Type可以就理解为工作流程序,一个Item Type下边,有一个或者多个Process,Process是工作流的核心。


Persistence Type:

Permanent:产生工作流信息永久性的保存,不会被清除掉,很少有流程要设置成permanent
Temporary:工作流信息允许被清除,对于工作流的信息一般都没有必要长期保存,记录将来被清除掉,一般情况我们都会把这个选项设置为Temporary,并且可以在Number Of Days中设置多少天后可以清除信息。

Oracle提供了一个Concurrent Program "Oracle Workflow Purge Obsolete Data"用于清除过期的Workflow数据。


定义一个Notification,这个Notification是给老板看的,让老板知道我们的请假申请。


定义一个Message,里边协商我们想请假的原因

这个Message默认是给Notification'Leave Request'用的,所以我们最好把Message的名字和Notification的名字保持一致,这样一眼就能看出之间的对应关系。

Message的Priority类似于邮件的优先级,可以Normal,High,Low

然后切换到Message的Body页签,输入通知内容的信息。


然后再重新打开‘Leave Request’ Notfication的属性面板,在Message项上关联刚才新定义的Message


定义一个Attribute,用于指定我们的Manager

Attribute相当于全局变量。因为我们的请假流程需要老板审批,我们需要告诉工作流,老板是谁。


接下来,双击Default Process,就能看到下边的工作流图

刚开始就会有'Start',‘End’两个基本组件被包含进来(这两个组件实际上是从‘Standard’ Item Type中继承过来的)


接下来,在流程中新增一个Notification图标


在Node页签中,指定Performer为Manager,这里Performer指的就是谁来查看或者处理这条notification


鼠标右键拖拽,连接Start -> Leave Request -> End


这样一个最简单的请假通知工作流就做完了。保存成wft文件,并上传到Server上。并执行工作流命令来把wft文件上传到数据库中。

WFLOAD apps/apps 0 Y UPLOAD PTLEAVE.wft

(在真实运行过程中,系统是不会读取wft文件的,只会读取数据库中的工作流定义)

接着登陆到系统,职责:Workflow Administrator Web Applications,功能:Developer Studio,'Type Internal Name'为工作流的Item Type的Internal Name,找到后点击‘Run’按钮(如果你看不到这个按钮,需要切换到sysadmin用户)

Run之后,指定Manager,这样Manager用户登录后在Notification下就能看到消息了

OK之后,工作流就变成Closed状态



这就是一个最简单的请假工作流通知的做法


接下来对现有的工作流稍作改动,给Manager增加允许或者拒绝的选项。

1.增加一个lookup,用于表明同意请假,拒绝请假

2.增加两个Message,用于标明,同意,或拒绝
3.相应的增加两个Notification,注意OK和NO的通