# 配置文件

提示

  • 配置文件支持.xlsx、.csv、.xml、.json格式; 在开发阶段系统查找的数据文件格式顺序是: .xlsx、.csv、.xml、.json, 在发行阶段系统查找的数据文件格式顺序是: .json、.xml、.csv、xlsx。你可以使用你习惯的配置文件, 也可以多种格式的配置文件并存。
  • 建议发行阶段统一采用.json的配置文件, 删除其他格式的配置文件。
  • 在配置文件的公式里或Ligg Shell使用配置文件, 可以不用写后缀(建议), 如果写后缀的话就会精确查找该格式的配置文件。
  • 如果以.xlsx、.csv作为配置文件, 可以表达Entity/Table格式的数据,如果更复杂的格式, 就需要用到.xml、.json格式, 不过到目前为止, 还没有发生这样的需求。
  • 框架下可以容纳多个Application, 如IT运维工具箱(code: OrpTk)、IT开发工具箱(code: DevTk)、企业网盘(code: EntDrv), 各Application的配置放在相应的App-x下。

# Global级别配置文件

# GlobalSetting

path: \Conf\GlobalSetting.*, Entity格式, 必须存在

namespace Ligg.EasyRPADesk
{
    public class GlobalSetting
    {
        public string DefaultCulture { get; set; }
        public string HelpdeskEmail { get; set; }
        public string PhythonExePath { get; set; }
    }
}

示例

字段 DefaultCulture HelpdeskEmail PhythonExePath
示例1 en-US LiggHelpdesk@outlook.com C:\Python38\Python.exe
示例2 zh-CN LiggHelpdesk@outlook.com \Python.exe
示例3 zh-CN

说明
DefaultCulture: 不可为空; 程序默认的起始Culture; 必需遵循标准, 否则程序启动时会报错。在配置文件GlobalSetting.*,
HelpdeskEmail: 可为空; 作用: 程序运行出错,弹出错误提示时,提醒用户给该帐号发邮件; 如空, 则没有发邮件的提示。
PhythonExePath: 可为空; 如空, 以ApplicationSetting为准; 如无, 执行RunPython时会有出错提示; 支持绝对和相对路径, 如果是相对路径, 则父路径为@rootDir\Lib


# Cultrues

path: \Conf\Culture\Cultrues.*, Table格式, 可无; 如不需要支持多语言, 无需此配置文件

字段 Name LanguageCode LanguageName ImageUrl IsDefault
示例1 en-US en English \Images\us.png true
示例2 zh-CN szh 简体中文 \Images\cn.png false
示例3 zh-CN czh 繁体中文 \Images\cn.png false
示例4 zh-CN miao 苗语 \Images\cn.png false
示例5 zh-CN en English \Images\cn.png false
示例6 de-DE de Deutsch \Images\de.png false

说明
Name: 不可为空; 为空, 则启动程序时报错; 必需遵循标准, 否则程序运行切换语言时会报错。
LanguageCode: 不可为空; 为空, 则程序启动时报错; 一个Culture可以设置多种Language。
LanguageName: 不可为空; 为空, 则界面语言切换栏文字显示空白。
ImageUrl: 不可为空; 为空, 则界面语言切换栏图片显示空白; 只支持相对路径, 父路径@rootDir\Conf\Cultures\images\。
IsDefault: 不可为空; 为空, 则程序启动时报错; 该字段为ture, 在显示多语言文本时优先查找该语言文本; 只能有一行为true。
上述示例可以并存, 如果从en-US en却换到zh-CN en, 线程的Culture发生改变, 但UI上文本没有改变

注意

  • 系统UI上输出数值、日期格式按当前Culture显示。
  • 配置文件里输入的文本转数值或时间时,没有考虑Culture, 请按en-US的标准书写。代码如下:
var single1= Convert.ToSingle(inputStr, CultureInfo.InvariantCulture);
var time1 = Convert.ToDateTime(inputStr, CultureInfo.InvariantCulture);

# StyleSheets

path: \Conf\StyleSheets.*, Table格式, 可无; 如无则是缺省的SeaBlue风格
风格配置文件, 此功能和配置示例将在下一个版本推出, 实在是太繁琐, 要花大量时间


# OeStdServiceComponents

path: \Conf\OeStdServiceComponents.*, Table格式, 可无; 如无, 执行OeStdService会报错

namespace Ligg.EasyRPADesk
{
    public class OeStdServiceComponent
    {
        public string Name { get; set; }
        public string Path { get; set; }
        public string Description { get; set; }
    }
}

示例

字段 Name Path Description
示例1 CommConnectors D:\CommConnectors\CommConnectors.dll 所有通讯组件的封装
示例2 MqttConnector D:\CommConnectors\Mqtt\MqttConnector.dll MqttConnector组件
示例3 MqttConnector \CommConnectors\Mqtt\MqttConnector.dll MqttConnector组件

说明
Name: 不可为空。
Path: 不可为空; 支持绝对路径和相对路径, 如果是相对路径, 则父路径为@rootDir\Program\OeStdServiceComponents。
Description: 可为空。

前者是把所有的通讯组件集中封装, 后者是独立封装


# App级别配置文件

# ApplicationSetting

path: \Conf\Apps\App-x\ApplicationSetting.*, Entity格式, 必须存在

namespace Ligg.EasyRPADesk
{
    public class ApplicationSetting
    {
        //可为empty, 如果empty, 从GlobalSetting获取
        public string PhythonExecPath { get; set; }

        //可为empty, 如果empty, 从GlobalSetting获取
        public string HelpdeskEmail { get; set; }

        //不能为null
        //如果为false, 起始Culture以GlobalSetting.DefaultCulture为准
        public bool SupportMultiCultures { get; set; }
        //如果SupportMultiCultures为true,不可为empty, 
        //示例: zh-CN|szh, 与配置文件\Conf\Culture\Cultrues* 保持一致
        public string DefaultLanguage { get; set; }

        //可为empty, 不能为empty, 否则会导致AutoUpgrade功能出错
        public string ApplicationVersion { get; set; }

       //不能为null
        public bool HasCblpComponent { get; set; }
        //支持绝对路径和相对路径
        //如果是相对路径, 父路径是 @rootDir\\Cblps\\App-x   
        public string CblpDllPath { get; set; }

        //可为empty, 如果empty, 获取 @appDataDir 失败
        //支持绝对路径和相对路径
        //如果是相对路径, 父路径是 @rootDir\\Data\\App-x   
        public string ApplicationDataDir { get; set; }
        //可为empty, 如果empty, 获取 @appLibDir 失败
        //支持绝对路径和相对路径
        //如果是相对路径, 父路径是 @rootLibDir\\Lib\\App-x   
        public string ApplicationLibDir { get; set; }
        //可为empty, 如果empty, 缺省是最后一个硬盘的\\tmp\\%appCode%
        //只支持绝对路径
        public string ApplicationTempDir { get; set; }

        //不能为null, 如果为true, 则程序启动时弹出密码验证对话框, 
        //通过验证, 程序继续; 如果启始参数里带有Password, 则是隐式验证
        //启始Form下也有对应配置, 优先级此处为高, 
        //即 ApplicationSetting.VerifyPasswordAtStart=
        //ApplicationSetting.VerifyPasswordAtStart||StartForm.VerifyPasswordAtStart
        public bool VerifyPasswordAtStart { get; set; }
        //Larray 格式, 例如
        //格式选项: md5 or tde(时间动态加密), 例如
        //md5, happy
        //上例表示以happy为key的md5加密
        //tde, %appCode%, 10
        //上例表示以%appCode%为key的时间动态加密, 时间有效期10分钟
        public string PasswordVerificationRule { get; set; }

        //不能为null, 如果为true, 则程序启动时登录验证对话框, 通过验证, 程序继续
        //启始Form下也有对应配置, 优先级此处为高, 
        //即 ApplicationSetting.LogonAtStart=
        //ApplicationSetting.LogonAtStart||StartForm.LogonAtStart
        public bool LogonAtStart { get; set; }
        //登录界面的UI配置路径
        //只支持相对路径
        //对Winform 父路径是 %appZonesDir% 
        //对Console 父路径是 %appScenariosDir%
        public string LogonLocation { get; set; }

        //软件封面的UI配置路径
        //只支持相对路径
        //对Winform 父路径是 %appZonesDir% 
        //对Console 父路径是 %appScenariosDir%
        //是否显示软件封面, 由StartForm.SoftwareCoverAtStart配置决定
        public string SoftwareCoverLocation { get; set; }

        //风格编码, 例如 SeaBlue/ChinaRed
        //可为empty, 如果empty, 则是缺省的SeaBlue风格
        //此功能和配置示例将在下一个版本推出
        public string StyleSheetCode { get; set; }

    }
}

说明


# 多语言文本配置文件

  • path: \Conf\Apps\App-x\AbbrevAnnexes.*, Table格式, 可无; 是关于单词(如缩写)的多语言配置文件
  • path: \Conf\Apps\App-x\ApplicationAnnexes.*, Table格式, 可无; 是关于句子或词组的多语言配置文件
  • path: \Conf\Apps\App-x\PhraseAnnexes.*, Table格式, 可无; 是本应用的描述、备注等属性的多语言配置文件

注意

  • 如果不需要多语言支持, 可以不需要PhraseAnnexes, 但是需要规范一些句子的输出, 也可使用PhraseAnnexes。
  • 虽然不需要多语言支持, 但在应用里需要拼接文本, 可以使用AbbrevAnnexes。
  • 虽然不需要多语言支持, 但在应用里要调用本Application的一些描述、备注等, 可以使用ApplicationAnnexes。
  • 此三种情况可以把LangugageCode设为Empty。

AbbrevAnnexes 示例

字段 MasterName DisplayName Description Remark LangugageCode
示例1 Arch 架构 架构,又名软件架构,是有关软件整体结构与组件的抽象描述。 szh
示例1 Arch 架構 架構,又名軟件架構,是有關軟件整體結構與組件的抽象描述。 czh
示例1 Arch Architecture also known as software architecture, is an abstract description of the overall structure and components of software. en

PhraseAnnexes 示例

字段 MasterName DisplayName Description Remark LangugageCode
示例1 This function is under developing... 本功能正在开发当中... szh
示例1 This function is under developing... 本功能正在開發當中… czh
示例1 This function is under developing... Diese Funktion entwickelt sich... de
示例2 Connecting server failed... 服務器連接失敗… szh
示例2 Connecting server failed... 架構 czh
示例2 Connecting server failed... Verbindung des Servers fehlgeschlagen... de

ApplicationAnnexes 示例

字段 DisplayName Description Remark Remark1 Remark2 LangugageCode
示例1 IT运维工具箱 IT服务管理和运维自动化系统 运维中心 ITSMAOA 打造高效、精准、可测量的IT服务和运维管理 szh
示例1 IT Operation Tookit IT Service Management And Operation Automation System Operation Center ITSMAOA Build easy, precise, metrizable IT service and operation en

说明

  • ApplicationAnnexes并不需要MasterName字段, 系统会自动加上去。

  • 在配置文件的公式里可以这样调用AbbrevAnnexes/ PhraseAnnexes的当前语言的文本:

    • 缺省是DisplayName, 可以省略
      • =GetAbbrevAnnexText; Arch
      • =GetPhraseAnnexText; This function is under developing...
    • 不省略的写法
      • =GetAbbrevAnnexText; Arch; DispayName
      • =GetAbbrevAnnexText; Arch; Discription
  • 在配置文件的公式里可以这样调用ApplicationAnnexes 的当前语言的文本:

    • 缺省是DisplayName, 可以省略
      • =GetApplicationAnnexText
    • 不省略的写法
      • =GetApplicationAnnexText; DispayName
      • =GetApplicationAnnexText; Remark2

# UI配置文件

  • 每个Application可以有多个Console的应用窗口, 每个应用窗口就是一个Scenario, 比如IT运维工具箱(OrpTk)有2个Scenario: RunShell、RunPython; 他们的UI配置文件就分别放到
    • \Conf\Apps\OrpTk\UI\Console\Scenarios\Basic\RunShell
    • \Conf\Apps\OrpTk\UI\Console\Scenarios\Basic\RunPython
  • 每个Application可以有多个Winform的启动Form, 比如OrpTk有4个 不同类型的Form分别是: 管理员主界面(Function Form)、用户主界面(Function Form)、巡检工具Svi界面(Single View Interface, Svi Form)、备份作业工具Szi界面(Single Zone Interface, SziForm), 他们的UI配置目录就分别放到
    • \Conf\Apps\OrpTk\UI\Functions\Admin
    • \Conf\Apps\OrpTk\UI\Functions\User
    • \Conf\Apps\OrpTk\UI\Views\Insp
    • \Conf\Apps\OrpTk\UI\Zones\Common\BakWorker
  • 注意Function Form的路径是单层的
  • UI配置详见教程相关内容