您的资产维护数据模板
您的资产维护数据模板
- 维护日志的基本数据字段
- 标准流程里程碑和工单阶段
- Hexagon EAM 的技术提取逻辑
资产维护属性
| 名称 | 描述 | ||
|---|---|---|---|
| Timestamp EventTimestamp | 活动发生的日期和时间。 | ||
| 描述 此属性记录事件或状态更改提交到系统的确切时刻。它可以计算活动之间的时长以及工单的总周期时间。 为何重要 准确的时间戳对于分析周期时间、识别延迟和计算 SLA 达成率至关重要。 获取方式 Hexagon EAM 表 R5EVENTHISTORY,字段 EVH_DATE 示例 2023-10-12T08:30:00Z2023-10-12T14:15:00Z2023-10-13T09:00:00Z | |||
| 最后数据更新 LastDataUpdate | 记录上次提取或刷新的时间戳。 | ||
| 描述 此属性跟踪上次从源系统拉取数据的时间。它帮助分析人员了解数据的时效性,并识别报告管道中潜在的延迟问题。 为何重要 它增强了分析结果时效性的可信度,并有助于排查数据同步问题。 获取方式 提取时的系统时间 示例 2023-10-25T12:00:00Z2023-10-26T00:00:00Z | |||
| 活动 ActivityName | 发生的特定任务或状态更改事件。 | ||
| 描述 此属性表示正在执行的流程步骤,例如“工单已创建”或“物料已发放”。它是根据工单记录的状态更改历史或特定交易事件推导出来的。 为何重要 它定义了事件日志序列,从而支持重建流程流向并进行瓶颈分析。 获取方式 Hexagon EAM 表 R5EVENTHISTORY,字段 EVH_STATUS(映射到描述)或审计日志 示例 工单已创建工单已排程工单已完成物料已发放 | |||
| 源系统 SourceSystem | 数据来源系统的名称。 | ||
| 描述 此属性指示数据的记录系统。在此背景下,它被硬编码为特定的 EAM 系统名称,以区别于潜在的旧数据或外部承包商系统。 为何重要 它确保了数据血缘清晰,尤其是在合并来自多个维护实例的数据时。 获取方式 硬编码值 示例 Hexagon EAMInfor EAMDatastream 7i | |||
| 维护工单 WorkOrderNumber | 维护工单的唯一标识符。 | ||
| 描述 此属性代表维护 case 的唯一主键。它跟踪工单从最初申请到计划、执行和最终财务结算的全过程。它作为核心 case 标识符,用于联接活动日志、工时和物料消耗数据。 为何重要 它识别维护流程的具体实例,从而实现对周期时间及流程变体的端到端追踪。 获取方式 Hexagon EAM 表 R5EVENTS,字段 EVT_CODE 示例 WO-100234WO-100235WO-100236104592 | |||
| 优先级 PriorityCode | 分配给工单的紧急程度。 | ||
| 描述 此属性表示工单的重要性,范围从常规到紧急。它驱动资源排程,对于监控 SLA 遵守情况和检测优先级滥用至关重要。 为何重要 它对于“优先级升级和资源审计”仪表板至关重要,可确保关键任务得到正确优先处理。 获取方式 Hexagon EAM 表 R5EVENTS,字段 EVT_PRIORITY 示例 严重高中低 | |||
| 实际人工小时数 ActualLaborHours | 该工单名下记录的总小时数。 | ||
| 描述 此属性汇总了技术人员针对该工单记录的时间。它用于衡量生产率、计算人工成本,并分析与预估小时数的偏差。 为何重要 它是“技术人员劳动生产率”仪表板和“工时差异”KPI 的主要数据源。 获取方式 Hexagon EAM 表 R5BOOKEDHOURS,字段 BOO_HOURS(按工单汇总) 示例 2.54.012.00.5 | |||
| 工单类型 WorkOrderType | 将工单分类为预防性、纠正性或紧急维修。 | ||
| 描述 此属性对维护工作的性质进行分类。它用于分析计划性预防维护与反应性应急维修的比例,这是资产健康状况和管理成熟度的关键指标。 为何重要 它支持“预防性维护比例分析”仪表板,并有助于识别减少响应式工作的机会。 获取方式 Hexagon EAM 表 R5EVENTS,字段 EVT_TYPE 示例 PPMCOREMGPRJ | |||
| 用户 UpdatedBy | 执行此活动的用户ID。 | ||
| 描述 此属性捕获负责触发状态更改或更新的人员的登录 ID。它用于分析团队工作量、识别培训需求以及审计流程合规性。 为何重要 它支持对整个维护生命周期的用户行为和资源利用情况进行分析。 获取方式 Hexagon EAM 表 R5EVENTHISTORY,字段 EVH_USER 示例 JSMITHADAVIS系统MGR_USR | |||
| 目标完成日期 TargetCompletionDate | 工单的计划截止日期。 | ||
| 描述 此属性表示维护工作预计完成的日期。将此日期与实际完成日期进行对比,是计算 SLA 达成率和准时交付率的主要依据。 为何重要 它对于“承包商 SLA 达成监控器”以及评估计划准确性至关重要。 获取方式 Hexagon EAM 表 R5EVENTS,字段 EVT_TARGET 示例 2023-11-012023-11-152023-12-01 | |||
| 资产 AssetCode | 受维护设备或设施的唯一标识符。 | ||
| 描述 此属性将工单链接到特定的设备或位置。它可以分析每个资产的故障频率,并帮助识别“问题设备”或需要更换的设备。 为何重要 它是计算资产可靠性指标以及了解维护力量集中在哪里的基础。 获取方式 Hexagon EAM 表 R5EVENTS,字段 EVT_OBJECT 示例 PUMP-001HVAC-204FLEET-99CONVEYOR-A | |||
| 部门 MaintenanceDepartment | 负责执行工作的部门或工作中心。 | ||
| 描述 此属性识别分配给工单的团队或维护车间,例如电气、机械或设施部门。它可以实现不同技术团队之间的绩效基准分析。 为何重要 它支持“技术人员劳动生产率”仪表板,并有助于在不同工种间有效分配资源。 获取方式 Hexagon EAM 表 R5EVENTS,字段 EVT_MRC 示例 电气车间机械维护设施车队服务 | |||
| SLA 状态 SLAState | 指示工单是否符合其服务水平协议。 | ||
| 描述 此计算属性将“实际完成日期”与“目标完成日期”进行对比。它将案例分类为“符合 SLA”或“违约”,以简化承包商和内部绩效的报告工作。 为何重要 它是“SLA 达成率”KPI 的直接数据源。 获取方式 计算得出:实际结束日期 <= 目标日期 示例 符合SLA已超期未结 | |||
| 创建日期 DateCreated | 工单最初生成的日期。 | ||
| 描述 此属性标志着工单生命周期的开始。它是计算平均计划耗时(Mean Time to Plan)和确定积压项目时长的基准。 为何重要 它是“维护计划速度”仪表板和“积压工单账龄”KPI 所必需的。 获取方式 Hexagon EAM 表 R5EVENTS,字段 EVT_CREATED 示例 2023-09-012023-09-15 | |||
| 实际总成本 TotalActualCost | 为工单记录的总财务成本。 | ||
| 描述 此属性捕获人工、物料和服务的汇总成本。它对于财务结算分析以及理解应急维修与预防性维护的成本影响至关重要。 为何重要 它支持“财务结算与关闭速度”仪表板以及基于成本的决策。 获取方式 Hexagon EAM 表 R5EVENTS,字段 EVT_ACTCOST(或类似的汇总列) 示例 150.002500.5075.25 | |||
| 工单描述 WorkOrderDescription | 维护任务的简短文字摘要。 | ||
| 描述 此属性包含问题的题目或简短描述。在深入分析特定问题案例或识别非结构化文本中的模式时,它能为分析人员提供背景信息。 为何重要 它为人工审查流程数据提供了必要的背景信息。 获取方式 Hexagon EAM 表 R5EVENTS,字段 EVT_DESC 示例 修理泵密封泄漏每月 HVAC 检查更换传送带 | |||
| 是否返工 IsRework | 指示工单是否涉及重复技术任务的标志。 | ||
| 描述 此计算属性识别流程从质控或完成状态回流到活动作业状态的案例。它有助于精准发现质量问题和培训缺口。 为何重要 它驱动了“技术返工与质量控制”仪表板以及“维护返工率”KPI。 获取方式 根据活动重复次数计算 示例 truefalse | |||
| 是否预防性 IsPreventive | 指示工单是否为预防性维护的标志。 | ||
| 描述 此布尔属性便于对工单进行过滤和分类。通过将主动工作与反应性维修分开,它简化了“预防性维护比例”KPI 的计算。 为何重要 它是“预防性维护比例分析”仪表板的关键细分维度。 获取方式 源自 WorkOrderType 示例 truefalse | |||
| 紧急升级 EmergencyEscalationFlag | 指示创建后优先级是否提升为“紧急”的标志。 | ||
| 描述 此布尔属性识别最初优先级较低但后来升级为“紧急”的工单。频繁发生此类情况可能表明初始分流不力,或者有人利用系统规则以获取更快的服务。 为何重要 它支持“优先级升级与资源审计”仪表板以及“紧急升级率”KPI。 获取方式 源自优先级字段的审计追踪 示例 truefalse | |||
| 资产关键度 AssetCriticality | 表示资产运营重要程度的分值。 | ||
| 描述 此属性指示资产对业务运营的重要性。它通常用于验证高优先级工单是否确实与关键设备相关,从而揭示潜在的流程滥用。 为何重要 它通过将优先级与资产价值相关联,来支持“优先级升级与资源审计”仪表板。 获取方式 Hexagon EAM 表 R5OBJECTS,字段 OBJ_CRITICALITY(需要与 EVT_OBJECT 关联) 示例 A - 核心B - 关键C - 次要D - 低 | |||
| 通过质控 QualityControlPassed | 指示质检步骤是否已记录的标志。 | ||
| 描述 此布尔属性检查特定的质控活动或清单项目是否标记为已完成。它确保符合安全法规和内部标准。 为何重要 它驱动了“质量控制合规率”KPI,并支持“合规与文档完整性”仪表板。 获取方式 源自检查单表或活动历史 示例 truefalse | |||
| 领料申请日期 MaterialRequisitionDate | 申请备件的日期。 | ||
| 描述 此属性捕获向库房或采购部门提交物料申请的时间戳。分析从该日期到“物料已发放”的时间可以揭示供应链效率。 为何重要 它是“备件采购周期时间”仪表板所必需的。 获取方式 Hexagon EAM 表 R5REQUISITIONS 或关联的事务表 示例 2023-10-012023-10-05 | |||
资产维护活动
| 活动 | 描述 | ||
|---|---|---|---|
| 工单已关闭 | 工单已在财务上锁定并归档。无法再录入任何成本或工时。 | ||
| 为何重要 流程结束。对于“财务结算处理”分析和锁定最终成本至关重要。 获取方式 Hexagon EAM r5statuslog。转换至 'C'(已关闭)或 'L'(已锁定/已关闭)。 捕获 在 r5statuslog 上执行事务时记录 事件类型 explicit | |||
| 工单已创建 | 系统中维护工单记录的初始创建。此事件建立了 case 并捕获了整个维护生命周期的初始时间戳。 | ||
| 为何重要 标记流程实例的开始,并为衡量总解决时间设定基准。对于计算积压账龄至关重要。 获取方式 Hexagon EAM r5events 表。当插入带有 evt_code 的新记录时记录。 捕获 在 r5events 上执行 INSERT 事务时记录 事件类型 explicit | |||
| 工单已完成 | 技术工作已结束,技术人员已将工作标记为完成。资产恢复运行。 | ||
| 为何重要 端到端生命周期时长和平均维修时间的关键里程碑。停止停机时间计时。 获取方式 Hexagon EAM r5statuslog。转换至 'C'(已完成)或 'F'(已结束)。 捕获 在 r5statuslog 上执行事务时记录 事件类型 explicit | |||
| 工单已开始 | 技术人员已开始对资产进行实际作业。通常以状态更改为“进行中”或首次录入工时的时间戳为标记。 | ||
| 为何重要 积压计算的终点和现场维修工时的起点。对于 SLA 达成率至关重要。 获取方式 Hexagon EAM r5statuslog。转换至 '进行中'(通常是状态代码 'I' 或 'IP')。 捕获 在 r5statuslog 上执行事务时记录 事件类型 explicit | |||
| 工单已批准 | 表示工单已通过计划和估算审核的状态更改。它意味着工作获准继续进行。 | ||
| 为何重要 通过标记计划阶段的结束来支持“维护计划速度”分析。职责分离合规性检查。 获取方式 Hexagon EAM r5statuslog 表。查找转换至状态 'A'(已批准)或系统等效状态。 捕获 在 r5statuslog 上执行事务时记录 事件类型 explicit | |||
| 物料已发放 | 备件从库房实际发出并计入工单。这代表了物料消耗。 | ||
| 为何重要 物料可用性周期时间的终点。识别那些由于缺少零件而导致开工后停滞的延迟。 获取方式 Hexagon EAM r5translines 表。关联至工单的事务类型 'I'(出库)。 捕获 在 r5translines 上执行 INSERT 事务时记录 事件类型 explicit | |||
| 记录的人工小时数 | 技术人员记录工单的实际工作时间。每个案例可能会多次发生此活动。 | ||
| 为何重要 工时差异和技术人员劳动生产率仪表板的基础。揭示了实际投入与计划的对比。 获取方式 Hexagon EAM r5booklabor 表。每一行代表工单的一次工时录入。 捕获 在 r5booklabor 上执行 INSERT 事务时记录 事件类型 explicit | |||
| 工单已排程 | 工单已被分配计划开始日期或特定资源。这将工单从积压状态转入活动排程。 | ||
| 为何重要 对于技术人员劳动生产率分析以及了解资源分配效率至关重要。 获取方式 Hexagon EAM r5events 表(evt_schedstart 更新)或 r5statuslog(转换至 'S' - 已排程)。 捕获 比较状态字段的前后变化或检查 evt_schedstart 更新 事件类型 inferred | |||
| 工单已签收 | 合规或支付承包商费用通常需要的最终行政审批。确认所有数据准确无误。 | ||
| 为何重要 监控工单审批周期分析。此处的延迟会影响财务结算速度。 获取方式 Hexagon EAM r5statuslog(转换至 'Signed Off')或电子签名捕获日志。 捕获 比较状态字段的前后变化 事件类型 inferred | |||
| 已更新优先级 | 工单在初始创建后优先级发生了变更。该活动捕获了变更的时间戳和新的优先级值。 | ||
| 为何重要 对于优先级升级和资源审计仪表板至关重要,用于识别优先级滥用或范围蔓延。 获取方式 Hexagon EAM r5audittrail(如果启用了审计)或从快照推导。通常源自 evt_priority 字段的审计日志。 捕获 在 evt_priority 上执行 UPDATE 事务时记录 事件类型 explicit | |||
| 检查单项目已验证 | 工单中的特定任务或检查步骤被标记为已完成。这代表了工作中的细化进度。 | ||
| 为何重要 对于合规性和文档完整性至关重要。证明安全检查已系统化记录。 获取方式 Hexagon EAM r5checklist 或 r5activities 表。特定活动/任务行项目的状态变更。 捕获 在 r5checklist 上执行 UPDATE 事务时记录 事件类型 explicit | |||
| 通过质控 | 主管或检查员审查已完成的工作并批准质量。此步骤在关闭工单前验证维修效果。 | ||
| 为何重要 支持“质控合规率”KPI。从此处回流表示技术性返工。 获取方式 Hexagon EAM r5statuslog(转换至 'Review' 或 'QC')或特定 UDF 验证上的 r5audittrail。 捕获 比较状态字段的前后变化 事件类型 inferred | |||
| 领料申请已创建 | 工单关联了备件或物料申请。这启动了供应链子流程。 | ||
| 为何重要 备件采购交付周期的起点。此处的高业务量表明对库存可用性的依赖。 获取方式 Hexagon EAM r5requisitions 表。通过 req_evt(工单代码)关联。 捕获 在 r5requisitions 上执行 INSERT 事务时记录 事件类型 explicit | |||
提取指南
步骤
- 使用具有“高级报告编写”权限的用户帐户登录 Hexagon EAM 应用程序。
- 导航至“报告”模块(通常位于“管理”或“报告”菜单下),启动高级报告界面(通常是 Cognos 或内置的 SQL 报告生成器)。
- 初始化新报告创建向导,并选择“SQL”或“自定义 SQL”作为数据源类型。这允许直接查询数据库,而非使用标准业务对象模型。
- 复制下方“查询”部分提供的 SQL 脚本,并将其粘贴到数据集定义窗口中。
- 将占位符值(如 [您的组织代码] 和日期范围)替换为与您的环境相关的具体值。
- 在编辑器中验证查询语法,确保数据库平台(Oracle 或 SQL Server)接受 union 语句。
- 将结果列映射到报告布局列表,确保 WorkOrderNumber、ActivityName 和 EventTimestamp 清晰可见。
- 将报告配置为导出 CSV 或 Excel 格式,以确保表格结构中没有合并单元格或格式化标题。
- 针对验证期(如最后 100 个工单)运行报告,以核实数据结构。
- 验证无误后,将报告设置为定期运行,或针对完整的提取时间窗口执行。
- 下载输出文件并检查日期格式。尽可能确保时间戳包含秒,以便进行精确排序。
- 将生成的 CSV 文件导入 ProcessMind,将 SourceSystem 列映射为 case 属性,ActivityName 映射为活动分类器。
配置
- 日期范围:建议按 EVT_DATE(创建日期)筛选 6 到 12 个月的滚动窗口数据,以保持查询性能。
- 组织筛选:Hexagon EAM 通常包含多个组织。请确保查询中包含针对特定组织代码的筛选,以避免其他业务单位的数据干扰。
- 数据库语法:以下查询尽可能使用 ANSI 标准 SQL,但由于 Hexagon EAM 通常运行在 Oracle 或 SQL Server 上,可能需要对日期函数进行微调(例如 SYSDATE 与 GETDATE)。
- 状态配置:状态代码(如 'A'、'C'、'R')与活动名称(如 'Work Order Approved')的映射必须与您系统的具体状态配置相匹配。
- 权限说明:运行报告的用户帐户需要具有 R5EVENTS、R5EVENTSTATUS、R5BOOKEDHOURS、R5TRANSACTIONS 和 R5AUDITVALUES 表的读取权限。
a 查询示例 config
/* 1. Work Order Created */
SELECT
evt_code AS WorkOrderNumber,
'Work Order Created' AS ActivityName,
evt_created AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
evt_type AS WorkOrderType,
evt_priority AS PriorityCode,
evt_mrc AS MaintenanceDepartment,
evt_updatedby AS UpdatedBy,
evt_target AS TargetCompletionDate,
evt_object AS AssetCode,
NULL AS ActualLaborHours
FROM r5events
WHERE evt_type IN ('JOB', 'PPM') -- Filter for relevant WO types
AND evt_created >= '2023-01-01' -- [Set Start Date]
AND evt_org = 'YOUR_ORG' -- [Set Organization]
UNION ALL
/* 2. Priority Updated (Requires Audit Log) */
SELECT
aud_code AS WorkOrderNumber,
'Priority Updated' AS ActivityName,
aud_date AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
aud_value AS PriorityCode,
NULL AS MaintenanceDepartment,
aud_user AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
NULL AS ActualLaborHours
FROM r5auditvalues
WHERE aud_table = 'R5EVENTS'
AND aud_field = 'EVT_PRIORITY'
AND aud_org = 'YOUR_ORG'
UNION ALL
/* 3. Status Changes (Approved, Scheduled, Started, Completed, Signed Off, Closed) */
/* This block maps generic status codes to specific ProcessMind activities */
SELECT
est_event AS WorkOrderNumber,
CASE est_status
WHEN 'A' THEN 'Work Order Approved'
WHEN 'S' THEN 'Work Order Scheduled'
WHEN 'IP' THEN 'Work Order Started'
WHEN 'C' THEN 'Work Order Completed'
WHEN 'QC' THEN 'Quality Control Passed'
WHEN 'SO' THEN 'Work Order Signed Off'
WHEN 'CL' THEN 'Work Order Closed'
ELSE 'Status Change: ' + est_status
END AS ActivityName,
est_date AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
NULL AS MaintenanceDepartment,
est_auth AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
NULL AS ActualLaborHours
FROM r5eventstatus
WHERE est_status IN ('A', 'S', 'IP', 'C', 'QC', 'SO', 'CL')
AND est_org = 'YOUR_ORG'
UNION ALL
/* 4. Material Requisition Created */
SELECT
req_event AS WorkOrderNumber,
'Material Requisition Created' AS ActivityName,
req_created AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
NULL AS MaintenanceDepartment,
req_createdby AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
NULL AS ActualLaborHours
FROM r5requisitions
WHERE req_event IS NOT NULL
AND req_org = 'YOUR_ORG'
UNION ALL
/* 5. Material Issued */
SELECT
trl_event AS WorkOrderNumber,
'Material Issued' AS ActivityName,
trl_date AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
NULL AS MaintenanceDepartment,
trl_user AS UpdatedBy,
NULL AS TargetCompletionDate,
trl_part AS AssetCode, -- Storing Part ID in Asset column for context
NULL AS ActualLaborHours
FROM r5translines
WHERE trl_type = 'I' -- I = Issue
AND trl_event IS NOT NULL
AND trl_org = 'YOUR_ORG'
UNION ALL
/* 6. Labor Hours Recorded */
SELECT
boo_event AS WorkOrderNumber,
'Labor Hours Recorded' AS ActivityName,
boo_entered AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
boo_mrc AS MaintenanceDepartment,
boo_person AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
boo_hours AS ActualLaborHours
FROM r5bookedhours
WHERE boo_event IS NOT NULL
AND boo_org = 'YOUR_ORG'
UNION ALL
/* 7. Checklist Item Verified */
SELECT
ckv_event AS WorkOrderNumber,
'Checklist Item Verified' AS ActivityName,
ckv_entrydate AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
NULL AS MaintenanceDepartment,
ckv_enteredby AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
NULL AS ActualLaborHours
FROM r5checklistvalues
WHERE ckv_completed = '+' -- Logic for completed item depends on config
AND ckv_event IS NOT NULL
AND ckv_org = 'YOUR_ORG' 步骤
- 确认数据库连接:确保您拥有 Hexagon EAM 后端数据库(Oracle 或 SQL Server)的读取访问凭据(通常为服务帐户)。
- 定位核心表:确认拥有 R5EVENTS(工单头)、R5STATUS(状态历史)、R5BOOKEDHOURS(人工)、R5TRANSACTIONS(物料)和 R5AUDITVALUES(审计日志)表的访问权限。
- 映射状态代码:Hexagon EAM 使用可配置的状态代码(如 A、C、O、R)。请查看系统配置(屏幕:管理 -> 代码),将特定的 1 或 2 位代码映射到相应的活动:已批准、已排程、已开始、已完成、质检通过、已签字和已关闭。
- 配置查询:打开下方提供的 SQL 脚本。将占位状态代码(如 'APPR'、'SCHD'、'COMP')替换为您系统中的实际代码。
- 设置日期范围:更新 WHERE 子句,通过 EVT_DATE 或 TRN_DATE 筛选特定时间窗口(通常为最近 12 个月),以确保查询性能。
- 执行提取:在 SQL 客户端(如 SQL Developer、SSMS 或 Toad)中运行查询。
- 验证审计数据:如果“优先级已更新”活动未返回任何行,请检查 EAM 系统设置中是否启用了 R5EVENTS 表的审计功能。
- 验证检查单数据:确保 R5CHECKLISTVALUES 是您版本的正确表;旧版本可能使用 R5ACTIVITIES 来记录任务级完成情况。
- 导出数据:将结果集保存为 CSV 或 Parquet 文件。确保 Timestamp 列的格式为 ISO 8601 (YYYY-MM-DD HH:MM:SS),以避免解析错误。
- 导入至 ProcessMind:将平面文件上传到 ProcessMind 界面,将 WorkOrderNumber 映射为 Case ID,ActivityName 映射为 Activity,EventTimestamp 映射为 Timestamp。
配置
- 时间窗口筛选:当前查询会选择所有数据。强烈建议在基础 CTE 或每个 SELECT 块中添加筛选条件,例如 WHERE EVT_DATE >= SYSDATE - 365 (Oracle) 或 GetDate() - 365 (SQL Server)。
- 状态代码映射:您必须将 SQL 中的字符串字面量(如 'APPR'、'COMP'、'QC')替换为 R5STATUS 集中定义的实际代码。
- 审计配置:提取“优先级已更新”活动依赖于 R5AUDITVALUES 表。如果 EVT_PRIORITY 列关闭了审计功能,则该特定活动的数据将会缺失。
- 组织/租户:如果您的 EAM 实例托管了多个组织,请添加 EVT_ORG 或 EVT_MRC(部门)筛选,以避免数据混淆。
- 语言设置:查询假设使用标准英文列标题。如果您的数据库使用了本地化的列名,请相应调整。
a 查询示例 sql
/* 1. Work Order Created */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Created' AS ActivityName,
E.EVT_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
E.EVT_CREATEDBY AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
WHERE E.EVT_TYPE IN ('JOB', 'PPM') -- Filter for Standard and Preventive WOs
UNION ALL
/* 2. Priority Updated (From Audit Log) */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Priority Updated' AS ActivityName,
A.AUD_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
A.AUD_VALUE AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
A.AUD_USER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5AUDITVALUES A ON E.EVT_CODE = A.AUD_KEY1
WHERE A.AUD_TABLE = 'R5EVENTS'
AND A.AUD_FIELD = 'EVT_PRIORITY'
UNION ALL
/* 3. Work Order Approved */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Approved' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'APPR' -- Replace with your Approved status code
UNION ALL
/* 4. Material Requisition Created */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Material Requisition Created' AS ActivityName,
R.REQ_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
R.REQ_CREATEDBY AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5REQUISITIONS R ON E.EVT_CODE = R.REQ_EVENT
UNION ALL
/* 5. Work Order Scheduled */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Scheduled' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'SCHD' -- Replace with your Scheduled status code
UNION ALL
/* 6. Work Order Started */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Started' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS IN ('STRT', 'INPRG') -- Replace with your Started/In Progress status codes
UNION ALL
/* 7. Material Issued */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Material Issued' AS ActivityName,
T.TRN_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
T.TRN_USER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5TRANSACTIONS T ON E.EVT_CODE = T.TRN_EVENT
WHERE T.TRN_TYPE = 'ISSUE' -- Indicates material issue from store
UNION ALL
/* 8. Labor Hours Recorded */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Labor Hours Recorded' AS ActivityName,
B.BOO_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
B.BOO_PERSON AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
B.BOO_HOURS AS ActualLaborHours
FROM R5EVENTS E
JOIN R5BOOKEDHOURS B ON E.EVT_CODE = B.BOO_EVENT
UNION ALL
/* 9. Checklist Item Verified */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Checklist Item Verified' AS ActivityName,
C.CKV_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
C.CKV_ENTEREDBY AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5CHECKLISTVALUES C ON E.EVT_CODE = C.CKV_EVENT
WHERE C.CKV_COMPLETED = '+' -- Assuming '+' indicates checked/complete
UNION ALL
/* 10. Work Order Completed */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Completed' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'COMP' -- Replace with your Completed status code
UNION ALL
/* 11. Quality Control Passed */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Quality Control Passed' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'QC' -- Replace with your QC Passed status code
UNION ALL
/* 12. Work Order Signed Off */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Signed Off' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'SIGNOFF' -- Replace with your Sign Off status code
UNION ALL
/* 13. Work Order Closed */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Closed' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'CLOS' -- Replace with your Closed status code 步骤
- 使用具有“高级报告编写”权限的用户帐户登录 Hexagon EAM 应用程序。
- 导航至“报告”模块(通常位于“管理”或“报告”菜单下),启动高级报告界面(通常是 Cognos 或内置的 SQL 报告生成器)。
- 初始化新报告创建向导,并选择“SQL”或“自定义 SQL”作为数据源类型。这允许直接查询数据库,而非使用标准业务对象模型。
- 复制下方“查询”部分提供的 SQL 脚本,并将其粘贴到数据集定义窗口中。
- 将占位符值(如 [您的组织代码] 和日期范围)替换为与您的环境相关的具体值。
- 在编辑器中验证查询语法,确保数据库平台(Oracle 或 SQL Server)接受 union 语句。
- 将结果列映射到报告布局列表,确保 WorkOrderNumber、ActivityName 和 EventTimestamp 清晰可见。
- 将报告配置为导出 CSV 或 Excel 格式,以确保表格结构中没有合并单元格或格式化标题。
- 针对验证期(如最后 100 个工单)运行报告,以核实数据结构。
- 验证无误后,将报告设置为定期运行,或针对完整的提取时间窗口执行。
- 下载输出文件并检查日期格式。尽可能确保时间戳包含秒,以便进行精确排序。
- 将生成的 CSV 文件导入 ProcessMind,将 SourceSystem 列映射为 case 属性,ActivityName 映射为活动分类器。
配置
- 日期范围:建议按 EVT_DATE(创建日期)筛选 6 到 12 个月的滚动窗口数据,以保持查询性能。
- 组织筛选:Hexagon EAM 通常包含多个组织。请确保查询中包含针对特定组织代码的筛选,以避免其他业务单位的数据干扰。
- 数据库语法:以下查询尽可能使用 ANSI 标准 SQL,但由于 Hexagon EAM 通常运行在 Oracle 或 SQL Server 上,可能需要对日期函数进行微调(例如 SYSDATE 与 GETDATE)。
- 状态配置:状态代码(如 'A'、'C'、'R')与活动名称(如 'Work Order Approved')的映射必须与您系统的具体状态配置相匹配。
- 权限说明:运行报告的用户帐户需要具有 R5EVENTS、R5EVENTSTATUS、R5BOOKEDHOURS、R5TRANSACTIONS 和 R5AUDITVALUES 表的读取权限。
a 查询示例 config
/* 1. Work Order Created */
SELECT
evt_code AS WorkOrderNumber,
'Work Order Created' AS ActivityName,
evt_created AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
evt_type AS WorkOrderType,
evt_priority AS PriorityCode,
evt_mrc AS MaintenanceDepartment,
evt_updatedby AS UpdatedBy,
evt_target AS TargetCompletionDate,
evt_object AS AssetCode,
NULL AS ActualLaborHours
FROM r5events
WHERE evt_type IN ('JOB', 'PPM') -- Filter for relevant WO types
AND evt_created >= '2023-01-01' -- [Set Start Date]
AND evt_org = 'YOUR_ORG' -- [Set Organization]
UNION ALL
/* 2. Priority Updated (Requires Audit Log) */
SELECT
aud_code AS WorkOrderNumber,
'Priority Updated' AS ActivityName,
aud_date AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
aud_value AS PriorityCode,
NULL AS MaintenanceDepartment,
aud_user AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
NULL AS ActualLaborHours
FROM r5auditvalues
WHERE aud_table = 'R5EVENTS'
AND aud_field = 'EVT_PRIORITY'
AND aud_org = 'YOUR_ORG'
UNION ALL
/* 3. Status Changes (Approved, Scheduled, Started, Completed, Signed Off, Closed) */
/* This block maps generic status codes to specific ProcessMind activities */
SELECT
est_event AS WorkOrderNumber,
CASE est_status
WHEN 'A' THEN 'Work Order Approved'
WHEN 'S' THEN 'Work Order Scheduled'
WHEN 'IP' THEN 'Work Order Started'
WHEN 'C' THEN 'Work Order Completed'
WHEN 'QC' THEN 'Quality Control Passed'
WHEN 'SO' THEN 'Work Order Signed Off'
WHEN 'CL' THEN 'Work Order Closed'
ELSE 'Status Change: ' + est_status
END AS ActivityName,
est_date AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
NULL AS MaintenanceDepartment,
est_auth AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
NULL AS ActualLaborHours
FROM r5eventstatus
WHERE est_status IN ('A', 'S', 'IP', 'C', 'QC', 'SO', 'CL')
AND est_org = 'YOUR_ORG'
UNION ALL
/* 4. Material Requisition Created */
SELECT
req_event AS WorkOrderNumber,
'Material Requisition Created' AS ActivityName,
req_created AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
NULL AS MaintenanceDepartment,
req_createdby AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
NULL AS ActualLaborHours
FROM r5requisitions
WHERE req_event IS NOT NULL
AND req_org = 'YOUR_ORG'
UNION ALL
/* 5. Material Issued */
SELECT
trl_event AS WorkOrderNumber,
'Material Issued' AS ActivityName,
trl_date AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
NULL AS MaintenanceDepartment,
trl_user AS UpdatedBy,
NULL AS TargetCompletionDate,
trl_part AS AssetCode, -- Storing Part ID in Asset column for context
NULL AS ActualLaborHours
FROM r5translines
WHERE trl_type = 'I' -- I = Issue
AND trl_event IS NOT NULL
AND trl_org = 'YOUR_ORG'
UNION ALL
/* 6. Labor Hours Recorded */
SELECT
boo_event AS WorkOrderNumber,
'Labor Hours Recorded' AS ActivityName,
boo_entered AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
boo_mrc AS MaintenanceDepartment,
boo_person AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
boo_hours AS ActualLaborHours
FROM r5bookedhours
WHERE boo_event IS NOT NULL
AND boo_org = 'YOUR_ORG'
UNION ALL
/* 7. Checklist Item Verified */
SELECT
ckv_event AS WorkOrderNumber,
'Checklist Item Verified' AS ActivityName,
ckv_entrydate AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
NULL AS MaintenanceDepartment,
ckv_enteredby AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
NULL AS ActualLaborHours
FROM r5checklistvalues
WHERE ckv_completed = '+' -- Logic for completed item depends on config
AND ckv_event IS NOT NULL
AND ckv_org = 'YOUR_ORG'