
The examples will likely be easier to find if they are colocated next to the rest of the source tree. They can also be turned into test cases in the future this way also. Change-Id: Iedcf5c51778459e5216b8072e71e271e7c7ee0bf
51 lines
1.0 KiB
Python
51 lines
1.0 KiB
Python
import logging
|
|
import os
|
|
import sys
|
|
|
|
logging.basicConfig(level=logging.ERROR)
|
|
|
|
my_dir_path = os.path.dirname(os.path.abspath(__file__))
|
|
sys.path.insert(0, os.path.join(os.path.join(my_dir_path, os.pardir),
|
|
os.pardir))
|
|
|
|
from taskflow import decorators
|
|
from taskflow.patterns import linear_flow as lf
|
|
|
|
|
|
def undo_call(context, result, cause):
|
|
print("Calling %s and apologizing." % result)
|
|
|
|
|
|
@decorators.task(revert_with=undo_call)
|
|
def call_jim(context):
|
|
print("Calling jim.")
|
|
print("Context = %s" % (context))
|
|
return context['jim_number']
|
|
|
|
|
|
@decorators.task(revert_with=undo_call)
|
|
def call_joe(context):
|
|
print("Calling joe.")
|
|
print("Context = %s" % (context))
|
|
return context['joe_number']
|
|
|
|
|
|
def call_suzzie(context):
|
|
raise IOError("Suzzie not home right now.")
|
|
|
|
|
|
flow = lf.Flow("call-them")
|
|
flow.add(call_jim)
|
|
flow.add(call_joe)
|
|
flow.add(call_suzzie)
|
|
|
|
context = {
|
|
"joe_number": 444,
|
|
"jim_number": 555,
|
|
}
|
|
|
|
try:
|
|
flow.run(context)
|
|
except Exception as e:
|
|
print("Flow failed: %s" % (e))
|