summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-09-27 20:12:40 +0000
committerGerrit Code Review <review@openstack.org>2014-09-27 20:12:40 +0000
commit4e6f39c863a36bdab1335710d65434e47ee73ffa (patch)
treef7f27d39ef79ad6a17a54dca5fab5d61e92c2fb6
parent7a2c40292207fdafc61834fb10d0ef50f79b5b6c (diff)
parent452652431a32ef4bc6dbb549efe858b0c3e71466 (diff)
downloadtaskflow-4e6f39c863a36bdab1335710d65434e47ee73ffa.tar.gz
Merge "Example which shows how to move values from one task to another"
-rw-r--r--doc/source/examples.rst12
-rw-r--r--taskflow/examples/simple_linear_pass.out.txt9
-rw-r--r--taskflow/examples/simple_linear_pass.py68
3 files changed, 89 insertions, 0 deletions
diff --git a/doc/source/examples.rst b/doc/source/examples.rst
index 9199bc1..1085019 100644
--- a/doc/source/examples.rst
+++ b/doc/source/examples.rst
@@ -1,3 +1,15 @@
+Passing values from and to tasks
+================================
+
+.. note::
+
+ Full source located at :example:`simple_linear_pass`.
+
+.. literalinclude:: ../../taskflow/examples/simple_linear_pass.py
+ :language: python
+ :linenos:
+ :lines: 16-
+
Making phone calls
==================
diff --git a/taskflow/examples/simple_linear_pass.out.txt b/taskflow/examples/simple_linear_pass.out.txt
new file mode 100644
index 0000000..1e58a63
--- /dev/null
+++ b/taskflow/examples/simple_linear_pass.out.txt
@@ -0,0 +1,9 @@
+Constructing...
+Loading...
+Compiling...
+Preparing...
+Running...
+Executing 'a'
+Executing 'b'
+Got input 'a'
+Done...
diff --git a/taskflow/examples/simple_linear_pass.py b/taskflow/examples/simple_linear_pass.py
new file mode 100644
index 0000000..bda2521
--- /dev/null
+++ b/taskflow/examples/simple_linear_pass.py
@@ -0,0 +1,68 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2014 Yahoo! Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import logging
+import os
+import sys
+
+logging.basicConfig(level=logging.ERROR)
+
+self_dir = os.path.abspath(os.path.dirname(__file__))
+top_dir = os.path.abspath(os.path.join(os.path.dirname(__file__),
+ os.pardir,
+ os.pardir))
+sys.path.insert(0, top_dir)
+sys.path.insert(0, self_dir)
+
+from taskflow import engines
+from taskflow.patterns import linear_flow
+from taskflow import task
+
+# INTRO: This examples shows how a task (in a linear/serial workflow) can
+# produce an output that can be then consumed/used by a downstream task.
+
+
+class TaskA(task.Task):
+ default_provides = ['a']
+
+ def execute(self):
+ print("Executing '%s'" % (self.name))
+ return 'a'
+
+
+class TaskB(task.Task):
+ def execute(self, a):
+ print("Executing '%s'" % (self.name))
+ print("Got input '%s'" % (a))
+
+
+print("Constructing...")
+wf = linear_flow.Flow("pass-from-to")
+wf.add(TaskA('a'), TaskB('b'))
+
+print("Loading...")
+e = engines.load(wf)
+
+print("Compiling...")
+e.compile()
+
+print("Preparing...")
+e.prepare()
+
+print("Running...")
+e.run()
+
+print("Done...")