[]
        
(Showing Draft Content)

如何在系统运行过程中执行自定义操作

问题描述

Wyn 是一个高度可定制的系统,客户可以在系统运行过程中执行一些可执行程序或脚本文件,以完成某些需求。

比如在Wyn 的所有服务启动后,自动注册 Wyn 许可证;在 Wyn 的所有服务启动后,自动刷新不可用的 COT 缓存;在 Wyn 的所有服务停止后备份数据库数据或清理临时文件等等。

接下来为您介绍具体的操作方法

解决方法

执行阶段描述了系统生命周期中的某个阶段,一旦系统进入指定阶段,自定义动作就会被执行。

根据目前产品的设计,我们定义了四个阶段来执行自定义操作,它们分别是:BeforeStartingServicesAfterServicesStartedBeforeStoppingServicesAfterServicesStopped

  1. BeforeStartingServices ”阶段表示Wyn Monitor 服务已准备好启动所有服务。

  2. AfterServicesStarted ”阶段表示所有服务都已启动。

  3. BeforeStoppingServices ”阶段表示 Wyn Monitor 将在 Wyn Monitor 服务退出之前停止所有服务。

  4. AfterServicesStopped ”阶段表示Wyn Monitor 服务在退出前已经终止了所有服务。

各阶段流程图如下图所示:

e37f38cb-87e3-4d50-b780-69633841ac9e.png

具体操作

具体操作方式是将自定义操作添加到配置文件Wyn.conf (存在于目录wyn_installation_path/Monitor/conf/中),从而传递给 Wyn Monitor服务,Wyn Monitor 服务负责执行这些自定义操作。

包含自定义操作的配置文件示例如下所示:

<?xml version="1.0" encoding="utf-8"?>
<SystemConfig xmlns:sys="https://extendedxmlserializer.github.io/system" xmlns="clr-namespace:ConfigMigration.Configuration.V60;assembly=ConfigMigration">
  <Version>6.0</Version>
  <GlobalSettings>...</GlobalSettings>
  <Services>...</Services>
  <CustomActions>
    <CustomAction>
      <Name>testing-action</Name>
      <Description>An simple custom action for testing.</Description>
      <ExecutionStage>BeforeStartingServices/AfterServicesStarted/BeforeStoppingServices/AfterServicesStopped</ExecutionStage>
      <Process>dotnet</Process>
      <WorkingDirectory>/var/tmp/testing-action</WorkingDirectory>
      <Arguments>/opt/testing-action/testing-action.dll param1 param2 &quot;param 3&quot;</Arguments>
    </CustomAction>
  </CustomActions>
</SystemConfig>

是以<CustomActions>...</CustomActions> 为标记,其中可包含多个<CustomAction>...</CustomAction>。

示例

以下为两个简单的示例,每个配置文件包含 4 个自定义操作,用于在不同阶段将一些调试日志写入日志文件。请参考。

Wyn-windows.conf

Wyn-linux.conf