Current section

86 Versions

Jump to

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,