Oswald Regular
OpenSans Regular
Co>Operating System
广泛而深入

Co>Operating System 是构建、集成和运行企业业务应用程序所使用的环境,是 Ab Initio Enterprise Meta>Environment、Continuous>Flows、Conduct>It、Business Rules Environment 等技术的基石,这些技术为用户提供了完整无缝的应用程序开发和执行环境。

Co>Operating System 的核心是“数据流引擎”。该引擎驱动大型数据处理“组件”库,由这些组件操纵数据在应用程序的流动。用户通过 Ab Initio 的 Graphical Development Environment(GDE)以图形方式对应用程序进行设计、实施和维护。

Co>Operating System 的核心准则是设计和开发应用程序的方式与大多数人在白板上(甚至纸巾上)设计系统时所用的方式一致。Co>Operating System 使用易于识别的图标表示输入和输出。输入输出与处理框和箭头组合在一起定义了整体处理流。简而言之,创建 Ab Initio 应用程序的过程简洁而且直观,只需从大型组件库选择合适组件,然后用代表数据流的线将其连接即可。

Ab Initio 将应用程序的设计和执行无缝集成到一起,画出的图形就是应用程序,可以以批处理、近乎实时或实时的方式运行,这些运行方式甚至可以组合,以构建一个协调且功能强大的计算环境。

将数据流图形化意味着 Ab Initio 可构建几乎能够想象的所有业务应用程序,从操作系统、分布式应用程序集成、复杂的事件处理直到数据仓库和数据质量管理系统均可通过 Ab Initio 构建。当然,图形化设计和开发只能解决部分难题。这些应用程序还需要满足操作和管理方面的要求。

传统意义上的图形编程技术生成的图形很美观,在解决现实问题时却华而不实。Co>Operating System 则卓有实效,截然不同。以下为 Ab Initio 的一些应用案例及其设计要求:

  • 一家全球首屈一指的证券交易所将用于关键任务操作的数百万行 Cobol 代码转换为 Ab Initio 应用程序。该解决方案是交易处理管道的重要环节。应用程序连接到实时交易总线,以每秒超过 500,000 条信息的速度处理交易。
  • 一家全球首屈一指的零售商从数以千计的商店收银台实时接收购物数据,并进行库存控制和欺诈检查。
  • 一家全球首屈一指的电讯公司处理呼叫详细信息,进行呼叫评级、数据使用跟踪和网络监测,每天处理数十亿条呼叫详情记录和数百万条使用查询。
  • 一家全球首屈一指的芯片制造商从生产线实时抽取制造质量信息,以便改进产出。
  • 一个全球首屈一指的信用卡网络使用 Ab Initio 做为其数据主干,以批处理和实时模式处理并向后端系统传送所有交易。他们每年在 Ab Initio 的数据存储系统中累积 1 PB 的交易数据,系统通过快速响应查询为客户服务呼叫中心提供支持。
  • 一家全球首屈一指的互联网公司每天处理海量广告,以便开具帐单和更好地编排广告。
  • 一家全球首屈一指的保险公司使用 Ab Initio 处理索赔涉及的大部分工作。该公司的续保和条约处理系统涉及的数万条规则,全部都通过 Ab Initio 得以实施。
  • 一家全球首屈一指的快递公司使用 Ab Initio 应用程序生成所有发票并计算其客户经理团队的销售薪酬。
  • 一家全球首屈一指的银行将所有业务线中的全部客户信息合并到 Ab Initio 软件构建的大型数据仓库,并通过 Ab Initio 定制和处理其全球各分部之间的所有 SWIFT 交易。

您可能注意到这些案例都提到公司规模为“全球首屈一指”。为什么这些企业巨头都选择 Ab Initio?这是因为 Ab Initio 软件不仅直观、容易使用,而且经得起最复杂应用程序逻辑和海量数据的考验,Ab Initio 软件更具备出色、稳定而可靠的性能。这些特点组合起来的魅力独一无二。

这些仅以点觑面,只提及客户广泛应用程序的特定部署。满足所有应用要求需要诸多功能,其中包括:

  • 以图形轻松表达大量复杂的逻辑。
  • 完善的连接性:种类繁多的数据库、队列系统、平面文件、ERP 系统、标准信息传递协议等。
  • 对复杂的数据结构提供原生支持,支持来自任何位置的任何类型的数据。层次化(XML 和其他历史类型)、全球通用、大型对象、可变长度、位包等类型的数据均受支持。
  • 支持多种操作系统(Unix、Linux、Windows、大型机),并支持跨越这些平台的分布式处理。
  • 开放式架构,迅速与遗留数据和第三方应用程序、数据及环境实现集成。
  • 高效率和高可扩展性,能够跨越服务器网络实现类似“云”的计算。
  • 高性能的批处理和实时处理(web 服务和面向服务的体系结构 (SOA) 及流处理)。
  • 能够很好地重复使用应用程序的大小片段,包括业务规则。
  • 出现数据问题和系统故障时能迅速恢复。用户对故障响应有很强的控制力。
  • 完备的管理功能。支持包括版本控制和升级在内的软件开发生命周期,同时支持调度、监控和警告,及应用程序分析等其他功能。

满足这些要求的唯一途径是在开始设计体系结构时就同时满足所有要求。体系结构一旦定型,就无法再添加基础功能。Co>Operating System 从设计伊始就万事具备,是经过实践检验的可靠技术,而且已成功应用于诸多类型的复杂数据处理应用程序。

什么是 Ab Initio 应用程序?

Ab Initio 应用程序的核心是数据流图形,或简称为“图形”。图形由组件构成,组件通过数据流连接到一起。

例如,以下图形是一个简单的应用程序,从包含客户交易的平面文件读取每条记录,然后重新设定数据格式(通过应用规则),再对其进行排序和累计(或聚合),处理结果随后写入数据库(例如 Oracle)表内。

通过使用可配置程度很高的组件,Ab Initio Co>Operating System 为业务数据处理提供了所有基础构建模块,其中包括:

  • 数据转换
  • 选择/筛选
  • 去除重复项
  • 汇合/合并
  • 拆分记录/记录归一
  • 压缩/解压缩
  • 累计/扫描
  • 排序
  • 数据生成和验证
  • 等等

此外,Co>Operating System 自身配备一个大型内置组件库,用于处理所有类型的数据源或数据目标。通过组件库的组件,可以执行以下操作:

  • 连接 Unix、Windows 和大型机系统中任意类型的平面文件
  • 连接所有常用和非常用数据库(Oracle、DB2、Teradata、SQL Server、Netezza、Greenplum、大型机 DB2、IMS、IDMS、Adabas 等)
  • 连接所有标准消息队列体系结构(IBM MQ、JMS、Microsoft MQ)
  • 连接 Web 服务体系结构(WebSphere、WebLogic、IIS、Apache/Tomcat 等)
  • 连接诸多第三方产品(SAP、Siebel、SAS、PeopleSoft、Salesforce.com 等)
  • 解析和操控层次化数据结构(XML、ASN.1、Cobol 等)
  • 解析、操控和生成特定领域的数据格式(Swift、FIX、EDIFACT 等)
  • 基于内容的信息路由
  • 连接多种数据定义和商务智能产品的元数据(ERWin、ERStudio、Microstrategy、Business Objects、Cognos 等)

小型应用程序有三五个组件。大型应用程序可能有上百个组件。特大型应用程序则可能有数千个组件。应用程序还可以由多个图形组成,每个图形可以包含多个组件。

Ab Initio 应用程序具备极高的重复利用性,规则和组件可被所有类型的应用程序(从极小型到极大型)重新利用,从而迅速应对业务需求变化。

完全以图形化的方式指定业务逻辑

在组件层之下,Co>Operating System 可将几乎任意类型的用户指定规则和逻辑应用于任意类型的数据,并且以图形化的方式设计和表现。在同类技术中独一无二,鹤立鸡群。其他技术虽然提供了图形化的规则规范,但只能应用于简单的规则。规则的复杂程度一旦提高,用户很快就会遇到不可克服的障碍。最终,用户不得不在处理复杂项目时放弃该技术,转为使用传统的编程方法(Java、C++、脚本、存储过程、Perl 等)。

Co>Operating System 不会出现这种情况。用户会发现,通过 Co>Operating System 指定复杂逻辑十分便利,为工作效率、易用性和透明度带来数不胜数的好处,用图形方式指定规则使一切都简化,非技术人员也更能理解其含义。

在 Co>Operating System 中,用户通过 Ab Initio 的数据操作语言 (DML) 指定规则,这些规则应用于“转换”组件,而“转换”组件则是处理数据的基本构建块。转换组件可实现将一类记录结构映射为另一类结构的多种转换功能,如累计数据、筛选数据、拆分记录/记录归一、汇合多个数据流等。每个组件均能在处理记录时将 DML 指定的规则应用于所处理的记录。

以下是一个简单规则的截图,它计算映射组件的输出。左侧是组件的输入字段,右侧是输出字段,中间为规则。

通过“表达式编辑器”可以构建所有规则,如下所示。表达式的大小和复杂程度没有限制,DML 具备大型内置操作符和函数库。

Ab Initio 还支持另一组业务规则规范用的用户界面,适用于业务分析人员和领域专家等非技术人员用户。这些用户使用业务术语而非技术术语,并且使用其熟知的类似电子表格的方式组织规则。

单击 Business Rules Environment 了解详细信息。

Co>Operating System 可以按原样处理任何类型的数据

通过 Co>Operating System,数据可以保持原样或转换为任何用户指定的格式,Co>Operating System 不会强制将数据转换成其可以理解的几种有限的内置格式,而是使用数据的原生格式对其进行处理。这样数据处理在所有支持的操作系统上均稳定而一致。因此,Co>Operating System 和 Ab Initio 组件可以在 Unix 和 Windows 服务器上原生处理大型机数据,在大型机上处理 XML,也可以在任意位置处理复杂的层次化和位压缩结构、带自动转换的全球通用数据。无论应用程序在哪里运行,Co>Operating System 都能利用相同的数据和相同的应用程序产生一致的结果。

应用程序可以从异构系统读写数据,格式各异的数据也可以在应用程序的不同位置。以下示例中的应用程序从平面文件读取大型机数据,从 MQ 队列读取 XML 数据,并以不同的中间格式处理该数据,然后使用全球通用代码集将结果输出到平面文件。

Co>Operating System 了解如何从任何存储位置获取其数据格式:数据库的查询编录、架构定义产品、Cobol copybooks、XML DTD 或 XSD、WSDL、表格或者内部数据格式系统。

下面是上例中标为 “ASCII 层次化”的中间流的记录格式表现形式:

最后,Co>Operating System 及其组件能够根据需要自动转译格式。例如,写入 Oracle 数据库的组件处理 EBCDIC 和压缩的十进制数据时,如果数据库中的列有这些格式,组件就会自动将数据转译为 ASCII 和十进制数。

性能和扩展性

Co>Operating System 在设计之初就以性能和可扩展性最佳化为出发点, 致力于优化硬件的最大性能,并且可在服务器场中分散处理负荷,因此用户根本不需要“云”技术。

与处理速度排名第二的技术相比,Co>Operating System 至少要快四到五倍,能够编写出运行速度象 Ab Initio 一样快的程序员绝对凤毛麟角!即使您麾下有幸拥有如此优秀的程序员,通常是贵组织内唯一能够使用 Java 或 C++ 完成这项工作的技术精英,通常需要几周的时间才能编写出 Ab Initio 区区几日就能完成的代码。这些出类拔萃的程序员通常不会把时间单纯耗费在纯粹的编程工作上,而是集中精力设计、构建体系结构或管理项目。

Ab Initio 如何做到同时兼顾扩展性和性能的呢?Ab Initio 有什么“秘方”吗?这其中的因素有很多,最重要的是体系结构和对所有细节的高度重视。Co>Operating System 体系结构在设计之初就牢牢把握了可扩展计算这一“首要方针”。

Co>Operating System 的体系结构采用的是“无共享”模式,由于无须 CPU 有任何共享,CPU 因此得以完全独立运行。这样,一个应用程序就能视需要分布到任意数量服务器上的任意多个 CPU 中。Co>Operating System 为在多个 CPU 上均匀分配工作量提供了便利条件,因而大部分应用程序可以获得线性扩展能力。这也意味着 CPU 的数量翻倍性能也会翻倍。CPU 的数量增加 10 倍,性能也会提高 10 倍。Co>Operating System 将数据并行与管道并行组合到一起,确保并行执行应用程序片段可能性的最大化。

以下这个简单示例显示了应用程序如何分流数据,以便计分组件可以在多个 CPU(和服务器)上并行运行。Partition by Round-robin 组件将客户数据均分为大小相等的数据流,并逐个分发给下游组件,这类似于打牌游戏中发牌者的发牌操作。Co>Operating System 随后运行计分组件的多个实例,每个实例处理一个数据流。从计分程序的每个实例输出每条记录时,Interleave 组件将数据流重新合并到一起,然后再将结果写入输出文件。一切都如此简单。

在不存在瓶颈的情况下,无共享模式架构的工作效果非常好。但是,只要系统中存在一个瓶颈,整体效果就会受到巨大影响,这也是需要对细节倍加注意的原因。为保证最佳性能,需仔细设计和实施系统中任何可能引发瓶颈的部件,以免带来障碍。实施过程中,用户必须在多种环境中对所有组件的全部算法进行优化。分区和组件间的所有通信和数据传输必须使用最有效的渠道。只有重视所有这些细节,系统才能达到最大的可扩展型。

业务规则的执行是另一个重要细节。如果系统设计得当,大部分的 CPU 时间应用于完成此项任务。Co>Operating System 的转换引擎负责运行业务规则,具有特殊设计的“即时编译器”,使 Co>Operating System 会尽其可能推迟对业务规划的编译,从而确保编译时有关处理对象的所有信息均已最终准备完毕。“即时性”带来了极大的灵活性,高度优化后的“编译器”以最高的性能运行传统业务逻辑,这就是使用传统技术很难与 Co>Operating System 匹敌的原因所在。

Co>Operating System 的处理模型

Co>Operating System 是分布式的端对端处理系统,它必须安装在所有运行应用程序的服务器之上。单个服务器则可以运行不同的操作系统(Unix、Linux 和 zLinux、Windows 或 z/OS)。

此处展示了 Co>Operating System 如何管理分布在服务器网络中的一组进程。

Co>Operating System 的工作方式
1.
Co>Operating System 从“主”服务器启动,该服务器读取应用程序、数据格式、逻辑规则、
参数等定义……
2.
Co>Operating System 在其他服务器启动“代理”
3.
主进程通知组件的每个代理在该服务器执行,并告知组件工作所需的所有信息。
4.
代理启动组件并通知其规则、记录、参数等信息……
5.
组件通过数据流连接并开始处理数据,代理则监视处理过程。

1.Co>Operating System 在“主”服务器启动,主服务器读取应用定义、数据格式、逻辑规则、参数等。

2.Co>Operating System 在其他服务器启动“代理”。

3.主进程通知组件的每个代理在该服务器执行,并且为其提供作业所需的一切信息。

4.代理启动组件并通知其规则、记录格式、参数等。

5.组件连接数据流并开始处理数据。代理监控处理操作。

如图所示,一个 Ab Initio 应用程序可以在一个服务器或服务器网络中运行。在这两种模式中,应用程序的定义和开发人员指定的图形化示意图均相同。组件运行位置的规范稍加改动就可以使应用程序在另一组服务器上运行,应用程序本身无需更改。应用程序无须变动即可从大型机转到 Unix,或从一个服务器转到服务器群集。

Co>Operating System 在 Unix、Windows、Linux 和 zLinux 及 z/OS 平台的表现同样出色。应用程序甚至可以在这些平台的任意组合中运行。Ab Initio 的每个组件均可在任何安装了 Co>Operating System 的平台中运行(几个平台专用的组件除外,如大型机上的 VSAM 访问)。Co>Operating System 负责处理计算机之间移动数据的复杂难题,提供无缝中间件和处理功能。每次运行应用程序之前,可以更改组件在目标机器上的分配。

任何组件或组件集均可以分配给不同的计算机资源:

批处理、实时处理、Web 服务均可在 Co>Operating System 运行

构建和实现实时处理和批处理应用程序的需求千差万别,所用技术也不尽相同。Co>Operating System 的表现则与众不同,得益于统一的体系结构,Co>Operating System 对批处理、实时及 web 服务(SOA)系统都适用。用户无需为每种系统准备不同的技术和开发团队,而在实施相同的业务逻辑时进行重复劳动。Co>Operating System 与 Continuous>Flows 的存在,使得通过一种技术、一个开发团队及在不同系统中反复使用的同一种业务逻辑编码成为可能。

使用 Co>Operating System 时,应用程序是批处理还是实时取决于其读写的内容。以下为应用程序示例,首先显示的是一个批处理系统(输入和输出连接到平面文件),之后为实时队列系统(输入为 MQ,输出为 JMS),最后为 web 服务(从外部系统获得服务请求,然后将结果返回该系统):

单一应用、多种模式

1.批处理。

2.队列。

3.Web 服务。

单击 Continuous>Flows 了解详细信息。

集成历史代码

Ab Initio 通过 Graphical Development Environment 即可构建端到端的应用程序,之后在 Co>Operating System 就可运行这些应用程序。但是,用户通常已经具有运行良好的现有应用程序或第三方产品,无需重新实施。对此,Ab Initio 能轻松重复使用这些现有的应用程序,无论编码是 C、C++、Cobol、Java、shell 脚本还是其他语言,都能应对自如。实际上,Co>Operating System 还能将这些应用程序集成到与其原来的设计目标不同的环境中。

历史代码可以被转换成与其它 Ab Initio 组件行为方式类似的组件,这样这些组件即可被集成到 Ab Initio 应用程序中。对于大部分历史代码而言,这一过程很简单,只需程序输入和输出的规范和命令行参数即可。以下示例显示了如何取用一个可以读写平面文件的 Cobol 程序并将其插入 Ab Initio 应用程序中。Cobol 代码及其 Copybook 和 JCL 转为 Ab Initio 组件,该组件放置在跨越 Unix 服务器和大型机的 Ab Initio 应用程序中,而应用程序连接不同的数据源和目标(SAS 和数据库)。最后,为了提高性能,程序对负载进行平衡以便 Cobol 代码能在多个实例中并行运行。

历史代码整合
用户收集并添加
以下 Cobol 相关数据
该组件可连接到任何
Ab Initio 能够调用的程序。
至此,相同的 Cobol 代码即成为连接到 SAS 和 RDBMS 并横跨 UNIX 和大型机的一部分。
UNIX
大型机

遇到无效数据时迅速恢复

构建和维护实际运作系统时,处理异常或无效数据通常是一项艰难的任务。在现实工作中,这种情况随时可能发生,如果输入这类数据,较为幸运的结果是大部分应用程序出错,造成应用程序崩溃。如果运气不好,这些应用程序可能会因无效数据产生异常行为,也没有人注意结果的异常,甚至到达并破坏下游系统。清理这类混乱既费时又费力,严重影响工作效率。

Co>Operating System 自身具备无效数据恢复能力,并可持续检查数据是否满足各种用户和系统指定的标准。如果数据与标准不符,在无干预的情况下系统不允许继续使用这类数据。对于开发人员来说,在应用程序中构建自动干预和报告操作是简单易行的事情。干预可以是修复出错的数据,然后重新将其输入系统,或隔离所有相关的数据实体以便稍后用一致的方式加以处理。

以下示例展示了开发人员如何在 Ab Initio 构建应用程序,在此图形中,应用程序 1 捕捉有问题的数据;2 对有问题的数据运行“cleanup”规则集;3 将经过清理的数据合并到原始进程中;4 隔离出无法清理的数据;最后5 生成有关问题数据的报告;并6 通过 MQ 队列发送报告。

所有以适当方式处理数据的 Ab Initio 组件都有可选的 Reject、Error 和 Log 端口。Reject 端口输出所有问题数据,Error 端口提供每条问题数据的对应记录,Log 端口则输出调试信息,从而确保了工作通道中数据的可靠性。

遇到系统故障时迅速恢复

服务器失效,网络连接中断,数据库无法加载,这些系统故障在实际工作中频繁发生。应用程序涉及的服务器越多,出现系统故障的可能性就越大。对于任何一位程序员,编写能从故障中可靠恢复的应用程序都是一项极具挑战性的工作。在实践中,尽管许多开发人员不愿意承认,但是判定体系结构是否牢靠的唯一办法是实际运行程序,并在不断纠错中完善系统。当然,我们深知这是一个让人身心疲惫、倍感煎熬的过程。

设计伊始,Co>Operating System 开发人员就把故障可靠恢复的能力做为出发点。只要环境已经配置为不丢失重要数据,Co>Operating System 的检查点/重启功能就能从出现故障前的终止位置重新启动应用程序,无论应用程序是跨网络、多台服务器还是多个数据库,或者应用程序的运行模式是批处理还是实时都无影响,Co>Operating System 都能出色地完成恢复任务。Co>Operating System 使用类似两阶段提交的运行机制,比行业标准的 XA 协议性高出许多。当然,系统同时支持需要 XA 协议的环境。Co>Operating System 的这种深度支持甚至包括使用不同供应商的各种数据库和队列技术系统。

Co>Operating System 通过重复使用大幅度提高效率

Ab Initio 擅长解决异常艰难的问题,应用程序也自然可能庞大而复杂。但是,大多数系统都包含许多彼此类似的片段,同一项目也可以有诸多不同版本。使用传统编程技术的开发人员通常要需要复制这些片段,形成多个副本,然后对每个副本做些小改动。从维护和效率两方面来说,都费时又费力,难以实现。

为简化并强化这些应用程序片段的重复使用,Ab Initio 提供了一系列机制。应用程序中所有类型的片段均存储在 Ab Initio Enterprise Meta>Environment (EME)中,即数据存储的集中化地点,从而得以在应用程序内部和之间重复使用。以下为集中存储、管理和重复使用的示例:

  • 记录格式
  • 业务和逻辑规则
  • 应用程序的各个部分(应用程序称为图形,它的各个部分称为子图形)
  • 应用程序的有机集合(Ab Initio Conduct>It 中的“计划”)

Ab Initio 提供强大的重复使用功能。重复使用的应用程序片段可与存储库版本进行链接,跟踪中心存储库(即原始版本)的变化。此外,这些片段在跟踪存储库版本变化的同时还支持本地自定义需求。

以下为可重复使用的应用程序模块示例:子图形是包含应用程序(图形)子项的组件,对其大小或复杂程度没有限制,并且可以嵌套。子图形的行为方式与正常组件完全相同,可以保存在存储库中以便在多个应用程序中重复使用。

此子图形与此前所述的应用程序中负责错误处理的部分相对应:

请注意:此子图形中的组件没有明确连接任何输入或输出组件,而是使用子图形“Standard Error Handling Process”的输入和输出端口。

下方为同一应用程序,构建时重复使用了上面定义的错误处理子图形(GDE 中边框线部分为子图形)

结论

Co>Operating System 是整个 Ab Initio 体系结构之基础,涵盖所有主要的 Ab Initio 体系结构理念。由于所有 Ab Initio 技术均通过某种方式融入 Co>Operating System,这些理念因而得以连贯无缝地融入所有 Ab Initio 产品之中。

体系结构优势:

  • 无需传统编码,以图形方式构建整个应用程序系统。
  • 与传统编码相比,以图形范例技术开发和维护应用程序的工作人员效率要高出许多。
  • 技术人员可以更好地应对不断变化的业务需求。
  • 大幅度提升应用程序透明度,更利于业务用户和分析人员理解程序内容。
  • 具有无限的扩展能力,可在多个平台移植,处理任何类型的复杂数据,实施极为复杂的业务规则,经受无效数据和系统故障的考验等。
  • 业务规则能够在批处理、实时和 web 服务模式的应用程序之间重复使用。

Co>Operating System 在设计伊始就注重以一个体系结构获取所有这些性能,因此以上种种功能皆可实现。

English
Français
Español
Deutsch
语言:
简体中文
日本語