def setup(self): import os locate_dir = os.path.dirname(__file__) os.chdir(locate_dir) os.chdir('test_project') from uliweb.manage import make_simple_application app = make_simple_application(apps_dir='./apps') spec_dir = "test_project/apps/specapp/workflow_specs/" CoreWFManager.reset() storage = WFConfigStorage() config_file = join(dirname(__file__), spec_dir + "TestWorkflow.spec") storage.load_config_file(config_file) CoreWFManager.set_storage(storage)
def after_init_apps(sender): # set workflow engine to load spec from database LOG.info(" * Initialize CoreWFManager with database storage") from redbreast.core.spec import CoreWFManager from redbreast.core.spec import WFDatabaseStorage from uliweb import settings storage = WFDatabaseStorage() CoreWFManager.set_storage(storage) bindable = settings.get_var('REDBREAST/ENABLE_EVENT_BIND', True) if bindable: LOG.info(" * Setup EVENT_BIND for CoreWFManage") from redbreast.core.spec import CoreWFManager, WFManagerBindPlugin plugin = WFManagerBindPlugin() d = settings.get('REDBREAST_BINDS', {}) for bind_name, args in d.items(): plugin.bind(args[0], args[1], args[2]) CoreWFManager.register_plugin(plugin)
from redbreast.core.spec import CoreWFManager from redbreast.core.spec import * from redbreast.core import Workflow, Task from os.path import dirname, join def event_log(event): print " --> spec %s, %s" % (event.task.get_name(), event.type) CoreWFManager.reset() storage = WFConfigStorage() CoreWFManager.set_storage(storage) config_file = join(dirname(__file__), "data/Sandbox2.config") storage.load_config_file(config_file) workflow_spec = CoreWFManager.get_workflow_spec('TestWorkflow') #workflow_spec.on("ready", event_log) workflow_spec.on("executed", event_log) #workflow_spec.on("completed", event_log) print "--------Workflow Spec Dump ----------------------" workflow_spec.dump() workflow = Workflow(workflow_spec) print "---------START-------------------" workflow.start() workflow.run() print "---------RUN-------------------" workflow.task_tree.dump()
from os.path import dirname, join def event_log(event): print " --> spec %s, %s" % (event.task.get_name(), event.type) locate_dir = os.path.dirname(__file__) os.chdir(locate_dir) os.chdir('test_project') from uliweb.manage import make_simple_application app = make_simple_application(apps_dir='./apps') CoreWFManager.reset() storage = WFDatabaseStorage() CoreWFManager.set_storage(storage) workflow_spec = CoreWFManager.get_workflow_spec('TestWorkflow') workflow_spec.on("enter", event_log) workflow_spec.on("ready", event_log) workflow_spec.on("executed", event_log) workflow_spec.on("completed", event_log) print "--------Workflow Spec Dump ----------------------" workflow_spec.dump() workflow = Workflow(workflow_spec) print "---------START-------------------" workflow.start() workflow.run_next() workflow.run_next()