AWE: STEP BY STEP
概述
该文档描述一个简单的AWE配置流程,所有步骤均采用最简单而有代表性的配置。
为了更详细地描述一个AWE例子程序的编写过程,该文档将完成一个简单的费用报告报销需求,具体需求描述如下:
1、提供一个页面供员工输入费用报告明细,包括时间、金额、用途等;
2、提供一个页面供经理审批费用报告,审批是需要显示费用报告明细;
3、根据费用报告中的金额,确定如下审批规则:金额小于500,只需部门经理审批,
金额超过500时,部门经理审批后,还需副总裁审批;所有审批人审批完成后,费用报告的状态变为“已审批”,后续操作省略。
开发说明
该文档技术来源:Approval Workflow Engine (AWE) for HCM 9.0(HCM Shared Components Team)。
该文档技术平台:PT8.50+FSCM9.1+Oracle。
如果在HCM环境中开发,如果EOAW_开始的对象不存在,均可找到一个PTAFAW_或者PTAF_开始的相对应的对象代替。
所有PeopleCode和SQL语句均在附录中。
具体步骤
一、创建许可权列表、角色、用户概要
根据需求描述,设置三个许可权列表,分别代表员工、部门经理、副总裁;设置三
个角色,分别包含三个许可权列表;再设置三个测试用户分别代表三种角色,每个
用户概要需要绑定一个员工ID。
用户权限设置如下图:
用户概要角色许可权列表
XTEST1 X_1010(Employee) X_1010
XTEST2 X_1020(Department Manager) X_1020
XTEST3 X_1030(Vice President) X_1030
注:为了避免测试过程中出现其他与AWE无关错误,建议以上三个用户概要从VP1
拷贝,再加上相应角色。
二、创建基础Project
1.创建Record
该步骤创建的Record如下:
X_EXP_RPT_HDR(费用报告头表)
X_EXP_RPT_LINE(费用报告行)
X_EXP_APPROVAL(费用报告审批)
X_APPGD_WK(费用报告工作表,Derived)
2.创建Page
该步骤创建两个Page如下
X_EXP_RPT_R(费用报告填写)
X_EXP_RPT_A(费用报告审批)
3.创建Component
该步骤创建两个Component如下:
X_EXP_RPT_R(费用报告填写)
X_EXP_RPT_A(费用报告审批)
4.创建Menu
该步骤创建Menu如下:
X_MENU
5.发布Component
发布Component时,将X_EXP_RPT_R发布到许可权列表X_1010上,将X_EXP_RPT_R发布到许可权列表X_1020上,然后再手动将X_EXP_RPT_R添加到许可权列表X_1030上。
三、配置AWE
1.创建交叉引用表(Cross Reference Record)
创建交叉引用表时,将sub-record EOAW_XREF_SBR添加到表的最开始,再将业
务表中的Key添加到后面,业务表中的Key在交叉引用表中不能设置为Key,
交叉引用表中的Key是Sub-record中自带的Key。
该步创建的交叉引用表如下:
X_EXP_RTP_XREF(SQL Table)
2.创建Approval Event Handler
在FSCM9.1中,AWE的基础包是EOAW_CORE,所有与审批相关的核心程序都
继承于该包。
该步主要是编写Approval Event Handler,EOAW中的ApprovalEventHandler类是一个抽象类,用户自定义审批的Event Handler时,新建一个该抽象类的派生类,并重载与实际审批业务相关的方法。
ApprovalEventHandler类的定义如下:
根据ApprovalEventHandler类的定义可以看出,该类的作用是定义审批过程中可能出现的每个事件被触发时需要处理的业务逻辑。
ApprovalEventHandler类中定义的方法一般是AWE自动触发,不需要认为调用方法,但可根据实际业务自行调用。
费用报告例子中定义的ApprovalEventHandler类如下:
3.注册事务处理
定义完成ApprovalEventHandler后,接下来需要在PeopleSoft PIA中注册事务处理,在注册事务处理之前,需要新建一个Record,用于审批头表,该Record 如下:
完成审批头表创建后,下一步是注册事务处理,该步会用到交叉引用表和审批头表,配置好的注册事务处理如下图:
4.配置事务处理
注册完成事务处理后,接下来需要配置事务处理,在配置事务处理之前,需要新建一个审批用户信息视图,用于在审批监视器中显示审批用户的详细信息,该视图可以自定义需要显示审批用户的基本信息。
费用报告例子的用户信息视图如下:
完成审批用户信息视图创建后,配置事务处理,费用报告例子配置完成的界面如下图:
5.配置审批用户列表
完成事务处理配置后,接下来配置审批用户列表,在费用报告例子中,审批用户列表有两个,一个是部门经理列表,另一个是副总裁列表,配置好的审批用户列表如下:
部门经理列表
副总裁审批用于列表
6.配置审批处理
配置完成审批用户列表后,接下来配置事务处理的审批步骤,根据费用报告的需求描述,费用报告中的审批步骤用两个步骤,配置过程如下:
首先配置如下图页面:
点击“定义选项”下的“定义标准”链接,配置如下:
点击“确定”后,再点击“路径”下的“标准”链接,配置如下:
点击“步骤”下“Step 1”行的“标准”链接,配置如下:
点击“步骤”下“Step 2”行的“标准”链接,配置如下:
7.为审批页面四个按钮添加事件
X_APPGD_WK.APPROVAL_PB.FieldChange
X_APPGD_WK.DENY_PB.FieldChange
X_APPGD_WK.HOLD_PB.FieldChange
X_APPGD_WK.PUSHBACK_PB.FieldChange
8.创建Launch Manager
Launch Manager用于触发AWE,Launch Manager的代码一般放在请求AWE的Component的SavePostChange中,在费用报告例子中,Launch Manager的代码放在Component X_EXP_RPT_R的SavePostChange中,代码如下,其中getlevel0.Refresh()之后的代码属于Status Monitor,为了代码完整行,一起放在这里。
9.创建Status Monitor
Status Monitor是监视审批流程的,会形象地显示在页面上。
在费用报告例子中,为了让员工能看见自己提交的费用报告的审批进程,费用报告请求页面也需要显示Status Monitor,前面创建page的时候已经添加了Sub-page。
该步骤只需编写代码。
费用报告请求Component X_EXP_RPT_R中的PeopleCode如下:
X_EXP_RPT_R.PostBuild
此外,还需要在Component X_EXP_RPT_A的PostBuild、Page X_EXP_RPT_A的Active中添加如下代码:
10.创建Approval Manager
该步创建Approval Manager,用于处理每个审批步骤的处理结果。
Approval Manager的代码写在Component的SavePostChange事件中。
费用报告例子的代码写在Component X_EXP_RPT_A的SavePostChange中,代码如下:
11.(可选)客户化Status Monitor的标题和审批用户名称
默认情况下,StatusMonitor上的标题显示的是审批头表中的KEY的信息,格式为KeyName=KeyValue…,中间用逗号隔开。
审批人显示的是审批用户的用户概要名称,而不是审批人的姓名。
为了使StatusMonitor更容易理解,可以做如下修改,修改后KeyName=KeyValue变为bel=KeyValue,审批人概要变为审批人姓名。
该步是在第2步的包X_EXP_APPROVAL中添加一个类threadDescr,代码如下:
12.将附录中的PeopleCode添加到相应定义中
13.测试AWE
最终效果图如下:
AWE STEP BY STEP GUIDE
附录:
SQL. X_UPD_APPR_STATUS
SQL. X_UPD_RPT_STATUS
X_EXP_RPT_HDR.AMOUNT.SavePreChange(计算总金额)
X_EXP_RPT_HDR.EMPLID. FieldDefault
X_EXP_RPT_HDR.EX_HDR_STATUS. RowInit
X_EXP_RPT_HDR.OPRID_ENTERED_BY. FieldDefault
X_EXP_RPT_LINE.LINE_NBR.RowInsert(行号自动产生)
21。