目标:通过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的通知,需要选择Employee Role,这样manager在审批后,Employees可以看到
在流程图中连接各个Activities
为了让Manager看到更丰富的信息,可以在Leave Approval Message中,增加若干个Attributes.
比如经理的名字,员工的名字,请假的起始日期,结束日期...
在Message Body中,用&Attribute的样式引用上边定义的私有属性
上传wft文件到服务器上,并加载到数据库中,同样以sysadmin用户登录,Run
在下表中填入入口Attribute,Manager的姓名,员工的姓名,请假起始日期,结束日期
Administration > Notification Search,在To栏位搜索Manager的名字
就能看到经理Brown, Casey下的通知,经理就可以审批这个工作流了
这个案例的工作流文件已经上传到了新浪微盘上了,有兴趣可以参考下