Oracle Workflow实例详解3
更新时间:2024-05-30 23:09:01 阅读量: 综合文库 文档下载
- oracle推荐度:
- 相关推荐
一、 Start to End
1、 Create new xx.wft file.
用向导新建一个Item Type
P: Workflow Builder/File/Quick Start Wizard
修改New Item Type中Internal Name为CW_DEMO和Display Name为CW_DEMO_R12_TRAINING;
New Process中Internal NameR12_DEMO_TOP_Process; 另存文件为:CW_WF_DEMO.wft
为
CW_TOP
和
Display Name
为
2、 完善此Process
双击CW_TOP Process,可以看到已经有一个Start 和End节点;
然后,右键Start节点,不要放开鼠标,拖到End节点,这样就把这两个点连起来了。
3、 Save to DB
I:直接通过Workflow Builder保存到数据库 P: Workflow Builder/File/Save As
点击OK即可(客制开发经常用的方式)
II:Submit request:Workflow Definitions Loader
首先用FTP工具把CW_WF_DEMO.wft上传到应用服务器。 然后到系统管理员职责提交请求。
Mode选Upload,File要写绝对路径! (上线安装的时候使用) 4、 Run Workflow
I:Workflow管理界面
P:System Administrator/Workflow/Administrator Workflow/Home
检查Workflow的管理员:
SELECT wfr.text FROM wf_resources wfr WHERE NAME = 'WF_ADMIN_ROLE' AND wfr.LANGUAGE = 'US'; 点击 Run 功能键:
按照上图输入资料:Item Key是本工作流运行的标志;可以理解为保存在数据库中的Item Type的一个标志。User Key是用户看到的实例标志。 点击Submit
II:PL/SQL(Package)启动Workflow DECLARE
l_item_key VARCHAR2(30) := 'CW_WF_DEMO_002'; l_user_item_key VARCHAR2(30) := 'CW_WF_DEMO_002_UK'; l_item_type VARCHAR2(30) := 'CW_DEMO'; l_process VARCHAR2(30) := 'CW_TOP';
BEGIN
--01 创建
wf_engine.createprocess(itemtype => l_item_type, itemkey => l_item_key, process => l_process,
user_key => l_user_item_key);
--02 初始化 --本例不需要
--03 启动
wf_engine.startprocess(itemtype => l_item_type, itemkey =>
l_item_key);
COMMIT;
dbms_output.put_line(l_item_key);
END;
同样的方式查看Workflow的运行状态:
FORM 等其他地方以同样的方式启动~
5、 运行情况查看
P:System Administrator/Workflow/Administrator Workflow/Home 切换到Status Monitor界面,输入关键字查询
选择需要查看的Workflow,进入Status Diagram画面; 绿线表示运行完毕
6、 That is all
二、 Start—>Notification?End
1、 把上一节的Item Type拷贝一份作为练习前提
Copy and Paste;新的Internal Name为CW_WF001,Display Name为:CW_WF001_NOTIFICATION
2、 新建6个Attribute
P:N: 选中Attribute/右键/New Attribute
Internal Name APPROVER_ID APPROVER_NAME APPROVER_DSP_NAME SUBMITER_ID SUBMITER_NAME SUBMITER_DSP_NAME Display Name Approver ID Approver Name Approver Display Name Submiter ID Submiter Name Submiter Display Name Type Number Role Text Number Role Text Length 360 360 按如上表数据建立Attribute,用来保存提交者和审批者的信息。 Attribute的用法:
Attribute相当于全局变量,供整个Item Type的元素调用;
Attribute作为Notification的执行者; Attribute作为Function的调用参数;几乎任何PL/SQL函数都需要通过取得Attribute
变量--判断Attribute变量--设置Attribute变量,决定程序如何走,返回什么值 3、 新建1个Message
P:选中Message/右键/New Message
Internal Name APPROVAL_REQ Display Name Approval Requisition Text Body Just for CW Demo Message from &SUBMITER_DSP_NAME 保存的时候,系统显示找不到我们引用的Attribute:SUBMITER_DSP_NAME
Message 中引用的变量必须在自己的Attribute中。可以手工建立:Message/右键/New Attribute;也可以直接把SUBMITER_DSP_NAME复制到这个Message下面。
4、 新建1个Notification
P:选中Notification/右键/New Notification
Internal Name REQ_APPROVAL Display Name Requisition Approval Message Approval Requisition 5、 修改Process:CW_TOP
把上面建的Notification拖到CW_TOP(R12_DEMO_TOP_Process)中
此时,右键这里的Requisition Approval这个Notification查看属性;按照如下画面设置Performer,也就是通知接收人。
接下来,把原来指向End的箭头左键拖到指向Requisition Approval;再从Requisition Approval右键拖一条线到End,重新布局
6、 保存到数据库,启动工作流
先找一个测试的账户:
SELECT r.NAME, r.display_name, r.orig_system, r.orig_system_id
FROM wf_roles r
WHERE r.NAME = 'AIC_CHUCK';
WF_ROLES说明:(Workflow的核心功能之一消息(Notification)发送人只承认此table资料)
Type of Role ERP用户,未和HR中的员工建立关联 ERP用户,和HR中的员工建立关联 不是ERP用户,而是HR中的员工 客户/员工 直接插入WF_LOCAL_USERS的记录 直接插入WF_LOCAL_ROLES的记录 职责 职位Position Orig_System FND_USR PER PER_ROLE HZ_PARTY WF_LOCAL_USERS WF_LOCAL_ROLES FND_RESP
启动脚本:
DECLARE
l_item_key VARCHAR2(30) := 'CW_WF_DEMO_003'; l_user_item_key VARCHAR2(30) := 'CW_WF_DEMO_003_UK'; l_item_type VARCHAR2(30) := 'CW_WF001'; l_process VARCHAR2(30) := 'CW_TOP';
l_submiter_id NUMBER := 1013536; l_approver_id NUMBER := 1013556;
l_orig_system VARCHAR2(30) := 'FND_USR';
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, p_orig_system_id => l_submiter_id, p_name => l_user_name, p_display_name => l_display_name);
wf_engine.setitemattrnumber(itemtype => l_item_type, itemkey => l_item_key, aname => 'SUBMITER_ID', avalue => l_submiter_id);
wf_engine.setitemattrtext(itemtype => l_item_type, itemkey => l_item_key, aname => 'SUBMITER_NAME', avalue => l_user_name);
wf_engine.setitemattrtext(itemtype => l_item_type, itemkey => l_item_key,
aname => 'SUBMITER_DSP_NAME', avalue => l_display_name);
wf_directory.getusername(p_orig_system => l_orig_system, p_orig_system_id => l_approver_id, p_name => l_user_name,
p_display_name => l_display_name);
wf_engine.setitemattrnumber(itemtype => l_item_type, itemkey => l_item_key, aname => 'APPROVER_ID', avalue => l_approver_id);
wf_engine.setitemattrtext(itemtype => l_item_type, itemkey => l_item_key, aname => 'APPROVER_NAME', avalue => l_user_name);
wf_engine.setitemattrtext(itemtype => l_item_type, itemkey => l_item_key,
aname => 'APPROVER_DSP_NAME', avalue => l_display_name);
--03 启动
wf_engine.startprocess(itemtype => l_item_type, itemkey => l_item_key);
COMMIT;
dbms_output.put_line(l_item_key); END;
7、 查看执行结果
用HENKEY账户进入系统:
用CHUCK账户进入系统接收通知:
8、 That is all
三、 含分支处理(Function)的Notification(Form Button提交)
1、 用Wizard创建新的Item Type,
Internal Name为CW_WF003,Display Name为CW_WF003_EMP
Process Internal Name为CW_EMP, Display Name为CW_EMP_FORM
2、 Create a new look up
P:选中Lookup Type/右键/New
可以直接使用Standard的Lookup Type;如果Standard的不符合要求,可以自己建;
然后增加两个Lookup Codes。
Type Lookup Types Lookup Codes Internal Name APP_TYPE NO YES Display Name Approve Type NO YES 3、 新建3个Attribute Internal Name EMPNO EMPNAME APPROVER Display Name Employee no Employee name APPROVER Type Number Text Text Length
4、 新建一个Message Internal Name MESS_APP Display Name Approve Message Text Body 工号:&EMPNO 姓名:&EMPNAME Subject New Employee need to approve Result Display Name:APP_MESSAGE 选择建立的LookUp
把建立的Employee Name 和No加到Message上来~
5、 新建一个Notification
在Notification:Requisition Approval属性的Activity标签页,Internal Name为APP_NOTI,Display Name为Approve Notification,Result Type为建立的LookUp
6、 新建2个Function 具体值如下:
Internal Name APP_EMP REJ_EMP Display Name Approve Employee Reject Employee Function Name XX_WF_EMP_PKG.approve_emp XX_WF_EMP_PKG.reject_emp
7、 修改Process的流程
从Standard中拖1个End Function过来,修改他们的Start/End属性为End;
并把建立的Function拉过来,重新布局~
并且要此时要修改Notification的Node属性,增加Performer(此属性只有当Notification布局到Process上的时候才显现)
8、 测试
保存到数据库,运行脚本;查看运行状态:
Start.sql
查看Notification结果:
Notification明细:
点击yes按钮,查看工作流
9、 That is all~ 四、 Others
1、 Message中的Html Body格式
Your Note: &NOTE
Please Approve The Following Document.
From &SUBMITER_DSP_NAME
Document Number: &DOCUMENT_NUMBER
Document Amount: &DOCUMENT_AMOUNT &NOTE
2、 常用隐藏按钮功能
(1) #HIDE_REASSIGN,可以隐藏标准的Reassign按钮
(2) #HIDE_MOREINFO,可以隐藏标准的Request Information按钮 (3) #HISTORY,可以隐藏标准的Action History 3、 审批流程
(1) 制作下面的审核流程
(2) 流程说明
? 用PLSQL启动工作流
? Create Table,启动工作流时,Insert初始资料
? 提交者、审核者的初始化放在Initialization节点执行
? 接收者,接到消息后,对于不同的回复,通过Function Update原来Insert
的单据资料 ? 单据ID是来源于Sequence,Item Key 、User Item Key都要通过Sequence
自动获取
4、 处理超时的Notifications
从Standard Funtion中把Loop Counter 拉到Process中,处理超时为处理的Notification
5、 Form提交Workflow
开发Form画面,然后用按钮功能等启动工作流; 6、 Workflow 提交Form画面
--格式'FUNCATION_NAME:PARAMETER=VALUE'
--Function_Name如果在系统中不存在,界面上就不会有那个链接 wf_engine.setitemattrtext(itemtype => itemtype,
itemkey => itemkey,
aname => 'OPEN_FORM_COMMAND', avalue => 'FND_FNDSCAUS'); 7、
五、
正在阅读:
Oracle Workflow实例详解305-30
地理专题1712-05
电子商务专业4门实践教学大纲合集资料03-08
汇编语言实现PID运算07-04
电大《国际礼仪概论》教案04-13
装维个人工作总结03-09
5人力资源管理系统工作手册10-07
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 详解
- 实例
- Workflow
- Oracle
- 电子商务安全导论历年真题名词解释、解答题、论述题及答案汇总
- 2008年度矿井生产灾害预防处理计划 - 图文
- 文刀川页丛书压轴题学习讲义(点的存在性问题)
- 12#楼应急预案
- 哈尔滨工业大学住宿学生管理制度
- 山东省市政园林安全生产管理人员考试B类模拟试题
- 西南大学17秋0727《建筑力学》在线作业(参考资料)
- 山东省武城县二中2015-2016学年高二上学期第二次月考生物试卷
- QTZ40型塔吊使用说明书
- 历年考研历史统考试题
- 设立中外合资经营企业合同 金融(4)
- 第01-06章 SZ系列GPS标准时间同步钟
- CASIO fx-5800P实用工程测量程序
- 沁县交通运输局长治市沁县县道牛松线南涅水至松村段公路投资建设
- 关于链条传动与液压传动提升的升降横移停车设备性能对比
- 3103回采作业规程
- 原相10207综采工作面安装作业规程
- 财务会计本网上作业—(1)(2)2010.11.26
- 新启道体育单招教的你怎样才能写好语文作文含素材
- 小区道路施工方案