Skip to main content

G2 Intergenerational


G2代际变更接入SDK

G2代际的变更有完整的工单生命周期及每个批次前后的切面管控。

因此在SDK中,我们将变更的模型结构定义为三层:工单、批次和动作。上游除了像G1场景接入每个批次的开始和结束或动作节点的开始和结束外,还需要接入变更工单节点的开始和结束接口。

变更工单和批次节点开始

无论是工单或批次还是动作维度的前置管控切面,三者复用同一个接口,如下。

/**
* 提交阶段变更开始通知。
* 变更工单开始通知。 {@link ChangeExecOrderStartNotifyRequest}
* 变更批次节点开始通知。 {@link ChangeExecBatchStartNotifyRequest}
* 变更动作节点开始通知。 {@link ChangeActionStartNotifyRequest}
* @param request
*/
Result<ChangeNotifySubmitResult> submitChangeStartNotify(ChangeStartNotifyRequest request);

其入参结构分别定义如下。

变更工单开始通知:ChangeExecOrderStartNotifyRequest。

public class ChangeExecOrderStartNotifyRequest {

/**
* 应急变更标识,在变更过程中可以在应急情况下设置这个字段为true,则当前的变更走应急模式 需要后续所有的操作都设置。 如果为null,则使用变更单的情景模式。
*/
private Boolean emergency;

/**
* 变更场景标识。
*/
@NotBlank
protected String changeSceneKey;

/**
* 上游变更执行系统的唯一单据号。
*/
@NotBlank
protected String bizExecOrderId;

/**
* 上游变更执行平台名称。
*/
@NotBlank
protected String platform;

/**
* 变更执行人。
*/
@NotNull
private String executor;

/**
* 变更开始时间。如果为null,则使用当前使用。
*/
@NotNull
private Date startTime;

/**
* 变更执行单标题。
*/
@NotBlank
private String changeTitle;

/**
* 变更单地址。推荐填写。
* [optional]
*/
private String changeUrl;

/**
* 变更单创建人。
*/
@NotBlank
private String creator;

/**
* 变更情景码。
*/
@NotBlank
private String changeScenarioCode = ChangeScenarioEnum.DAILY.getCode();

/**
* 变更执行单涉及的环境。
*/
@NotNull
private Set<String> changePhases;

/**
* 变更目标信息。
*/
@NotNull
private ChangeTarget[] changeTargets;

/**
* 变更内容实体信息。
*/
@NotNull
private ChangeContent[] changeContents;

/**
* 变更内容参数。json格式。
*/
@NotBlank
private String changeParamJson;

/**
* [optional] 变更影响的系统。
*/
private Set<String> changeApps;

/**
* [optional] 变更单父工单信息。
*/
private ChangeParentOrderInfo parentOrderInfo;

/**
* [optional] 变更trace。如果不需要单独生成,则保持null,否则由业务侧自己控制trace。
*/
private OpsChngTrace trace;

/**
* 扩展字段,上游变更执行系统可传入自带的影响面数据。
*/
private Map<String, Collection<String>> extensionInfo;
}

变更批次节点开始通知:ChangeExecBatchStartNotifyRequest

public class ChangeExecBatchStartNotifyRequest {

/**
* 当前节点的变更执行人。
*/
@NotNull
private String executor;

/**
* 当前变更开始时间。如果为null,则使用当前使用。
*/
@NotNull
private Date startTime;

/**
* [optional] 变更trace。如果不需要单独生成,则保持null,否则由业务侧自己控制trace。
*/
private OpsChngTrace trace;

/**
* 变更场景标识。
*/
@NotBlank
protected String changeSceneKey;

/**
* 上游变更执行系统的唯一单据号。
*/
@NotBlank
protected String bizExecOrderId;

/**
* 上游变更执行平台名称。
*/
@NotBlank
protected String platform;

/**
* 变更批次序号。每个环境从0开始。
*/
private int batchNo = -1;

/**
* 当前环境的总批次数。
*/
private int totalBatchNumInChangePhase = -1;

/**
* 是否当前变更阶段(环境)最后一个批次。
*/
@NotNull
private Boolean isLastBatchInChangePhaseTag;

/**
* 是否整个变更的最后一批标识。
*/
@NotBlank
private Boolean isLastBatchTag;

/**
* 变更单总批次数。
*/
private int totalBatchNum = -1;

/**
* 变更环境。
*/
@NotBlank
private String changePhase;

/**
* 变更生效载体类型。
*/
@NotBlank
private String effectiveTargetType;

/**
* 变更载体列表。
*/
@NotNull
private Set<String> effectiveTargetLocations;

/**
* 扩展信息。
*/
private Map<String, Object> extInfo;
}