sintef-9012 / bvr Goto Github PK
View Code? Open in Web Editor NEWBase Variability Resolution (BVR) metamodel, engine and editors
Base Variability Resolution (BVR) metamodel, engine and editors
I forbindelse med kurset mitt kom jeg inn på Yeti-modellene igjen og en av mine studenter påpekte at min kompakte hierarkiske løsning ikke var korrekt fordi det var mulig både å ha en svak og en sterk motor (både hp110 ett sted og hp140 et annet). Det hadde han rett i og det var tydelig ved å generere alle mulige løsninger. En eksplisitt contraint (hp 140 implies not hp110) gjør susen. I originalen er bare hp140 mandatory under Parking Assistant.
Men så tenkte jeg følgende: Hva om vi under Parking Assistant lager en xor-gruppe der hp140 er mandatory, og hp110 er optional? Jeg ønsket at det skulle ha den ønskede betydning, nemlig at om man har Parking Assistant, så er hp140 mandatory og man kan faktisk IKKE velge hp110.
Jeg var faktisk ikke helt sikker på om konstruksjonen skulle ha den effekten jeg ønsket, nemlig at xor-gruppa skulle kunne ekskludere hp110.
Men BVR verktøyet gjorde det verre enn det :-( Når jeg genererte alle mulige løsninger kom det fram en løsning der hp110 ble valgt også under Parking Assistant. Dette skulle uansett ikke vært mulig siden xor-gruppa pluss mandatory hp140 burde ha gjort det ulovlig.
Du kan jo ha en mening om dette når du har tid. Dette er ikke noe som er viktig akkurat nå på noen som helst måte.
A variable cannot be removed in the VSpec editor
Greetings!
In my setup, VSpec Editor and Resolution Editor are working fine. However, the Realization Editor throws an error. When I select some elements in the base model, and perform "Create Placement", it throws an error "Failed with message: A selection is not found. Cannot create a placement fragment".
Setup:
Kindly help to resolve the issue.
Thanks,
PS:
Errors: http://pastebin.com/xFj0WCtt
Due to the version restrictions on Papyrus dependencies, it's not possible to use the tool in Neon. Please upgrade to the latest. (Papyrus for Neon has version of 2.0.3 currently.)
Importing the plugins into my workspace, I get this and similar issues:
Description Resource Path Location Type
Bundle 'no.sintef.dvl.realisation.core.interfaces' cannot be resolved MANIFEST.MF /no.sintef.bvr.dvl.execution/META-INF line 15 Plug-in Problem
Please provide this plugin or a detailed documentation of how to generate it (if that's the case).
How should we represent NULL boundaries.
I remember we want to have the in a variability model.
How should we represent them in a variability model, two options are allowed by the specification?
BCL works with names, but not with fully qualified names. Consequently, naming overlap can cause problems.
According to the VARIES document "D4.3 BVR Tool", one can use "implies", "and", "or", "not" and parentheses. However, a dash "-" and a forward slash "/" are also accepted. What is the meaning?
What is effectively supported as BCL language?
A variable cannot be removed in the VSpec editor
Resolve subtree causes Invalid thread access
org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.swt.SWT.error(SWT.java:4533)
at org.eclipse.swt.SWT.error(SWT.java:4448)
at org.eclipse.swt.SWT.error(SWT.java:4419)
at org.eclipse.swt.widgets.Widget.error(Widget.java:482)
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:373)
at org.eclipse.swt.widgets.Widget.getData(Widget.java:539)
at org.eclipse.ui.internal.ide.handlers.PagePropertyTester.test(PagePropertyTester.java:36)
at org.eclipse.core.internal.expressions.Property.test(Property.java:58)
at org.eclipse.core.internal.expressions.TestExpression.evaluate(TestExpression.java:100)
at org.eclipse.core.internal.expressions.CompositeExpression.evaluateAnd(CompositeExpression.java:53)
at org.eclipse.core.internal.expressions.WithExpression.evaluate(WithExpression.java:75)
at org.eclipse.core.internal.expressions.CompositeExpression.evaluateOr(CompositeExpression.java:68)
at org.eclipse.core.internal.expressions.OrExpression.evaluate(OrExpression.java:22)
at org.eclipse.core.internal.expressions.ReferenceExpression.evaluate(ReferenceExpression.java:71)
at org.eclipse.ui.internal.services.EvaluationReference.evaluate(EvaluationReference.java:72)
at org.eclipse.ui.internal.services.EvaluationReference.evaluate(EvaluationReference.java:97)
at org.eclipse.ui.internal.services.EvaluationService.requestEvaluation(EvaluationService.java:294)
at org.eclipse.ui.internal.handlers.DirtyStateTracker.update(DirtyStateTracker.java:45)
at org.eclipse.ui.internal.handlers.DirtyStateTracker.propertyChanged(DirtyStateTracker.java:107)
at org.eclipse.ui.part.WorkbenchPart.firePropertyChange(WorkbenchPart.java:120)
at no.sintef.bvr.ui.editor.common.MVCEditor.update(MVCEditor.java:203)
at no.sintef.bvr.ui.editor.mvc.resolutionV2.MVCResolutionEditorV2.update(MVCResolutionEditorV2.java:59)
at no.sintef.bvr.tool.observer.ResourceSetEditedSubject.notifyObservers(ResourceSetEditedSubject.java:47)
at no.sintef.bvr.ui.editor.common.observer.AbstractResourceSubjectMap.pokeResourceSubjects(AbstractResourceSubjectMap.java:46)
at no.sintef.bvr.ui.editor.common.listener.DomainResourceSetListener.resourceSetChanged(DomainResourceSetListener.java:55)
at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl$1.run(TransactionalEditingDomainImpl.java:781)
at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.runExclusive(TransactionalEditingDomainImpl.java:328)
at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.postcommit(TransactionalEditingDomainImpl.java:771)
at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.deactivate(TransactionalEditingDomainImpl.java:543)
at org.eclipse.emf.transaction.impl.TransactionImpl.close(TransactionImpl.java:712)
at org.eclipse.emf.transaction.impl.TransactionImpl.commit(TransactionImpl.java:474)
at org.eclipse.emf.transaction.impl.TransactionalCommandStackImpl.doExecute(TransactionalCommandStackImpl.java:70)
at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:165)
at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:219)
at no.sintef.bvr.ui.editor.commands.EditorEMFTransactionalCommands.executeBatch(EditorEMFTransactionalCommands.java:467)
at no.sintef.bvr.tool.decorator.SimpleExeCommandBatchDecorator.postExecute(SimpleExeCommandBatchDecorator.java:31)
at no.sintef.bvr.tool.decorator.SimpleExeCommandBatchDecorator.execute(SimpleExeCommandBatchDecorator.java:39)
at no.sintef.bvr.tool.ui.command.event.AddSubTreeEvent.actionPerformed(AddSubTreeEvent.java:32)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Readme.md states
Downloads and Installation
See http://modelbased.net/tools/bvr-tool/
Yet, surfing to that URL results in
Error 503 Backend fetch failed
Backend fetch failed
Varnish cache server
I can do it directly in the XML file but not in the graphical editor itself. I double click on the text field to edit the names but nothing happens. I'm on Eclipse Kepler SR2 for OS X running Java 8.
NOTE: for now we do not remove placement/replacement fragments if a FragmentSusbtitution references them.
Resolution editor:
Validation errors are not clear.
No syntax completion in the constraint editor.
Bugs/Enhancements :
Points with Eclipse integration:
Organization:
Some extra points about GMF:
a mail thread with title: "CVL Operation Zone problem", date: 28.05.2013
We have had shuck inquiry--->
I have worked with Bo on the Autronica case, trying to explore various ways to approach it in Clafer and CVL. We took the current draft of the domain model as a starting point. We have a specific question about CVL that we are struggling with.
If you look at the attached figure, you will find a fragment of the Autronica model on the very top. Operating zones are nesting other zones. This seems to be a very common pattern in modeling.
We are considering how to capture this in CVL. There is pretty much two options to consider:
In the VSpec layer using classifiers to represent zone. We believe that this does not work, because classifiers cannot nest themselves recursively. This way we can only get a flat set of classifier instances (resolutions) representing operation zones (OZ), not nested one under another.
Alternatively, we can use a base model with operation Zones, and try to instantiate copies of operation zones using fragment substitution driven by some set of classifiers. Here the challenge is how to make the results of these fragment substitution to nest in one another.
This is exemplified in the attached PDF file. We use a simple base model on the top with VSpec model underneath. The fragment substitution is meant to be bound to the OZ classifier.
If OZ is resolved n times, we will obtain the resolved model on top of page 2 in the attached PDF as the outcome of materialization.
But how can we use fragment substitution (or any other CVL construct) to create an unfolding that looks more like the model in the bottom of page 2?
Any ideas how to configure nesting of such structures in CVL?
Any harm if we do so? in the mosis cvl a binding is a named element
I'm in the process of extending the plugin to support BPMN 2.0 so I like to know in which class you extend the metamodel of UML or only use Papyrus adapter?
ReplacementBoundaryElement is a VariationPoint, but it is not mentioned on page 122 at least.
NOTE: the actual meta-model is fine.
UnsupportedOperationException is thrown in AddVariableValueAssignmentEvent on attempt to add a variable to a resolution. ReplacementFragmentType is a Variabletype, but not a PrimitveType, thus the exception is thrown.
The problem is here:
PrimitveType vt = null;
for(Variabletype x : view.getCU().getOwnedVariabletype()){
if(x instanceof PrimitveType){
PrimitveType pt = (PrimitveType)x;
if(pt.getType() == type)
vt = pt;
}else{
throw new UnsupportedOperationException();
}
}
NOTE:
i have commented out the exception, it does not break anything... But we need to look at it carefully.
NOTE2:
Should we use this bugtracker?:)
Some recent commits suggest that at least parts of this software are released under EPL license. Is it safe to assume this is valid for the whole project? I suggest to add a LICENSE file on project level.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.