所有服务器都使用同一数据库和一个公共文件共享。该文件共享用于日志和若干其他目录,特别是以下目录:logs、var/email、var/plugins 和 var/repository。每个服务器还独立维护一些配置信息(例如,端口和主机)。数据库用于存放配置信息和运行时数据等。
由于这些服务器共享数据库,因此所有服务器都在同一区间上运行。
某些配置属性(例如,数据库和 JMS 连接信息)保留在服务器上。数据库配置在产品安装期间处理;在安装后不需要进行其他处理。
工作流程由活动组成。活动可以按顺序运行、以并行方式运行或者以这两种方式的某种组合运行。典型工作流程可能由若干顺序活动组成,例如:
对于基于 JMS 的通信,可以采用若干方式来配置代理程序:
所有服务器都会不断轮询等待处理的工作流程,因此任何服务器都可能启动该工作流程。获取此工作流程的服务器将运行以下任务:
在它完成工作后,代理程序会基于 JMS 发送响应消息。该消息将(由其中一个服务器)写入至数据库,然后将(由其中一个服务器)启动下一个活动。启动了活动 B 的服务器将运行与上述相同的步骤。
在此处概述的简单工作流程中,活动可能全部由同一服务器处理,也可能由不同服务器(或某种组合)处理。当然,如果此工作流程由三个并行活动组成,那么也是相同的情况。
应用程序工作流程由数据库中的单个记录进行维护(同时只有一个线程处理工作流程)。
在应用程序处理期间,将在工作流程中标记命令失败情况。错误处理是应用程序创作者的责任。可以使用回滚命令/步骤处理组件回滚。此处使用的回滚表示重新安装较低的组件版本。
如果服务器在代理程序运行命令时崩溃,那么 JMS 网孔会将工作流程分配给另一服务器。
如果代理程序在运行命令时崩溃或者消失(请记住,失败的步骤不会导致代理程序本身失败),那么服务器会假定该命令仍在运行;没有自动超时。通常情况下,分配超时时间间隔既不可行也不实用。