Packages
bpe
9.9.6
13.5.22-aleph
11.4.16
11.4.15
11.4.14
11.4.13
9.9.7
9.9.6
8.12.4
8.12.3
8.12.1
8.12.0
retired
8.2.1
8.2.0
8.1.0
7.11.0
7.10.4
7.10.3
7.10.2
7.10.1
7.9.1
7.9.0
7.8.2
7.8.1
7.8.0
7.6.4
7.6.3
7.6.2
7.6.1
7.6.0
7.5.15
7.5.14
7.5.13
7.5.12
7.5.11
7.5.10
7.5.9
7.5.8
7.5.7
7.5.6
7.5.5
7.5.3
7.5.2
7.5.1
7.5.0
7.4.11
7.4.10
7.4.9
7.4.8
7.4.7
7.4.6
7.4.5
7.4.4
7.4.3
7.4.2
7.4.1
7.4.0
7.3.0
7.2.8
7.2.7
7.2.6
7.1.6
7.1.5
7.1.4
7.1.3
7.1.2
6.12.7
6.12.6
6.12.5
6.12.3
6.12.2
6.12.1
6.12.0
6.11.0
6.10.0
6.5.3
6.5.2
6.5.1
6.5.0
6.4.0
6.3.0
5.12.0
5.11.4
5.11.3
5.11.2
5.11.1
5.11.0
5.8.7
5.8.6
5.8.5
5.8.4
5.8.3
5.8.2
5.8.1
5.8.0
5.7.0
5.6.0
5.5.2
5.5.1
5.4.0
5.2.0
5.1.3
5.1.2
5.1.1
4.12.4
4.12.3
4.12.2
4.12.1
4.12.0
4.11.8
4.11.7
4.11.6
4.11.5
4.11.4
4.11.3
4.11.2
4.11.1
4.11.0
4.10.24
4.10.23
4.10.22
4.10.21
4.10.20
4.10.19
4.10.18
4.10.17
4.10.16
4.10.15
4.10.14
4.10.13
4.10.12
4.10.11
4.10.10
4.10.9
4.10.8
4.10.7
4.10.6
4.10.5
4.10.4
4.10.3
4.10.2
4.10.1
4.10.0
4.9.18
4.9.17
4.9.16
4.9.15
4.9.14
4.9.13
4.9.12
4.9.11
4.9.10
4.9.9
4.9.8
4.9.7
4.9.6
4.9.5
4.9.4
4.9.3
4.9.2
4.9.1
4.9.0
4.8.1
4.8.0
4.7.5
4.7.3
4.7.2
4.7.1
4.7.0
4.6.0
2.4.0
0.7.16
ERP/1: RTP GST WebRTC ICE SDP H.264 H.265 MP4 MPEG-2 HLS HEVC
Current section
Files
Jump to
Current section
Files
src/bpe_task.erl
-module(bpe_task).
-author('Maxim Sokhatsky').
-export([find_flow/1,
find_flow/2,
move_doclink/2,
targets/2,
denied_flow/2,
already_finished/1,
task_action/4,
handle_task/4]).
-include("bpe.hrl").
find_flow(noflow) -> [];
find_flow([H | _] = _List) when is_list(H) -> H;
find_flow([H | _] = List) when is_integer(H) -> List.
find_flow([], List) -> find_flow(List);
find_flow(Stage, List) ->
case lists:member(Stage, List) of
true -> Stage;
_ -> find_flow(List)
end.
move_doclink({_Source, _Target}, _Proc) -> [].
targets(Name, Proc) ->
lists:flatten([Target
|| #sequenceFlow{source = Source, target = Target}
<- Proc#process.flows,
Source == Name]).
denied_flow(Curr, Proc) ->
{reply, {denied_flow, Curr}, Proc}.
already_finished(Proc) -> {stop, {normal, []}, Proc}.
task_action(Module, Source, Target, Proc) ->
{M, F, A} = proplists:get_value(flow_callback,
Proc#process.etc,
{bpe_task, move_doclink, [{Source, Target}, Proc]}),
case Module:action({request, Source, Target}, Proc) of
#result{continue=C} = X when C =/= [] ->
X#result{opt={continue, C}};
#result{type=reply, reply=[]} = X ->
apply(M, F, A),
X#result{reply={complete, Target}};
#result{type=reply} = X ->
apply(M, F, A),
X;
X -> X
end.
handle_task(#beginEvent{}, CurrentTask, Target, Proc) ->
task_action(Proc#process.module,
CurrentTask,
Target,
Proc);
handle_task(#userTask{}, CurrentTask, Target,
Proc = #process{module = Module}) ->
task_action(Module, CurrentTask, Target, Proc);
handle_task(#receiveTask{reader = _Reader}, CurrentTask,
Target, #process{module = Module} = Proc) ->
task_action(Module, CurrentTask, Target, Proc);
handle_task(#sendTask{writer = _Writer}, CurrentTask,
Target, #process{module = Module} = Proc) ->
task_action(Module, CurrentTask, Target, Proc);
handle_task(#serviceTask{}, CurrentTask, Target,
#process{module = Module} = Proc) ->
task_action(Module, CurrentTask, Target, Proc);
handle_task(#gateway{type = parallel}, Src, Dst,
#process{module = Module} = Proc) ->
task_action(Module, Src, Dst, Proc);
handle_task(#endEvent{}, CurrentTask, Target,
#process{module = Module} = Proc) ->
task_action(Module, CurrentTask, Target, Proc),
{stop, {normal, Target}, Proc};
handle_task(_, _, Target, Proc) ->
{reply, {unknown_task, Target}, Proc}.