使用 SOA 和 Oracle Business Intelligence Publisher 实现企业报表自动化

作者:John Chung 和 Harish Gaur


使用 SOA、企业报表工具和门户构建自动报表平台


Oracle 融合中间件模式文章系列的一部分。

2010 年 6 月发布

下载
 Oracle SOA Suite
 Oracle Business Intelligence
 Oracle WebCenter

简介

企业报表解决方案的价值不可小觑。针对几乎所有数据源创建、管理和提供各种类型的高度格式化文档是极为重要的功能。企业需要这样的工具来生成供员工、客户、合作伙伴等人查看和打印的数以千计的报表。

然而,企业报表生成流程很容易变得复杂。不仅需要根据来自多个数据源的数据即时生成采购单 (PO),而且还必须根据供应商所在国家/地区的条款和条件对报表外观进行个性化。报表还必须遵守供应商自定义的日历时间表:位于加拿大的供应商 A 不应在 7 月 1 日(加拿大国庆日)收到 PO,而位于印度的供应商 2 不应在 8 月 15 日(印度独立日)收到报表。只有在有关 PO 限制和供应商以往表现的内部业务规则均得到满足时才生成所有报表。但这还远远不够。公司还需要实现实际报表编写和生成流程自动化,以确保清晰了解整个报表流程。否则,怎么才能知道运营总监是否已经批准了某个 PO 呢?

该业务需求在任何业务环境中都是很常见的。工作流和个性化都是报表流程所固有的,因此需要报表平台、流程编排框架和协作门户的组合。SOA 提供了一个敏捷的流程编排框架,便于补充或增强企业报表平台。SOA 平台实现任何报表工作流自动化。SOA 还可使人参与到报表审批流程中。业务规则可以帮助基于条件生成报表。有了由流程和业务规则驱动的方法,可以更清晰地了解整个报表流程。同样,协作门户成为在个性化环境中向最终用户提供这些报表的一个载体。能够以一致的方式轻松地提交格式丰富的报表有助于强化特定品牌。在本文中,我们首先将了解如何使用 SOA、企业报表工具和门户构建一个自动化的报表平台。接着,我们还将介绍一个真实示例。Arcturus 是一家领先的房地产服务公司,使用 Oracle Business Intelligence (BI) Publisher、Oracle SOA Suite 和 Oracle WebCenter 构建了一个物业管理报表解决方案 ClientConnect。

自动化的报表平台架构

将 SOA 和门户整合在一个企业报表平台中可以让用户开发出灵活的报表解决方案,以满足各种业务需求。SOA 处理数据逻辑,报表平台处理布局和转换。这样可以使报表布局、报表维护、数据提取和文件生成流程的优化实现了更大的灵活性。

下面是该处理过程的 6 个步骤,从报表流程启动开始,到最终用户看到个性化报表结束(见图 1)。

  1. 使用 SOA 编排报表流程。所有与报表编写有关的流程活动,如数据采集、调度、个性化、规则验证和人工审核,均在业务流程中进行了建模。习惯上使用 Oracle SOA Suite 这样的流程编排引擎来完成建模工作。业务流程驱动整个报表的创建和交付流程。报表创建方式的任何改变只会影响 SOA 流程。使用 SOA 驱动报表生成还提供了明确的对数据源变更的“免疫性”。如果底层数据源在稍后的某个时间点发生变更,SOA 流程可以很容易并入这一变更,而不会影响前端报表。同样,如果业务规则驱动的报表需要更新,则只需在规则集中实施这一变更。另一个明显的好处是跟踪流程的能力,例如,用户审核报表用了多长时间,报表中的不良数据出自哪里。这种可见性能够帮助确定流程中的缺陷。
  2. 生成报表的数据源。一旦报表生成流程启动,它就开始收集提交给最终用户的报表所需的数据。这些数据源通过 Web 服务与 SOA 流程进行交互。正如第一步所讨论的,这个基于服务的方法为整个流程提供了一定的灵活性。本文中,我们假设报表数据来自 SAP 客户关系管理 (CRM) 系统。如果 CRM 系统变为 Oracle Fusion CRM,报表不会受到丝毫影响。只需更新连接 SOA 流程和 Oracle CRM 的 Web 服务。
  3. 人工审批和业务规则验证。业务规则在报表流程中起到非常重要的作用。诸如 Oracle Business Rules 这样的规则引擎可以帮助保持报表流程与业务目标一致。例如,SOA 流程将检查产品库存。该流程将使用业务规则验证库存量否是过高。如果过高,SOA 流程会自动针对所有客户生成一个活动信函。还可以使用规则控制向最终用户的报表传播。在本例中,规则可以决定是否应该限制购买类似产品不到一年的客户收到活动邮件。

    同样,人工干预有助于对完全自动流程设置一些控制。Oracle SOA Suite 提供了人与流程进行交互的功能。Oracle BPEL Process Manager Human Workflow 组件管理人员任务的生命周期,包括创建、分配、到期、最后期限和通知。在本例中,销售经理们可以从 SOA 人员工作流获得一个通知,该通知要求他们审核发给所有客户的活动信函。
  4. 报表输出。SOA 流程只能处理业务逻辑。报表格式及转换是通过报表平台处理的。SOA 和报表引擎之间的传递通过 XML 来完成。数据收集、处理和验证后生成的报表输出以特定的 XML 格式传递到报表引擎。
  5. 企业报表。报表引擎从 SOA 流程获取处理过的 XML 数据,并创建最终报表。报表引擎将处理过的 XML 数据应用于自己的布局模板(也可通过 SOA 流程进行选择),即可创建最终报表。例如,如果您打算生成 PDF 格式的活动报表,可以用可扩展样式语言格式化对象 (XSL-FO) 来描述布局模板,这一 XML 文档格式的标记语言通常用于生成 PDF。

    Oracle BI Publisher 适用于生成企业报表。Oracle BI Publisher 基于开放标准构建,处理 XML 格式的数据。它可以生成各种行业标准的报表,如 PDF、HTML、富文本格式 (RTF)、Microsoft Excel、Microsoft PowerPoint、Flash、电子数据交换、电子资金转账以及以逗号分隔的值。Oracle BI Publisher 还提供了 Web 服务接口以便与 SOA 层进行集成。可以使用这些 Oracle BI Publisher Web 服务生成和调度报表、管理报表和文件夹、验证用户报表访问权限。
  6. 使用 Web 2.0 门户查看个性化的报表。最终报表在个性化的门户平台中提供给最终用户。除一致的用户体验外,该门户平台还能够嵌入主要的 Web 2.0 特性。这也可作为通过人员工作流服务与 SOA 流程进行交互的接口。Oracle WebCenter Suite 是一个理想的平台,通过组合不同的内容并允许用户通过社交计算服务进行协作来提供丰富的用户体验。Oracle WebCenter 可以轻松地从 SOA 引入人员工作流数据并显示 Oracle BI Publisher 报表。这使得 Oracle WebCenter 成为报表创建和报表查看期间唯一的用户交互平台。



图 1:自动化的报表平台架构



现在,我们已经了解了该解决方案的关键组件,下面让我们看一下 Arcturus 如何使用 Oracle BI Publisher、Oracle SOA Suite 和 Oracle WebCenter 构建物业管理报表解决方案 ClientConnect。

Arcturus 的物业管理报表解决方案

Arcturus 是一家房地产服务公司,专门从事物业及设施管理、资产管理、租赁和咨询服务。它管理着 600 多个物业(其中包括商业、零售业和工业地产)。每栋建筑都作为独立的商业实体存在,Arcturus 每月为其客户(业主或资产管理员)提供一份管理报告,其中包括执行概要、财务报表、预算与实际执行的差异分析、租赁(销售)信息及预测、使用率统计信息及使用计划、现金流和经营报告。虽然楼宇数量只有 600 多栋,但公司每月要提供的报表数量却数以千计。

然而,报表的生成流程是非常复杂的(参见图 2)。报表的交付涉及三个主要部门:会计、租赁和物业管理。数据来自多个数据源,包括 Oracle 的 JD Edwards、内容服务器和数据库。Arcturus 以月对物业进行结算,每个部门负责各自的那一部分。会计师编制财务数据,然后发送给物业经理。(由于漏掉应计项目、数字不符等原因,通常还会反复几次。)每次做出修改后,会计师都将重新运行财务报表并通过电子邮件再次发送给物业经理。财务报表草稿获批后,物业经理手工将财务数据重新输入管理报表模板的相关域中,并添加必要的文字说明和其他报表。整个报表的布局是人工排列的。然后将报表生成一个 PDF 文档(包括 JD Edwards 财务报表,也应该是 PDF 文档;因此需要生成两次 PDF),并将报表用电子邮件发送到客户端,或者传递到 Arcturus 的报表信息库 ClientConnect。




图 2:Arcturus 的物业报表生成流程



这个人工流程会导致几个问题。最重要的是,因任务资源分配不合理和管理效率低下,报表的交付需要占用工作人员的大量时间。部门之间缺乏协作还会导致报表交付延迟和相互指责。由于是人工将财务数据重新输入报表模板,因此会存在数据不一致和不准确的问题。例如,JD Edwards 的损益表数据是人工输入到执行概要的。由于上述问题,Arcturus 决定使用 Oracle 融合中间件实现报表编写和生成的整个流程自动化。

ClientConnect 解决方案

Arcturus 选择了 Oracle 融合中间件来编排和简化月报流程。该项目的主要目标是实现月报流程自动化,并在丰富的协作环境中向最终用户交付报表。

如图 3 所示,该解决方案由 Oracle SOA Suite(Oracle BPEL Process Manager、Oracle Business Activity Monitoring、Oracle Business Rules、Oracle Human Workflow)、Oracle WebCenter 和 Oracle BI Publisher 组成。JD Edwards 表中的数据一发生改动,Oracle Enterprise Service Bus (ESB) 就会获取这些改动并启动 BPEL 流程。BPEL 流程编排整个报表流程。Oracle BI Publisher 是报表引擎,它从 Oracle BPEL Process Manager 获取处理过的数据并生成一个高度格式化的报表。基于 Oracle WebCenter 技术构建的 Arcturus 门户将报表交付给物业经理。该门户还显示人员任务列表和业务活动监视信息板。通过业务活动监视信息板(第 2 阶段)可了解报表流程的运营情况。




图 3:使用 Oracle SOA Suite、Oracle WebCenter 和 Oracle BI Publisher 的解决方案



要了解如何集成该解决方案,我们来看一个用例。在本用例中,物业数据及其构成的报表都是使用 Oracle Enterprise Service Bus (ESB) 从 JD Edwards EnterpriseOne 捕获的。一旦捕获了这些数据,BPEL 就将数据推送给会计和物业管理部门的各位审批者。获得批准后,数据就传递到 Oracle BI Publisher 以供生成报表。Oracle BI Publisher 即时生成物业报表。然后,这份报表出现在 Oracle WebCenter 中供最终用户使用。

1. ESB 从 JD Edwards 捕获报表数据并启动 BPEL 流程

一旦 JD Edwards 的用户通过公司的主数据对应付账款 (AP) 和应收账款 (AR) 进行月结账,将启动报表流程。

随着月结账开始,重要物业数据就从 JD Edwards 推送给 ESB。有关特定物业的详细信息由 JD Edwards 发布。这些信息包括业务单元编号、结账周期、年度、报表类型、总账账号、名称和存款余额。此外,有关物业的重要财务信息也从 JD Edwards 获取:

  • 损益表数据
  • 租金账薄
  • 租赁期满信息
  • 应收账款信息
  • 未结采购单(用于生成应计账任务)

ESB 使用数据库适配器轮询来自 JD Edwards 的数据(参见图 4)。它读取识别 AP/AR 是否已经结账的表。一旦发现记录为真,它将启动 BPEL 流程。

在本例中,F55XPARClo 是一个连接到 JD Edwards 数据库的适配器,它对表进行轮询,检查是否需要启动或运行 BPEL 流程;也就是说,如果 AP/AR 需要结账,F55XPARClo 将识别该记录,从而启动或运行 BPEL 流程。然后,中间活动接收从 JD Edwards 表轮询的数据并进行转换,将数据传递给 BPEL 流程的输入参数。




图 4:使用数据库适配器将 ESB 与 JD Edwards 相集成



图 5 显示了从数据库适配器到 SOAP 输入参数的转换(映射)。它将从数据库中选定的列映射为 BPEL 流程的输入参数。例如,数据库表的 xamcu 列传递和映射为另一侧的 businessunit




图 5:来自 JD Edwards EnterpriseOne 的物业数据转换为规范的格式



2. BPEL 流程启动报表编写流程

BPEL 流程从 ESB 获取物业数据并通过一系列人员任务编排月报流程。该流程包括将物业数据及其构成的 JD Edwards 报表推送给用户以供批准的任务。该流程是通过 Oracle BPEL Process Manager 的人员工作流功能完成的。我们来看一下 BPEL 流程的内容以及该流程中有哪些人员工作流角色和业务规则。

图 6 显示了父 BPEL 流程。该流程中的每个步骤代表了一个执行大部分流程编排的子流程。




图 6:编排报表编写的父 BPEL 流程



BPEL Human Workflow 允许用户在 Oracle BPEL 工作列表应用程序 (UI) 中查看任务。然后,用户可以查看联机数据/报表、选择/添加要计入/调整的记录(总账金额),并添加对所发布报表的说明。为使流程继续下去并完成最终报表的编写,必须成功完成这些任务,其中每项任务必须由用户操作。BPEL 流程动态确定特定物业报表的审批者(参见图 7)。




图 7:BPEL 流程动态确定特定物业报表的审批者



一个人员任务完成后,分配了任务的用户将收到一封电子邮件通知,其中包含到 UI 中的任务页面的直接链接。用户一旦登录,就被定向到指定的任务。在图 8 的示例任务中,用户(总经理/总监)正在批准由物业经理提交的物业管理报表。用户可以查看右下角作为链接嵌入的物业管理报表草稿的 PDF 副本。用户有多种选择:批准报表、对变更/编辑添加内部说明并发送回发件人,如果财务数据不正确需要修改数据,则完全拒绝该任务。




图 8:审核报表的物业经理/会计人员使用的任务列表 UI



业务规则在这个编排期间起到重要作用。该流程主要涉及两个部门:会计部门(A)和物业管理部门(P),每个部门中对所有任务都可能需要批准级别,即,P1 的任务需要得到 P2 批准,或者 A1 的任务需要得到 A2 批准。执行每项人员任务前,在进行审批时,BPEL 都要读取业务规则,根据收到任务的用户所属的物业来确定是否批准。这是通过用代表相应角色的 JD Edwards 类别代号填充规则来实现的:物业经理 (P1)、总监 (P2)、会计 (A1) 以及财务经理 (A2)。类别代号指的是在 JD Edwards 内业务单元设置中的类别代号,存储了分配任务的用户的地址簿号码。通过这一切获得必要的用户信息,因此可通过业务单元/物业对任务进行相应定向。在业务规则内通过一个唯一的变量也可以使用跳过批准功能。

图 9 至图 12 的几幅屏幕截图说明了如何在客户级别(编号 9071)创建差异阈值规则。该阈值检查年初至今的实际值与年初至今的预算值的差额是(> $ 1000.00 或“< - $ 1000.00)并且(> 10% 或 < -10%)。这两个条件必须都适用。BPEL 流程可以调用此规则查看是否满足阈值检查。




图 9:规则集中针对不同客户端的所有阈值规则




图 10:针对客户端 9071 的阈值规则




图 11:规则的实际定义




图 12:集中定义的规则变量



我们刚刚了解了 BPEL 流程,它借助人员工作流程和业务规则驱动整个报表编写流程。在整个流程中,针对不同的审批者生成物业报表以供审核。下面我们来看一下 BPEL 是如何与 Oracle BI Publisher 集成以生成报表的。

3. BPEL 调用 Oracle BI Publisher 以生成报表

如前所述,Oracle BI Publisher 通过一个 Web 服务 API 提供大部分功能。开发人员可以使用 Web 服务 API 生成和维护报表。从 Oracle BPEL Process Manager 调用 Oracle BI Publisher Web 服务非常简单。

虽然我们可以从 BPEL 直接调用 Oracle BI Publisher Web 服务,但我们还是通过它的 Java API 组件将 Oracle BI Publisher 与 BPEL 相集成。这样做有两个原因:

  • 我们增强了 UI 的功能,只需单击一个按钮就可即时查看报表。
  • 我们的策略是在整个流程完成后才向数据库写入。创建报表所需的所有数据/信息都包括在有效载荷中。

Java 程序连接到 BPEL 并访问有效载荷,生成模板所需的 XML 数据,并使用 Oracle BI Publisher API 合并数据。该程序访问 FOProcessor 和 RTFProcessor 方法来处理 XML 输入向对应的 PDF 输出的必要转换。

  • RTFProcessor 将 RTF 模板转换为 XSL,准备输入到 FOProcessor 引擎。
  • FOProcessor 引擎合并 XSL 和 XML 生成以下任意一种输出格式:Microsoft Excel (HTML)、PDF、RTF 或 HTML。

使用 Oracle JDeveloper 可以迅速将该程序转换成一个 Java Web 服务。该 Java Web 服务一旦部署完成,将使用部署的 Web 服务描述语言 (WSDL) 的 URL 将该服务链接到 BPEL。下面的示例代码显示了报表如何从 BPEL 接受 XML 数据以及如何调用 Oracle BI Publisher API。

Import oracle.apps.xdo.XDOException;
import oracle.apps.xdo.common.pdf.util.PDFDocMerger;
import oracle.apps.xdo.template.FOProcessor; 
import oracle.apps.xdo.template.RTFProcessor



图 13:报表如何从 BPEL 接受 XML 数据以及如何调用 Oracle BI Publisher API



xmlGetAuditDetails.jsp.xml(单击链接查看)中的示例代码显示了 BPEL 针对 RTF 模板生成的 XML 以及填充了 BPEL 数据的最终报表。这些数据来自人员任务有效载荷,是由用户提交的,显示的金额是通过 UI 进行编码的。

图 14 所示的 Oracle BI Publisher 模板通过 Oracle BI Publisher API 接收上面示例显示的 XML 数据,并将输出转换为 PDF 格式。




图 14:用于创建报表的报表模板的屏幕截图



图 15 显示了将用户提交的 XML 数据/有效载荷与 Oracle BI Publisher 模板合并后生成的 PDF 输出。其中的签名也是在用户批准了分配给他们的任务后立刻自动附加到模板上的。




图 15:最终报表的屏幕截图



我们已经阐释了如何将 Oracle BI Publisher API 打包为一个 Java Web 服务以及如何从 BPEL 调用 Oracle BI Publisher API。该 Java Web 服务从 BPEL 获取 XML 数据,并将这些数据与报表模板合并以创建最终报表。现在,我们来看一下最终用户如何在 Arcturus 门户中查看报表。

4. Arcturus 门户为物业经理提供报表

使用 Oracle WebCenter 构建的 Arcturus 门户是一个查看报表、审批任务、与同行进行联系的统一平台。我们来看一下这个门户的两个重要方面:Oracle BI Publisher 报表如何集成到门户中以及人员任务如何整合到门户中。

BPEL 将生成的最终输出报表发送到 Arcturus 门户服务器上的结构化文件夹中。从结构化文件夹中,用户可以通过 Oracle WebCenter Document Library 组件访问完整的报表。Oracle WebCenter 应用程序结合使用一个应用开发框架 (ADF) fileDownloadActionListener 和一个辅助 bean 来下载 PDF 文件。




图 16:配置 ADF fileDownloadActionListener
下载和显示 Oracle BI Publisher 报表



人员任务列表也整合到 Arcturus 门户中。用户登录到 Task List Webcenter 应用程序,查看分配给自己的人员任务。人员任务是一些由到 SOA-BPEL 应用程序的连接提供的前端人机交互 Web 页面。使用 ADF ViewController 项目显示任务列表并链接到 SOA 人员任务以及 Web 上的 Oracle WebCenter 组件和特性。下面的几幅屏幕截图显示了物业经理如何使用 WebCenter 审核和下载报表。




图 17:工作列表 UI 与 Oracle WebCenter 相集成




图 18:Oracle WebCenter 允许用户下载和查看报表




图 19:显示最终报表的门户的屏幕截图



正如您所看到的,这个解决方案组合了 Oracle SOA Suite、Oracle WebCenter 和 Oracle BI Publisher,使 Arcturus 整个物业管理报表的生成实现了自动化。其结果是实现了一个更透明的流程,使会计部门和物业管理部门间的协作更加紧密。Arcturus 从这个解决方案得到的一个最大好处就是能够跟踪流程内部的任务。该解决方案为管理人员提供了识别潜在问题的能力,同时还为确保按时向客户端提供报表以及主动调解可能造成报表延迟的风险提供了解决方案。

数据“自动填充”使物业经理编写数据以及将数据转移到报表中所需的时间/工作量(每份报表所需的时间/工作量取决于报表的大小)减少了一半。每份报表的总报表周期减少了百分之四十,Arcturus 估算其 ROI 小于两个月。Arcturus 计划在其他关键领域(如合同管理、新物业过渡/财产处置和员工雇用/解聘)也实施类似的解决方案。

总结

企业报表可以从 SOA 和门户平台大大受益,从而创建一个敏捷的个性化报表平台。SOA 可以对报表工具进行补充以管理非常重要的人工干预并使报表与不断变化的业务目标始终保持一致。门户平台提供了一个统一的界面,从而能在一个一致的、个性化的环境中提供报表。随着类似 BPEL、Web 服务、WSRP 和 XML 等标准的出现,可以比以往任何时候都更轻松地无缝集成这些内容。组织可以从人工处理的减少和对整个报表流程可见性的提高中大大获益。


John Chung John Chung 是 Arcturus Realty Corporation 负责 IT 的副总裁,拥有 10 多年的房地产行业经验,同时具备涵盖了各种不同语言及环境的多种技术和编程知识。
Harish Gaur Harish Gaur 是 Oracle 融合中间件产品管理总监。在这一职位上,他与战略客户密切合作,使用 Oracle SOA 技术实现了面向服务的架构。Harish 与人联合编写了《The BPEL Cookbook》(由 Packt Press 出版)。