码迷,mamicode.com
首页 > 其他好文 > 详细

单一工作流的执行?回滚框架初步想法(基于事件驱动模式)

时间:2018-12-14 21:03:00      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:frame   back   one   ide   bsp   pytho   ==   none   except   

思路来源: 事件驱动框架。

 

Part 1. 定义一个框架 event_flow.py  (需要再改动)

技术分享图片
 1 #! /usr/bin/env python
 2 
 3 
 4 deploy_phase_list = []
 5 
 6 def deploy():
 7     for phase in deploy_phase_list:
 8         phase_obj = phase()
 9         phase_obj.deploy()
10 
11 
12 def rollback():
13     for phase in reversed(deploy_phase_list):
14         phase_obj = phase()
15         phase_obj.rollback()
16 
17 
18 class BasePhase(object):
19     def deploy():
20         raise Exception("deploy() must be overwrite")
21 
22     def rollback():
23         raise Exception("rollback() must be overwrite")
event base frame

// 此处可以考虑?装饰器,当deploy  顺利完成,才把该类append 到rollback list 

 

Part 2. 使用该框架

 

#! /usr/bin/env python

import event_flow

class MyFirstStep(event_flow.BasePhase):
    def deploy():
        print("Do First Step to deploy")

    def rollback():
        print("Rollback First Step")



class MySecondStep(event_flow.BasePhase):
    def deploy():
        print("Do Second Step to deploy")

    def rollback():
        print("Nothing to rollback")
        pass


class MyThirdStep(event_flow.BasePhase):
    def deploy():
        print("Do Third Step to deploy")

    def rollback():
        print("Rollback third Step")


if __name__ == "__main__":
    event_flow.deploy_phase_list.append(MyFirstStep, MySecondStep, MyThirdStep)
    try:
        event_flow.deploy()
    exception Exception as e:
        event_flow.rollback()

  

 

但是该方法给可以完成单一工作流的部署以及回滚。后续的这种单一工作流,可以参考这种模式进行开发。

其中各个步骤的返回等数据交互,需要借助第三方(例如数据库等)

单一工作流的执行?回滚框架初步想法(基于事件驱动模式)

标签:frame   back   one   ide   bsp   pytho   ==   none   except   

原文地址:https://www.cnblogs.com/shuo-yang0459/p/10121472.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!