Property-based Locking in Collaborative Modeling (MODELS2017 Conference)
Large-scale model-driven engineering projects are carried out collaboratively. Enabling a high degree of concurrency is required to make the traditionally rigid development processes more agile. The increasing number of collaborators increases the probability of introducing conflicts which need to be resolved manually by the collaborators. In case of highly interdependent models, avoiding conflicts by the use of locks can save valuable time. However, traditional locking techniques such as fragment-based and object-based strategies may impose unnecessary restrictions on editing, which can decrease the efficiency of collaboration.
We realized a property-based locking approach that generalizes traditional locking techniques, and further allows more fine-grained locks in order to restrict modifications only when necessary. A lock is considered to be violated if a match appears or disappears for its associated graph pattern (formula), which captures the property of the model that the upcoming edit transaction can be freely executed.
The implementation folder contains the realization of property-based locking strategy and the evaluation folder includes infrastructure to generate models and evaluate locks defined in fragment-based, object-based and property-based locking strategies.
-
Requirements
- Xtext 2.10 (updatesite)
- Xtend 2.10 (updatesite)
- Viatra 2.11 (updatesite)
- Viatra Obfuscator (updatesite)
-
Build Access Control Language for Rules - org.mondo.collaboration.security.macl.xtext.rule
- Add
src-genfolder to fix build path error. - Run
GenerateMACLRule.mwe2as "MWE2 Workflow"
- Add
-
Build Access Control Language - org.mondo.collaboration.security.macl.xtext
- Add
src-genfolder to fix build path error. - Run
GenerateMondoAccessControlLanguage.mwe2as "MWE2 Workflow"
- Add
-
Build Property-based Locking Language - org.mondo.collaboration.security.mpbl.xtext
- Add
src-genfolder to fix build path error. - Run
GenerateMondoPropertyBasedLocking.mwe2as "MWE2 Workflow"
- Add
-
Build Security Collaboration Lens Implementation - org.mondo.collaboration.security.lens
- Add
src-genfolder to fix build path error. - Build the project to generate
.javafiles from.xtendclasses.
- Add
In the *.meta plugin project, open the *.genmodel file and generate the model code: in the tree-editor, right click on the root object and select the Generate Model.
In the *.query plugin project, open the *.vql file and force to build the associated artifacts.
- In the
*.generatorplugin project, theGenerators.javafile has amainmethod that can be run. - Modify the
generateModels()method to select the output folder.- Modify the
usersarray to set the number of collaborators. - Modify the
fragmentsarray to set the number of fragments. - Modify the
depthsvariable to set the depth of each fragments.
- Modify the
- In the
*.evalplugin project, theEvaluation.javafile has amainmethod that can be run.- Modify the
usersarray to set the number of collaborators. - Modify the
fragmentsarray to set the number of fragments. - Modify the
depthsarray to set the depth of each fragments. - Modify the
repeatvariable to set how many times run each evalution.
- Modify the