在这个由两部分组成的系列文章的第一部分,我们介绍了一个基于 IBM ">业务流程管理器 (BPM) 标准 V8.0.1 的发票处理解决方案。我们介绍了与多个第三方供应商进行交互时遇到的业务挑战,还定义了一个业务过程模型,该模型具有支持的数据结构,是可重复使用的解决方案的支柱力量。图 1 显示了该解决方案的概述。
图 1. 解决方案概述
集成技术
在本文中,我们将重点介绍该解决方案的技术方面,尤其会查看 Java 和 Web 服务集成,以及该解决方案中所涉及到的用户界面和图像处理技术。具体而言,我们将介绍 TWObject 和 TWList 对象如何支持与 Java 的复杂集成,该集成可以扩展 BPM 解决方案的功能。
Java 集成
在整个解决方案中,会使用 Java 代码询问和处理由扫描和索引供应商所提供的发票文件的内容。最有趣的方面涉及到 BPM 中复杂业务对象与其 Java 表示(已从关联的 XML 结构派生)之间的映射。
本系列的 第 1 部分 介绍了 TEAPPS,它是一个用于描述发票的基于 XML 的行业标准,第 1 部分还演示了如何使用 JAXB 来编组 Java 和 XML 表示之间的 TEAPPS 数据。在本文中,我们将使用 TWObject 和 TWList 类检查 Java 和 BPM 之间的关系,特别是 Java 中 BPM 数据结构的表示。这些类是 BPM 提供的常规 Java 类,您可以使用这些类帮助实现与业务对象的复杂集成。
首先,让我们快速回顾一下 TEAPPS 结构,如清单 1 所示。
清单 1. TEAPPS XML 片段
<?xml version="1.0" encoding="ISO-8859-1"?><INVOICE_CENTER> <TRANSPORT_FRAME> <TF_CODE>TF01</TF_CODE> <TIMESTAMP>20130119142648753</TIMESTAMP> <BATCH_ID>13777339</BATCH_ID> <CONTENT_RECEIVER> <RECEIVER_REF>BWEISE-0012928</RECEIVER_REF> <CONTENT_REF>BPMS-Invoice11</CONTENT_REF> </CONTENT_RECEIVER> <SENDER>BW003705925424</SENDER> <FB_REQUEST>1</FB_REQUEST> </TRANSPORT_FRAME> …
TEAPPS 文件的这一部分显示了 <TRANSPORT_FRAME> 标头元素,该元素包含一个嵌套的 <CONTENT_RECEIVER> 元素。映射到该元素的 JAXB 类如清单 2 所示。
清单 2. TEAPPS_ContentReceiver 类
public class TEAPPS_ContentReceiver { private String receiverRef; private String contentRef; @XmlElement (name="RECEIVER_REF") public String getReceiverRef() { return receiverRef; } @XmlElement (name="CONTENT_REF") public String getContentRef() { return contentRef; } public void setReceiverRef(String receiverRef) { this.receiverRef = receiverRef; } public void setContentRef(String contentRef) { this.contentRef = contentRef; }}