Packages
mozart
0.7.8
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
86 Versions
Jump to
Current section
86 Versions
Compare versions
3
files changed
+16
additions
-44
deletions
| @@ -1,6 +1,6 @@ | |
| 1 1 | {<<"links">>,[{<<"GitHub">>,<<"https://github.com/CharlesIrvineKC/mozart">>}]}. |
| 2 2 | {<<"name">>,<<"mozart">>}. |
| 3 | - {<<"version">>,<<"0.7.7">>}. |
| 3 | + {<<"version">>,<<"0.7.8">>}. |
| 4 4 | {<<"description">>, |
| 5 5 | <<"Mozart is an Elixir based BPM platform. It provides a powerful\nand highly readable DSL for implementing executable business process models.">>}. |
| 6 6 | {<<"elixir">>,<<"~> 1.16">>}. |
| @@ -68,8 +68,7 @@ defmodule Mozart.BpmProcess do | |
| 68 68 | business process implemented in a Elixir module. It's purpose is to facilitate external tool |
| 69 69 | integration. A single Elixir module might have zero or more such definitions. It's parameters |
| 70 70 | are as follows: |
| 71 | - * **name**: A user level name for the business process. |
| 72 | - * **name**: The name of the top level process defintion. |
| 71 | + * **main_model**: The name of the top level process defintion. |
| 73 72 | * **data**: A comma separated list of input parameters that the busines process should be |
| 74 73 | initialized with. |
| 75 74 | |
| @@ -735,54 +734,27 @@ defmodule Mozart.BpmProcess do | |
| 735 734 | end |
| 736 735 | end |
| 737 736 | |
| 738 | - @doc false |
| 739 | - def merge_event_tasks_to_process(event_task_process_map, processes) do |
| 740 | - process_name_task_list = Map.to_list(event_task_process_map) |
| 741 | - merge_recursive(process_name_task_list, processes) |
| 737 | + def merge_event_tasks(event_task_map, processes) do |
| 738 | + Enum.map(processes, fn p -> |
| 739 | + tasks = Map.get(event_task_map, p.name) |
| 740 | + if tasks, do: Map.put(p, :tasks, p.tasks ++ tasks), else: p |
| 741 | + end) |
| 742 742 | end |
| 743 743 | |
| 744 | - @doc false |
| 745 | - def merge_recursive([], processes), do: processes |
| 746 | - |
| 747 | - def merge_recursive([{process_name, tasks} | rest], processes) do |
| 748 | - merge_recursive( |
| 749 | - rest, |
| 750 | - Enum.map( |
| 751 | - processes, |
| 752 | - fn p -> |
| 753 | - if process_name == p.name do |
| 754 | - tasks = p.tasks ++ tasks |
| 755 | - Map.put(p, :tasks, tasks) |
| 756 | - else |
| 757 | - p |
| 758 | - end |
| 759 | - end |
| 760 | - ) |
| 761 | - ) |
| 762 | - end |
| 763 | - |
| 764 | - @doc false |
| 765 | - def assign_events_to_processes([], processes), do: processes |
| 766 | - |
| 767 | - def assign_events_to_processes([{pname, event} | rest], processes) do |
| 768 | - assign_events_to_processes( |
| 769 | - rest, |
| 770 | - Enum.map(processes, fn p -> |
| 771 | - if pname == p.name do |
| 772 | - events = [event | p.events] |
| 773 | - Map.put(p, :events, events) |
| 774 | - else |
| 775 | - p |
| 776 | - end |
| 744 | + def assign_events(event_map, processes) do |
| 745 | + Enum.map(processes, fn p -> |
| 746 | + events = Enum.reduce(event_map, [], fn {pname, event}, acc -> |
| 747 | + if pname == p.name, do: [event | acc], else: acc |
| 777 748 | end) |
| 778 | - ) |
| 749 | + Map.put(p, :events, events) |
| 750 | + end) |
| 779 751 | end |
| 780 752 | |
| 781 753 | defmacro __before_compile__(_env) do |
| 782 754 | quote do |
| 783 755 | if @event_task_process_map != %{} do |
| 784 | - @processes merge_event_tasks_to_process(@event_task_process_map, @processes) |
| 785 | - @processes assign_events_to_processes(Map.to_list(@events), @processes) |
| 756 | + @processes merge_event_tasks(@event_task_process_map, @processes) |
| 757 | + @processes assign_events(Map.to_list(@events), @processes) |
| 786 758 | end |
| 787 759 | |
| 788 760 | # def get_bpm_application, do: @bpm_applications |
| @@ -4,7 +4,7 @@ defmodule Mozart.MixProject do | |
| 4 4 | def project do |
| 5 5 | [ |
| 6 6 | app: :mozart, |
| 7 | - version: "0.7.7", |
| 7 | + version: "0.7.8", |
| 8 8 | elixir: "~> 1.16", |
| 9 9 | elixirc_paths: ["lib", "test/support"], |
| 10 10 | start_permanent: Mix.env() == :prod, |