Maxim Sokhatsky
Live
Process {⨀,⨁,P}step : ⨁ P → Prun : P → ⊥get : ⨀ P → Pstart : ⊤ → PProcess : #process
Documents : #document | {_,_}
Errors : #error
OKs : #history
Timers, Events : #event
Tasks : #task
Module : { action : 𝝨 P → P } IO
DEF
IO is a two execution lists of errors and sucesses
DEF — are events, timers, tasks and module of the process
ENV holds an options {_,_} or #documents used in actions
ENV
Timers
#boundaryEventname *timeout {0,{0,30,0}}Technically each process spawns only one timer which handles ping and also term and step events per step or per process scope.#event.timeout #timer{event=ping}tuneable heartbeat at bpe:config(ping)
erlang timediff
{Day,{Hrs,Min,Sec}} ping is configuring globally; events are triggered only when distance between now and last event is less than pattern threshold in the #event.timeout description.
#boundaryEvent'*' — any stage
'StageName' — applied to stage
#timoutEventtermination event
completion event
'*' — any stage
'StageName' — applied to stage
action {request,'Stage'} P → 1/0,{reply,P}.
Errors
Errors are written to separate #error KVS chain, user may worry about exception or not. If so then user need to depend logic from effects.
#error
kvs:add #error
{ feed_id = { errors, Pid } }
stderr stream
#history
stdout stream
kvs:add #history
{ feed_id = { history, Pid } }Events
spawn λ → bpe:event Pid #messageEvent
{ payload = pb:service dep close }
Pid = P#process.id
By Maxim Sokhatsky