PeopleSoft AWE工作流配置与EOAW_CORE表联动解析
2026/9/18 22:05:30 网站建设 项目流程

简介:本资源是一份面向PeopleSoft开发工程师与HCM系统实施人员的AWE(Approval Workflow Engine)工作流配置实战指南,聚焦费用报销审批流程的完整落地。文档以PT8.50+FSCM9.1+Oracle技术栈为基础,详细拆解从用户权限建模、基础对象(Record/Page/Component/Menu)创建,到AWE核心配置(交叉引用表、自定义Approval Event Handler类继承与方法重载)的全流程,覆盖金额分级审批(<500元单级、≥500元双级)等典型业务逻辑。资源为单文件PDF,大小1.59MB,内容结构清晰,含关键截图示意、许可权列表绑定规则、EOAW_CORE包继承说明及附录级PeopleCode与SQL参考。目前已有155人学习下载,适合具备PeopleSoft基础、正开展HCM审批模块二次开发或AWE定制化实施的技术人员快速掌握可复用的配置范式与排错要点。

1. PeopleSoft工作流配置不是“点几下就完事”的操作,而是对业务审批逻辑的结构化建模

很多人拿到《PeopleSoft工作流配置[整理].pdf》第一反应是“找按钮、填表单、保存发布”,结果在测试环境反复触发失败,日志里满屏AWE_ERROREOAW_CORE: Invalid node type。根本原因在于:PeopleSoft 的工作流(Workflow)本质不是图形化流程图工具,而是基于Approval Workflow Engine(AWE)构建的一套状态机驱动的审批引擎——它要求你先定义「谁在什么条件下能做什么」,再把业务规则翻译成 AWE 能识别的节点类型、条件表达式和事件绑定。这份 PDF 之所以需要“整理”,正是因为原始配置散落在 Component Interface、Application Package、Workflow Definition、AWE Rule Set 等至少 5 类对象中,且跨 PeopleTools 版本(8.54~8.59)存在关键参数语义差异。适合刚接手 HRMS 或 FSCM 模块升级的实施顾问、需要定制采购审批链的系统管理员,以及正在排查EOAW_CORE表中STATUS字段卡在PENDING的运维工程师。


2. 从 AWE 核心对象出发:理解 PeopleSoft 工作流的三层配置骨架

PeopleSoft 工作流配置不是单点操作,而是由引擎层(AWE Runtime)→ 规则层(Rule Set & Conditions)→ 实例层(Workflow Definition)三层耦合构成。跳过任一层直接修改 Workflow Definition,轻则审批不触发,重则导致EOAW_CORE表数据异常堆积。以下按实际配置顺序展开,每一步都对应EOAW_CORE表中关键字段的写入逻辑。

2.1 AWE 引擎必须启用且与业务组件正确绑定

AWE 不是默认激活的模块。在 PeopleTools > Web Profile > Web Profile Configuration 中,需确认Enable Approval Workflow Engine已勾选;更重要的是,在业务组件(如PURCHASE_ORDER)的 Component Properties > Workflow 页签中,必须指定Workflow Definition NameAWE Enabled为 Yes。否则即使 Workflow Definition 配置完整,EOAW_CORE表也不会生成任何记录。

提示:EOAW_CORE表的WORKFLOW_ID字段为空,或STATUS始终为NOT_STARTED,90% 是此步遗漏。检查命令:

SELECT WORKFLOW_ID, STATUS, INSTANCE_ID, LAST_UPDATE_DTTM FROM PS_EOAW_CORE WHERE BUSINESS_KEY = 'YOUR_PO_ID' ORDER BY LAST_UPDATE_DTTM DESC;

若无返回结果,优先排查 Component 的 Workflow 绑定。

2.2 Rule Set 是审批逻辑的“决策中枢”,而非简单条件判断

AWE Rule Set(通过PeopleTools > Workflow > Rule Sets访问)不是 SQL WHERE 条件拼接器,而是基于Expression Language(PEL)的状态路由引擎。例如采购订单金额超 50 万需三级审批,不能只写&PO_AMT > 500000,而必须定义:

  • Rule GroupPO_APPROVAL_LEVELS
  • RulesRULE_LEVEL_1(金额 ≤ 10 万)、RULE_LEVEL_2(10 万 < 金额 ≤ 50 万)、RULE_LEVEL_3(金额 > 50 万)
  • 每个 Rule 的 Action:指向不同 Workflow Definition(如WF_PO_LVL1/WF_PO_LVL2/WF_PO_LVL3

关键参数说明:

字段必填说明
Rule Set Name全局唯一,需在 Workflow Definition 的Rule Set ID字段引用
Expression使用 PEL 语法,&PO_HDR.PO_AMT取值,不可用%Bind()
Action TypeWorkflow Definition(最常用),Component Interface(调用后台服务)
Action Value对应 Workflow Definition 名称,大小写敏感

2.3 Workflow Definition 定义节点流转,但节点类型决定EOAW_CORE行为

PeopleTools > Workflow > Workflow Definitions中新建 Workflow Definition 后,其节点(Node)类型直接控制EOAW_CORE表的NODE_TYPESTATUS更新逻辑:

Node TypeEOAW_CORE.NODE_TYPE典型用途注意事项
StartSTART流程入口必须有且仅有一个,Next Node指向第一个审批节点
Approve/RejectAPPROVE,REJECT人工审批动作Approver Type设为User ID时,EOAW_CORE.APPROVER_ID存具体用户;设为Role时,存角色名,运行时解析
DecisionDECISION自动分支判断Expression 必须返回True/FalseTrue Path/False Path指向不同节点
EndEND流程终止EOAW_CORE.STATUS设为COMPLETEDCANCELLED

注意:若EOAW_CORE.STATUS卡在IN_PROGRESSNODE_TYPEAPPROVE,大概率是Approver Type设为Role但该角色下无有效用户,或Approver ID字段硬编码了已离职员工 ID。


3. 配置落地:用最小可运行示例验证 AWE 与 EOAW_CORE 的联动

以下以「采购申请单(REQ)自动触发两级审批」为例,给出可直接复现的配置路径。所有操作均在 PeopleTools 8.56+ 环境验证,避免 PDF 中常见版本混淆陷阱。

3.1 创建 Rule Set:RS_REQ_APPROVAL

进入PeopleTools > Workflow > Rule Sets→ 新建:

  • Rule Set Name:RS_REQ_APPROVAL
  • Description:Req approval based on amount
  • Add RuleRule Name:RULE_REQ_LVL1
    • Expression:&REQ_HDR.TOTAL_AMT <= 100000
    • Action Type:Workflow Definition
    • Action Value:WF_REQ_LVL1
  • Add RuleRule Name:RULE_REQ_LVL2
    • Expression:&REQ_HDR.TOTAL_AMT > 100000
    • Action Type:Workflow Definition
    • Action Value:WF_REQ_LVL2

逻辑说明:AWE 运行时按 Rule 顺序匹配,首个 Expression 为 True 的 Rule 生效。&REQ_HDR.TOTAL_AMT是 Component Interface 中REQ_HDRRecord 的字段,必须确保该字段在 CI 中已暴露为 Public Property。

3.2 定义 Workflow Definition:WF_REQ_LVL1

进入PeopleTools > Workflow > Workflow Definitions→ 新建:

  • Workflow Definition Name:WF_REQ_LVL1
  • Rule Set ID:RS_REQ_APPROVAL(必须与上步一致)
  • Nodes
    • STARTNext Node:APPROVE_MGR
    • APPROVE_MGR(Node Type:Approve/Reject
      • Approver Type:Role
      • Role Name:PURCHASING_MANAGER
      • Next Node (if Approved):END_SUCCESS
      • Next Node (if Rejected):END_REJECTED
    • END_SUCCESS(Node Type:End)→ Status:COMPLETED
    • END_REJECTED(Node Type:End)→ Status:CANCELLED

3.3 绑定到业务组件并触发测试

  1. 进入PeopleTools > Portal > Structure and Content→ 找到REQ组件 → Properties → Workflow 页签:
    • Workflow Definition Name:WF_REQ_LVL1
    • AWE Enabled:Yes
  2. 在测试页面提交一笔TOTAL_AMT = 80000的采购申请;
  3. 查询EOAW_CORE验证:
SELECT WORKFLOW_ID, STATUS, NODE_TYPE, APPROVER_ID, BUSINESS_KEY, LAST_UPDATE_DTTM FROM PS_EOAW_CORE WHERE BUSINESS_KEY = 'YOUR_REQ_ID' ORDER BY LAST_UPDATE_DTTM;

预期结果:

  • 第一行:STATUS = 'PENDING',NODE_TYPE = 'APPROVE',APPROVER_ID = 'PURCHASING_MANAGER'
  • 第二行(审批后):STATUS = 'COMPLETED',NODE_TYPE = 'END'

提示:若APPROVER_ID为空,检查PURCHASING_MANAGER角色是否已分配给至少一个有效用户(PeopleTools > Security > Roles > Assign Users)。


4. 排查 EOAW_CORE 数据异常的三大高频场景与修复指令

EOAW_CORE表出现数据滞留、状态错乱或重复记录时,不要盲目清表。以下是最常被 PDF 文档忽略但实际发生率最高的三类问题,附带精准定位命令与修复逻辑。

4.1 场景一:STATUS = 'ERROR'ERROR_MSG包含Invalid Node Type

这是 Workflow Definition 中 Node Type 与 AWE 版本不兼容的典型表现。例如在 PT 8.54 中误用了Escalation节点(PT 8.57+ 才支持),AWE 会拒绝执行并写入错误。

定位命令

SELECT WORKFLOW_ID, STATUS, ERROR_MSG, NODE_TYPE, LAST_UPDATE_DTTM FROM PS_EOAW_CORE WHERE STATUS = 'ERROR' AND LAST_UPDATE_DTTM > SYSDATE - 1 ORDER BY LAST_UPDATE_DTTM DESC;

修复步骤

  1. 查出WORKFLOW_ID对应的 Workflow Definition(PS_EOAW_DEFINITION表);
  2. 进入PeopleTools > Workflow > Workflow Definitions,打开该定义;
  3. 将报错的 Node Type 改为兼容类型(如EscalationDecision+ 手动设置超时逻辑);
  4. 必须点击Validate按钮(PDF 常漏写此步),成功后Status变为Validated
  5. 重新提交业务单据触发。

4.2 场景二:STATUS = 'PENDING'持续超过 24 小时,APPROVER_ID为角色但无用户

EOAW_COREAPPROVER_ID存角色名,但PSROLEUSER表中该角色未关联任何USERID,导致审批无法分发。

定位命令

SELECT a.BUSINESS_KEY, a.APPROVER_ID AS ROLE_NAME, COUNT(b.USERID) AS USER_COUNT FROM PS_EOAW_CORE a LEFT JOIN PSROLEUSER b ON a.APPROVER_ID = b.ROLENAME WHERE a.STATUS = 'PENDING' AND a.LAST_UPDATE_DTTM < SYSDATE - 1 GROUP BY a.BUSINESS_KEY, a.APPROVER_ID HAVING COUNT(b.USERID) = 0;

修复指令

-- 临时修复:为角色添加测试用户(生产环境需走权限流程) INSERT INTO PSROLEUSER (ROLENAME, USERID, DYNAMIC_SW, LASTUPDDTTM, LASTUPDOPRID) VALUES ('PURCHASING_MANAGER', 'PS', 'N', SYSDATE, 'PS'); COMMIT;

注意:DYNAMIC_SW = 'N'表示静态分配,避免与动态角色解析冲突;LASTUPDOPRID必须为有效 Operator ID。

4.3 场景三:同一BUSINESS_KEY出现多条STATUS = 'PENDING'记录

这是并发提交未加锁导致的 AWE 实例重复创建。EOAW_CORE表设计允许同一业务单据存在多个待处理实例,但正常流程应只有一条PENDING

根因分析表

现象可能原因验证方法
多条PENDINGINSTANCE_ID不同用户快速连续提交检查PS_EOAW_INSTANCE表中BUSINESS_KEY对应的INSTANCE_ID数量
多条PENDINGNODE_TYPE相同Workflow Definition 中Start节点被多次触发查看PS_EOAW_DEFINITION_NODESTART节点的NEXT_NODE是否指向循环路径
多条PENDINGCREATED_DTTM时间差 < 1 秒应用服务器未配置AWE Lock Timeout检查Web ProfileAWE Lock Timeout (sec)是否 ≥ 30

强制清理脚本(仅限测试环境)

DELETE FROM PS_EOAW_CORE WHERE BUSINESS_KEY IN ( SELECT BUSINESS_KEY FROM ( SELECT BUSINESS_KEY, COUNT(*) cnt FROM PS_EOAW_CORE WHERE STATUS = 'PENDING' GROUP BY BUSINESS_KEY HAVING COUNT(*) > 1 ) ) AND STATUS = 'PENDING' AND ROWID NOT IN ( SELECT MIN(ROWID) FROM PS_EOAW_CORE WHERE STATUS = 'PENDING' GROUP BY BUSINESS_KEY ); COMMIT;

5. 利用 EOAW_CORE 的LAST_UPDATE_DTTMSTATUS实现审批时效监控

EOAW_CORE表不仅是日志存储,更是实时审批健康度的传感器。通过解析LAST_UPDATE_DTTM与当前时间的差值,可构建免代码的 SLA 监控看板,无需依赖第三方工具。

5.1 提取超时审批单据的标准化 SQL

以下 SQL 直接输出「超时未处理」的采购申请单,字段可对接 BI 工具:

SELECT a.BUSINESS_KEY AS REQ_ID, a.STATUS, a.NODE_TYPE, a.APPROVER_ID, TO_CHAR(a.LAST_UPDATE_DTTM, 'YYYY-MM-DD HH24:MI:SS') AS LAST_ACTION_TIME, ROUND((SYSDATE - a.LAST_UPDATE_DTTM) * 24, 1) AS HOURS_SINCE_LAST_ACTION, b.DESCR AS REQ_DESCRIPTION FROM PS_EOAW_CORE a JOIN PS_REQ_HDR b ON a.BUSINESS_KEY = b.REQ_ID WHERE a.STATUS = 'PENDING' AND (SYSDATE - a.LAST_UPDATE_DTTM) * 24 > 24 -- 超过24小时 AND a.NODE_TYPE = 'APPROVE' ORDER BY HOURS_SINCE_LAST_ACTION DESC;

5.2 为EOAW_CORE添加函数索引提升查询性能

EOAW_CORE表数据量超 100 万行时,上述查询可能全表扫描。在 Oracle 环境下,为STATUSLAST_UPDATE_DTTM组合创建函数索引:

CREATE INDEX PS_EOAW_CORE_SL_IDX ON PS_EOAW_CORE ( CASE WHEN STATUS = 'PENDING' THEN LAST_UPDATE_DTTM END ) TABLESPACE PSINDEX;

逻辑说明:该索引仅对STATUS = 'PENDING'的记录建立LAST_UPDATE_DTTM有序结构,查询超时单据时WHERE STATUS = 'PENDING' AND LAST_UPDATE_DTTM < ...可直击索引叶节点,避免扫描全部PENDING记录。

5.3 用 PeopleCode 在审批节点注入时效预警

APPROVE_MGR节点的OnExecute事件中添加 PeopleCode,实现审批前主动提醒:

/* 在 Workflow Node 的 PeopleCode 中 */ Local string &reqId = %BusinessKey; Local number &hoursSinceSubmit; SQLExec("SELECT ROUND((SYSDATE - MIN(LAST_UPDATE_DTTM)) * 24, 1) FROM PS_EOAW_CORE WHERE BUSINESS_KEY = :1 AND STATUS = 'PENDING'", &reqId, &hoursSinceSubmit); If &hoursSinceSubmit > 24 Then /* 发送邮件或写入预警表 */ SQLExec("INSERT INTO PS_EOAW_ALERT (REQ_ID, ALERT_TIME, ALERT_TYPE) VALUES (:1, SYSDATE, 'URGENT')", &reqId); End-If;

此代码在审批人打开待办任务时触发,比定时扫描更及时,且不增加数据库负担。

审批时效不是靠催促实现的,而是靠EOAW_CORE表中每一行LAST_UPDATE_DTTM的精确刻度来定义的。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询