
## 前言
数据中心升级对脚本语言有默认的执行顺序,但脚本可能存在依赖顺序问题导致升级无法正常执行,这种情况就可以自定义执行顺序规则。

## 解决思路
### 重新升级
可采取两次升级的方式。
1、第一次选择“忽略数据中心升级阶段失败”升级

2、第二次关闭“忽略数据中心升级阶段失败”升级
### 修改默认执行顺序
#### 默认的执行顺序
注意: 下列顺序采用前缀匹配、前缀忽略。
举例:
存在AAA,AAB,ABB
includePrefiexs:A;excludePrefiexs:AB
includePrefiexs:null;excludePrefiexs:AA
这执行脚本会份两次发送苍穹端执行
第一批次:AAA,AAB
第一批次:ABB
```java
includePrefiexs:bos-kddm-core;excludePrefiexs:null
includePrefiexs:bos-core;excludePrefiexs:null
includePrefiexs:bos-open;excludePrefiexs:null
includePrefiexs:bos-base;excludePrefiexs:null
includePrefiexs:bos;excludePrefiexs:bos-kddm-core,bos-core,bos-open,bos-base
includePrefiexs:db-db;excludePrefiexs:null
includePrefiexs:fi-db;excludePrefiexs:null
includePrefiexs:scm-pdb;excludePrefiexs:null
includePrefiexs:hrmp-hbp-dm;excludePrefiexs:null
includePrefiexs:优先项包含“db”关键词;excludePrefiexs:null
includePrefiexs:优先项不包含“db”关键词;excludePrefiexs:null
includePrefiexs:剩余项包含“db”关键词;excludePrefiexs:null
includePrefiexs:null;excludePrefiexs:忽略上述已匹配的项
```
描述:
1、优先项:指代升级参数设置值。

2、优先项包含“db”关键词: 指代优先项中包含“db”关键词的所有dm脚本。
3、优先项不包含“db”关键词: 指代优先项中不包含“db”关键词的所有dm脚本。
4、忽略上述已匹配的项: 指代上述匹配规则已匹配过的项。一般设置在最后一条匹配。
#### 自定义数据中心升级脚本顺序
设置配置项规则
入口: 环境公共配置项 ->
mc.properties -> mc.dm.sort.rule

#### 如何设置
了解了上述的前缀匹配规则,就很容易理解值得设置方式。
```java
// 截取部分内容
[
{
"includePrefixes": "bos-kddm-core"
},
{
"includePrefixes": "bos-core"
},
{
"includePrefixes": "bos-open"
},
{
"includePrefixes": "bos-base"
},
{
"includePrefixes": "bos",
"excludePrefixes": "bos-kddm-core,bos-core,bos-open,bos-base"
}
]
```
上述配置是模拟默认设置的方法。
注意:
程序默认会将剩余未匹配的dm脚本在最后统一发送苍穹端升级。