File: hello_world.rst

package info (click to toggle)
python-ewokscore 2.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 880 kB
  • sloc: python: 10,679; makefile: 5
file content (64 lines) | stat: -rw-r--r-- 1,939 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Hello world
===========

A short script that defines a task, creates a workflow and executes it.

.. code:: python

    from ewokscore import Task
    from ewokscore import execute_graph

    # Implement a workflow task
    class SumTask(
        Task, input_names=["a"], optional_input_names=["b"], output_names=["result"]
    ):
        def run(self):
            result = self.inputs.a
            if self.inputs.b:
                result += self.inputs.b
            self.outputs.result = result


    # Define a workflow with default inputs
    graph = {"id": "testworkflow", "schema_version": "1.1"}
    nodes = [
        {
            "id": "task1",
            "task_type": "class",
            "task_identifier": "__main__.SumTask",
            "default_inputs": [{"name": "a", "value": 1}],
        },
        {
            "id": "task2",
            "task_type": "class",
            "task_identifier": "__main__.SumTask",
            "default_inputs": [{"name": "b", "value": 1}],
        },
        {
            "id": "task3",
            "task_type": "class",
            "task_identifier": "__main__.SumTask",
            "default_inputs": [{"name": "b", "value": 1}],
        },
    ]
    links = [
        {
            "source": "task1",
            "target": "task2",
            "data_mapping": [{"source_output": "result", "target_input": "a"}],
        },
        {
            "source": "task2",
            "target": "task3",
            "data_mapping": [{"source_output": "result", "target_input": "a"}],
        },
    ]
    workflow = {"graph": graph, "nodes": nodes, "links": links}

    # Define task inputs
    inputs = [{"id": "task1", "name": "a", "value": 10}]

    # Execute a workflow (use a proper Ewoks task scheduler in production)
    varinfo = {"root_uri": "/tmp/myresults"}  # optionally save all task outputs
    result = execute_graph(workflow, varinfo=varinfo, inputs=inputs)
    print(result)