Lotus Connectors LotusScript Extension (LCLSX)
理想情况下,使用 LEI 表单的功能就能百分之百满足您的集成需求,但情况并非总是如此。很多时候需要一定的业务逻辑,从一个地方读取数据、到达另一个地方之前解释或修改数据。或者需要按照某种顺序执行一些 SAP BAPI 来完成一项任务。比方说,从 SAP 上修改给定雇员的 HR Master Data 之前必须锁定该雇员,然后修改,完成后再解除锁定。必须在一个 SAP 连接中执行这三个动作。对灵活性的要求高于 LEI 活动。在 LEI 活动中,每次只能使用一个 BAPI。 一种办法(非常好的办法)是让 SAP ABAP 人员创建包装器 BAPI,一步完成需要的三个动作,但是如果做不到,可以编写 LotusScript 来满足要求。
我们后面将举一个这样的例子。首先用 LotusScript 来实现,然后假设 ABAP 人员编写了漂亮的包装器能够一次完成三个步骤,从而说明使用 LEI 来完成这样的任务是多么简单。不过,我们首先要介绍 LCLSX 的强大功能。LCLSX 是一种传统的 LotusScript 扩展,专门为企业系统设计的。目标设计非常适合用于 RDBMS 连接程序。也可使用 SAP Connector,但有时候 RDBMS 模型更彻底,后面我们将会看到。
LCLSX 有两种强大的功能是其他 LSX 没有的:
- 连接池。可以缓冲和重用非常耗时的连接,从而提高性能,减少新建连接时要执行的活动(如安全登录到企业系统)。这些连接不局限于 LotusScript 的作用域,实际上在进程级别上维护。只要 Domino 服务器进程或者 Notes 客户机进程在运行,连接池就存在。
- 数组读/数组写。LotusScript 是一种解释语言,就是说运行起来要比编译程序慢。假设要读取包含 100,000 个记录的 DB2 表,并把每个记录中的数据写入一个新的 Notes 文档。在 LCLSX 之前,需要在 LotusScript 中使用执行 100,000 次的循环来完成。LCLSX 从 DB2 表中读入第 1 到第 1000 个记录(单个 LotusScript 步骤),并同时将这些记录插入 Domino 数据库。我们读取一个记录数组,然后写入该数组。LotusScript 循环执行 100 次而不是 100,000 次。在底层使用编译程序执行这类重复性的工作可以极大地改善性能。