服务管理
标准、可重用的 Windchill 服务的开发导致需要一种通用机制来管理这些服务的行为以及它们之间的交互。此服务管理机制可指定在 Windchill 服务之间启动、关闭和通信的协议。
自动服务启动
wt.properties 配置文件包括用于指定在启动 Windchill 服务器时应自动启动哪些服务的条目。此外,每个条目都指定服务接口与应构建服务的实现之间的配对。也就是说,除了服务的标准实现之外,如果还提供了其他实现,则可以声明其他实现之一,以在这些条目中对其进行执行。另一方面,多个服务接口也可以由单个类来实现。例如,PersistenceManager 和 PersistenceManagerSvr 均由 StandardPersistenceManager 实现。以下是标准 Windchill 服务的多个条目的示例:
服务条目编号
服务编号会指示服务的启动顺序。服务从最小编号到最大编号依次启动。如果服务取决于其他服务,则必须先启动这些服务。
Windchill 服务或自定义服务没有保留的范围或值。在每个新版本中,任何预设的 Windchill 服务都可以重新编号,并且可以分配任何新编号。服务编号的最大值为 231-1 (=2147483647)。
定义自定义服务时,应选取最小服务编号,该编号应比任何 Windchill 服务使用的最大服务编号大得多。可通过检查 wt.services.service 服务来确定 Windchill 服务的编号。安装中 <Windchill>\codebase\wt.properties 中的 #### 条目。每次安装新版本的 Windchill 时,都需要检查 wt.properties 中的条目,以确保所有自定义服务的编号都大于最大 Windchill 服务编号。
对于每个自定义服务,必须确保其编号不会与现有 Windchill 服务或自定义服务的任何编号重复。
服务和管理器
有一些条目称为服务或管理器。在 Windchill 开发的初始阶段,不清楚使用术语“管理器”还是“服务”。普遍认为,服务代表更通用的概念,管理器代表那些被更多描述为管理对象组的服务。当前,术语管理器和服务以互换形式显示。
服务启动和关闭
要管理服务,必须实现 wt.services.Manager 接口。此接口可指定用于启动和停止服务的方法。
wt.services.Manager 的参考实现名为 wt.services.StandardManager,可提供服务管理所需的大多数基本功能。如果新的服务类型不需要任何特殊的启动或关闭处理,则可以扩展 wt.properties.StandardManager,而不覆盖其任何方法。
旨在覆盖类 wt.services.StandardManager 中的两种方法以专门化启动和关闭处理。这些方法为 performStartupProcess 和 performShutdownProcess。启动处理的示例包括订阅服务事件并建立用于后台处理的队列。
服务管理
ManagerService 是一个管理器,用于启动并提供对预定义的管理器列表的访问。此列表包括服务的不同管理器。除了管理管理器外,ManagerService 还可提供同步事件发送服务。此服务可以将可否决事件或不可否决事件发送给事件键的所有监听程序。每个监听程序都可能会也可能不会反对该事件。该服务针对由事件键标识的事件分支,对每个事件监听程序执行同步的“线程/事务处理内”通知。其会针对每个订阅者调用 notifyEvent 操作。