需求:在一個應用的開發過程中,將應用一步步推至不同的節點,最終推至上線節點
功能:將迭代階段推進到下一階段,根據下一階段不同,做不同處理
解析:進入下一階段 /rleaseProcess/turnNext.json
下一狀態是:
dev:
1),調用node接口,觸發打包。node回調更新應用地址
2),調用我們stable 同步服務配置,同步頁面配置接口。
3),同步完成後,更新迭代stage
sit:
1),同步迭代信息
2),更新迭代stage
pre:
1),觸發審批流,更新審批流表
2),審批完成後,回調時更新迭代stage
online:
加事務:
1),將當前Online更新爲Offline
2),將新的更新爲Online,同時更新上次迭代字段,用於回滾時使用
其他:
只更新迭代狀態
代碼:
1、xml中配置流程推進處理器
<!-- 迭代流程推進處理器 -->
<bean id="ReleaseProcessService"
class="com.mybank.bketensdp.biz.share.service.ReleaseProcessServiceImpl">
<property name="turnNextProcessorMap">
<map>
<entry key="DEV" value-ref="devTurnNextProcessor"/>
<entry key="SIT" value-ref="sitTurnNextProcessor"/>
<entry key="PRE" value-ref="preTurnNextProcessor"/>
<entry key="GRAY" value-ref="defaultTurnNextProcessor"/>
<entry key="ONLINE" value-ref="onlineTurnNextProcessor"/>
<entry key="STABLE" value-ref="defaultTurnNextProcessor"/>
</map>
</property>
</bean>
2、接口
public interface ReleaseProcessService {
/**
* 發佈狀態推進
* @param releaseOrder
*/
void turnNext(ReleaseOrder releaseOrder);
}
@Service
public class ReleaseProcessServiceImpl implements ReleaseProcessService {
private Map<String, AbstractTurnNextProcessor> turnNextProcessorMap;
@Override
public void turnNext(ReleaseOrder releaseOrder) {
// 根據參數releaseOrder獲取不同的key
String key = "DEV"
// 根據xml中的key獲取相應處理器, 不存在報錯
AbstractTurnNextProcessor processor = turnNextProcessorMap.get(key);
// 執行處理
processor.doTrunNext(releaseOrder);
}
/**
* Getter method for property <tt>turnNextProcessorMap</tt>.
*
* @return property value of turnNextProcessorMap
*/
public Map<String, AbstractTurnNextProcessor> getTurnNextProcessorMap() {
return turnNextProcessorMap;
}
/**
* Setter method for property <tt>turnNextProcessorMap</tt>.
*
* @param turnNextProcessorMap value to be assigned to property turnNextProcessorMap
*/
public void setTurnNextProcessorMap(
Map<String, AbstractTurnNextProcessor> turnNextProcessorMap) {
this.turnNextProcessorMap = turnNextProcessorMap;
}
}
3、推進器接口
public abstract class AbstractTurnNextProcessor {
public abstract void doTrunNext(ReleaseOrder releaseOrder);
}
DefaultTurnNextProcessor
public class DefaultTurnNextProcessor extends AbstractTurnNextProcessor {
@Override
public void doTrunNext(ReleaseOrder releaseOrder) {
// TODO 更新迭代stage
}
}
DevTurnNextProcessor
public class DevTurnNextProcessor extends AbstractTurnNextProcessor {
@Override
public void doTrunNext(ReleaseOrder releaseOrder) {
// 調用node
//打包
//更新地址
//更新迭代stage
}
}
OnlineTurnNextProcessor
public class OnlineTurnNextProcessor extends AbstractTurnNextProcessor {
@Override
public void doTrunNext(ReleaseOrder releaseOrder) {
// TODO
}
}
目錄:
推薦文檔:https://blog.csdn.net/zzti_erlie/article/details/102988486