User Tools

Site Tools


bpmn-leaks-when-analysis

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
bpmn-leaks-when-analysis [2019/10/01 13:53]
127.0.0.1 external edit
bpmn-leaks-when-analysis [2020/01/31 10:29]
pullonen
Line 14: Line 14:
  
 The source code of the analysis tool is available at [[https://​github.com/​pleak-tools/​pleak-leaks-when-analysis|pleak-leaks-when-analysis]] repository. The user interface of the analysis tool is accessible through [[https://​github.com/​pleak-tools/​pleak-sql-editor|pleak-sql-editor]]. The source code of the analysis tool is available at [[https://​github.com/​pleak-tools/​pleak-leaks-when-analysis|pleak-leaks-when-analysis]] repository. The user interface of the analysis tool is accessible through [[https://​github.com/​pleak-tools/​pleak-sql-editor|pleak-sql-editor]].
 +
 +===== Syntax =====
 +Computation scripts are only added to tasks. Most tasks are expected to have the respective output data object defined by the scripts. The only difference are the sending tasks that have no script and the task before an exclusive gateway (that task defines the predicate for the gateway). In addition, if PE-BPMN stereotypes are used then some of them result in default scripts - e.g. encryption tasks.
 +
 +The main functions of interest are names filter_filterName where the prefix filter distingusihes these as the filtering functions collected to the analysis output with the predicate data.
 +
 +In general, the lines of code look like:
 +<​output_data_name>​.<​field_in_output_data>​ = function(<​input_data_name>​.<​field_in_input_data>,​ ..., <​input_data_name>​.<​field_in_input_data>​)
 +
 +For filters the function is called filter_<​filterName>​
 +
 +For the predicate tasks (before the starting exclusive gateway) the script is just Predicate_name(<​input_data_name>​.<​field_in_input_data>,​ ..., <​input_data_name>​.<​field_in_input_data>​)
 +
 +In addition to the filters the lists have special syntax where new objects can be appended and taken out later. ​
 +
 +==== Lists  ====
 +
 +Association lists are a GADT "​(keytype * valuetype) assoclist"​ with the following six operations:
 +
 +nil : (keytype * valuetype) assoclist
 +
 +add: keytype -> valuetype -> (keytype * valuetype) assoclist -> (keytype * valuetype) assoclist
 +
 +update : keytype -> valuetype -> (keytype * valuetype) assoclist -> (keytype * valuetype) assoclist
 +
 +find : keytype -> (keytype * valuetype) assoclist -> valuetype
 +
 +endsWith : keytype -> (keytype * valuetype) assoclist -> bool /* note that this probably used in the opposite direction in the model */
 +
 +contains : keytype -> (keytype * valuetype) assoclist -> bool
 +
 +They satisfy the following equalities:
 +
 +endsWith(, nil) = false
 +
 +contains(, nil) = false
 +
 +endsWith(K, add(K',​ , L)) = (K == K')
 +
 +endsWith(K, update(, _, L)) = endsWith(K, L)
 +
 +contains(K, add(K',​ , L)) = (K == K') || contains(K, L)
 +
 +contains(K, update(, , L)) = contains(K, L)
 +
 +find(, nil) = bottom
 +
 +find(K, add(K',​ V, L)) = if K == K' then V else find(K, L)
 +
 +find(K, update(K',​ V, L)) = if contains(K, L) then (if K = K' then V else find(K, L)) else bottom
 +
 +===== Restrictions =====
 +* No cycles in the model
 +* Only one regular start event (other pools must start with message start event). Additional start events may be present in subprocesses.
 +* Task before a starting exclusive gateway has no output and can only contain a predicate script
 +* Sending task also has no output and no script
 +* All other tasks should have some data inputs and at least one output
 +* All data objects on the model must have unique names (even the input and output of a sending sub-process)
 +
bpmn-leaks-when-analysis.txt ยท Last modified: 2021/02/04 14:39 by pullonen