Packages
mozart
0.1.6
1.0.1
1.0.0
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.8
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Mozart is an Elixir based BPM platform. It provides a powerful and highly readable DSL for implementing executable business process models.
Current section
Files
Jump to
Current section
Files
lib/mozart/task/join.ex
defmodule Mozart.Task.Join do
@moduledoc """
Used to join parallel execution paths.
Example:
```
%ProcessModel{
name: :parallel_process_model,
tasks: [
%Parallel{
name: :parallel_task,
multi_next: [:foo, :bar]
},
%Service{
name: :foo,
function: fn data -> Map.merge(data, %{foo: :foo}) end,
next: :join_task
},
%Service{
name: :bar,
function: fn data -> Map.merge(data, %{bar: :bar}) end,
next: :foo_bar
},
%Service{
name: :foo_bar,
function: fn data -> Map.merge(data, %{foo_bar: :foo_bar}) end,
next: :join_task
},
# Here's the Join task. Must receive all inputs before completing.
%Join{
name: :join_task,
inputs: [:foo, :foo_bar],
next: :final_service
},
%Service{
name: :final_service,
function: fn data -> Map.merge(data, %{final: :final}) end
}
],
initial_task: :parallel_task
}
```
"""
defstruct [
:name,
:function,
:next,
:uid,
inputs: [],
type: :join
]
end