Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Papyrus/Papyrus User Guide"
(→Using modeling editors) |
m (Pauline.deville.cea.fr moved page Papyrus User Guide to Papyrus/Papyrus User Guide) |
(No difference)
|
Revision as of 11:20, 26 November 2020
Contents
Additional Utilities of Papyrus
Layer Support
if you want to use layer, see Layers Guide
Model Execution
If you want to execute your model as the following picture, see Execute your fUML models with MOKA
Code Generation Support
Existing Code Generation Facilities
Currently, Papyrus supports code generation for the following programming languages:
Adding a New Code Generator
Apart from the aforementioned programming language, it is also possible to develop and integrate other code generators to Papyrus. To learn about how to add a new code generator to Papyrus, refer to the following wikipage.
Reverse Engineering
Java Reverse Engineering
In order to model your java code into UML, see Java reverse engineering
Deploy your applications
If your want to deploy an application, see Papyrus Software Designer
Fragment a Model
If you want to fragment your model by using Control Mode, see Submodel Guide
Embedded Editors
Papyrus provides embedded editors to edit UML Elements. Of course these editors allows to edit the name of the elements, but they allow to edit much more than this.
UML ValueSpecification editor
This editor allows to edit UMLValueSpecification. ValueSpecifications are used to define the default value of a Property or to define the multiplicity of a MultiplicityElement (lower and upper values). Papyrus provides an Xtext Editor for UML ValueSpecification. This editor provides completion (CTRL+SPACE) to help the user to define the value to set crossing easily the model.
You can use this editors in Papyrus table or in papyrus Property View for example.
The developer documentation for this editors is available here.
Usage
The default grammar of the XText parser for the Value Specification is the following:
(visibility)? (name'=')? value
The values accepted for the differents attributes are the following:
Attribute | Required | Values accepted |
---|---|---|
visibility | No |
|
name | No | String representing an ID (i.e. XText grammar: '^'?('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')* )
|
value | Yes |
|
If the text filled is not compatible with the grammar of XText parser, an OpaqueExpression
will be created.
The XText parser for Value Specification is not restrictive with the text filled, i.e. the different features setted on an existing Value Specification will be kept if possible.
For example: If an existing Value Specification is a LiteralBoolean
named 'testBoolean' with the visibility 'public' and the value setted to true
, the text +testBoolean=false
and false
have the same result: the value of LiteralBoolean
existing will pass to false
(the name and the visilibity don't change).
The XText parser reacts differently instead of the type of the Value Specification's container:
Example: Without defined type on Value Specification's container
If the type of Value Specification's container is not defined, the default behaviour will be applied.
Here, some examples:
Text filled | Namely | Created ValueSpecification | |||
---|---|---|---|---|---|
Type | Visibility | Name | Value | ||
+testInstanceValue=InstanceSpec1 | 'InstanceSpec1' is an InstanceSpecification existing in the model
|
InstanceValue
|
public | testInstanceValue | 'instance' attribute of InstanceValue is a reference to the existing InstanceSpecification named 'InstanceSpec1'
|
No InstanceSpecification exist in the model
|
OpaqueExpression
|
public | +testInstanceValue=InstanceSpec1 | ||
+testBoolean=true | LiteralBoolean
|
public | testBoolean | true
| |
#testUnlimitedNatural=5 | LiteralUnlimitedNatural
|
protected | testUnlimitedNatural | 5 | |
~testInteger=-8 | LiteralInteger
|
package | testInteger | -8 | |
-testReal=12.34 | LiteralReal
|
private | testReal | 12.34 | |
~testNull=null | LiteralNull
|
package | testNull | null
| |
-testString="foo" | LiteralString
|
private | testString | foo | |
##testString="foo" | OpaqueExpression
|
public | ##testString="foo" |
Example: With defined type on Value Specification's container
If the type of Value Specification's container is setted, the same text filled will be have different behaviour depending to the type. In fact, the value filled must be consistent to the type, otherwise an OpaqueExpression
will be created.
The different types corresponding to LiteralSpecification
are the following:
LiteralSpecification | Types corresponding |
---|---|
LiteralBoolean
|
|
LiteralUnlimitedNatural
|
|
LiteralInteger
|
|
LiteralReal
|
|
LiteralString
|
|
Here, some examples:
Text filled | Value Specification's container type | Created ValueSpecification | |||
---|---|---|---|---|---|
Type | Visibility | Name | Value | ||
+testBoolean=true | PrimitiveTypes::Boolean | LiteralBoolean
|
public | testBoolean | true
|
PrimitiveTypes::Integer | OpaqueExpression
|
public | +testBoolean=true | ||
-testUnlimitedNatural=8 | PrimitiveTypes::UnlimitedNatural | LiteralUnlimitedNatural
|
private | testUnlimitedNatural | 8 |
PrimitiveTypes::Integer | LiteralInteger
|
private | testUnlimitedNatural | 8 | |
PrimitiveTypes::Real | LiteralReal
|
private | testUnlimitedNatural | 8.0 | |
PrimitiveTypes::Boolean | OpaqueExpression
|
public | -testUnlimitedNatural=8 | ||
#testInteger=-6 | PrimitiveTypes::UnlimitedNatural | OpaqueExpression
|
public | #testInteger=6 | |
PrimitiveTypes::Integer | LiteralInteger
|
protected | testInteger | 6 | |
PrimitiveTypes::Real | LiteralReal
|
protected | testInteger | 6.0 | |
PrimitiveTypes::Boolean | OpaqueExpression
|
public | #testInteger=6 | ||
-testReal=4.5 | PrimitiveTypes::Integer | OpaqueExpression
|
public | -testReal=4.5 | |
PrimitiveTypes::Real | LiteralReal
|
private | testReal | 4.5 |
Textual Editor For Named Element
Since Papyrus 1.1.0 (Eclipse Mars), Papyrus provides a new texutal editor to edit references to UML NamedElement. This editor works only for references which are not in containment. This editor has not been developed using XText. It use a custom string parser and provide a completion (CTRL+SPACE) to help the user to find the named elements to reference in the model.
You can use this editor in Property View or in Papyrus table for example. Developer documentation is available here.
Usage
- This editors allows to find named element typing its name.
- In case of several elements to found, the separator to use is the comma
'
- If the name of the element contains a comma, you should prefix and suffix its name by a quote
'
. - The value will not be set if the element can't be found is the model
Example
If you have 3 Classes in your model, named Class1
, Class2
and Clas,s3
.
typed text | completion proposal | explanation |
---|---|---|
empty string | <Undefined>, ... | we look for nothing, so we provide the <Undefined> value and ... to ask to the user to write more text
|
Clas | <Undefined>,Class1,Class2,Clas,s3 | 3 classes matches the string, <Undefined> is always proposed
|
Class | <Undefined>,Class1,Class2 | 3 classes matches the string, <Undefined>is always proposed |
'Clas | <Undefined>, Clas,s3 | the string starts with a quote and Clas,s3 contains a comma, so we propose Clas,s3 ; <Undefined> is always proposed
|
Clas, | <Undefined>,... | interpreted as a list of value, the first value is Clas , and we have no information for the second one, for the completion it is an empty string
|
Property View
Multiplicity Editor
Description
The multiplicity editor contains two modes of edition:
- The simple mode which allows to edit the lower and the upper values from a unique editor
- The advanced mode which allows to edit the lower and the upper values from two editors of ValueSpecification.
Usage
Simple mode
The simple mode is represented as the following:
This editor must be filled by the following pattern:
Value filled | Lower value | Upper value |
---|---|---|
1 | null (default value is 1)
|
null (default value is 1)
|
x..y | LiteralInteger with value x
|
LiteralUnlimitedNatural with value y
|
x..* | LiteralInteger with value x
|
LiteralUnlimitedNatural with value -1 (interpreted as * )
|
x | LiteralInteger with value x
|
LiteralUnlimitedNatural with value x
|
The values set as lower and upper are always positive (except the *
for the upper which is valued as -1).
This editor is usable only when the lower ValueSpecification is a LiteralInteger
or null
and when the upper ValueSpecification is a LiteralUnlimitedNatural
or null
.
On the other hand, this editor will be displayed like the following:
Advanced mode
Simple ValueSpecification editor
The advanced mode with simple ValueSpecificatiton editors is represented as the following:
The lower and the upper ValueSpecification can be created/edited/deleted by the buttons:
XText ValueSpecification editor
The advanced mode with XText ValueSpecification editors is represented as the following:
This editor use the XText ValueSpecification editors (explain here) with some specificities depending on lower or upper value edition.
The specificity of the lower ValueSpecification edition is when the value filled is an integer, this one will be handled as LiteralInteger
instead of LiteralUnlimitedNatural
or LiteralInteger
(the *
value will create an OpaqueExpression
).
The specificity of the upper ValueSpecification edition is when the value filled is an integer or *
:
- if the integer is positive or -1, a
LiteralUnlimitedNatural
will be created - if the integer is negative, an
OpaqueExpression
will be created instead ofLiteralInteger
Switch modes
This is possible to switch between the two modes by two ways:
- The button in the multiplicity editor:
- The multiplicity editor preferences in the property views preferences:
Regarless of the way used to switch modes, the mode used is saved in the preferences and will be used for each multiplicity in Papyrus.
Tips
Extra Components
Papyrus for Requirements
Papyrus for Requirements helps you to specify and analyze requirements in the context of systems modeling. It aims to cover the Specification, Management, Analysis and Validation-Verification activities of Requirements Engineering. Papyrus for Requirements depends on the components Papyrus for SysML and Papyrus for Metrics.
Please visit the Installation steps of Papyrus for Requirements