My Profile
Help
Hot Topics
Top Community Contributors
Displaying items by tag: uml
How to Validate your Enterprise Architect BPMN Models
How to Validate your Enterprise Architect BPMN Models
The BPMN notation is a good way to specify processes, may it be the workflow for a specific task or entire business processes. Such models may grow very large and you can easily lose track of certain details such as model correctness.
Figure 1 shows an example for a BPMN model (using the BPMN 2.0 MDG Technology), a process for resolving problems which are reported via a ticket system.
- Fig 1: BPMN Process example modelled with the Enterprise Architect (example source: OMG).
Do you see the Error?
Maybe you’ve noticed that the final node of the model does not have any incoming control flow edges but instead has an outgoing control flow edge.
Also the Activity ‘Insert issue into product backlog’ is not reachable, because it has no incoming edge. This leads us to the problem that the Enterprise Architect may (only) ensure that every BPMN model is syntactically valid: it prohibits modelling actions which would result in syntactically invalid BPMN models, e.g. a control flow to an element that does not belong to activities, like an Interface.
What the Enterprise Architect does not ensure is semantic correctness.
Formal Validation with OCL
A formal way to validate semantic restrictions on (BPMN) models is to use the Object Constraint Language (OCL) to define constraints the models must fulfill in order to be correct.
In our case we could define the following constraint to ensure that a final node does not have any outgoing control flow edge:
context a:Activity inv:
a.nodes -> forAll(node | not(node.oclIsTypeOf(FlowFinalNode)) or node.outgoing -> isEmpty())
But then an unconnected final node would still be valid and we also do not cover the unreachable activity. With another constraint we can ensure that every node in the model (except for initial nodes) has an incoming edge:
context a:Activity inv:
a.nodes -> forAll(node | node.oclIsTypeOf(InitialNode) or not(node.incoming -> isEmpty()))
Unfortunately, the Enterprise Architect has no feature yet to evaluate any formal constraints like OCL.
To evaluate the constraints on our model we use other tools to load our Enterprise Architect models and run OCL constraints on it.
Semantic Validation of BPMN Models in Eclipse
To show what is possible, we use the YAKINDU EA-Bridge to load our models and evaluate them with the OCL Console.
Once the Enterprise Architect model is loaded with the YAKINDU EA-Bridge, it can be browsed in a simple tree-based editor (as seen in Figure 2), element details are shown in the ‘Properties’ view.
- Fig 2: Our Enterprise Architect model loaded with the YAKINDU EA-Bridge in Eclipse
-
Now we want to select the activity ‘BPMN 2.0 Business Process View’ and open the OCL Console (open the ‘Console’ View in Eclipse and select the ‘OCL Console’ in the drop-down toolbar icon of the view).
-
There we can enter our constraints and observe the evaluation result (Figure 3).
-
Please note that the plain constraint must be entered, the context of our invariants above is the currently selected element in the editor!
- Fig 3: The OCL Console in Eclipse
-
Once we have run our evaluation and got the result that the model violates the constraints, we can fix our BPMN model and run the OCL evaluation on the corrected model (see Figure 4) again.
- Fig 4: Semantically valid Model, because the Final Node has no outgoing control flow but instead has an incoming control flow.
- Also the Activity ‘Insert issue into product backlog’ has an incoming control flow and is therefore reachable.
This time our constraints evaluate to ‘true’:
To conclude, the usage of additional tools like the YAKINDU EA-Bridge and an OCL Interpreter enables further use cases like validation of BPMN Models by a predefined set of OCL constraints.
There are already projects working on such predefined sets of OCL constraints for BPMN models, for example, ‘OPEN-BPMN-OCL’. The next step would then be to implement automatic model validation.
Try it yourself
Do you want to try it out yourself?
First download the YAKINDU EA-Bridge Trial Eclipse Distribution, which is free to download. Unpack and start it, select a workspace location, and go to ‘Help’ -> ‘Install New Software’. The following dialog should appear. Copy ‘https://download.eclipse.org/modeling/mdt/ocl/updates/releases/latest’ into the field ‘Work with’.
You should now be able to select the ‘OCL’, ‘OCL build’, and ‘OCL tests’ items:
Click ‘Next >’ and finish the installation. Once it is finished, restart Eclipse to complete the installation.
The next thing to do is creating a new 'General Project', this can be done via the ‘File’ Menu:
After creating the project, please download the attached zip file, which contains the BPMN example and an XML file (which defines a slightly adapted version of the BPMN 2.0 MDG Technology). Copy these two files into the newly created project. Finally, change the preferences for the YAKINDU EA-Bridges to look for EA profiles in the same folder (in Eclipse: 'Window' -> 'Preferences' -> 'YAKINDU EA-Bridge' -> 'UML' -> 'Profile Locations').
Once this is done you can start experimenting with the example as shown in the screenshot above.
How to Create Project-specific Code Generators for Enterprise Architect Easily
unsplash-logoMr Cup / Fabien Barral
Have you ever wanted to generate code from your Enterprise Architect UML or SysML models? Have you tried to customize Enterprise Architect’s code template framework? Do not give up the dream of project-specific code generators and read how easily they can be implemented.
The Need for a Code Generator
A good software or system architecture is on a higher abstraction level compared to the implementation. It should be a consistent model that documents decisions and neglects unnecessary, often technical, details. Consider, for instance, the class diagram in Figure 1. It shows a domain model that defines the data structure needed for a shop to allow customers to order articles. The properties of each class are modeled in detail, but other unnecessary aspects like operations to access properties are left out.
If the software architecture/design is made upfront before starting with the implementation, a lot of cumbersome and error-prone work can be avoided by code generation. Commercial out-of-the-box code generators often do not change the degree of abstraction. That’s why they often do not match the needs of the project.
The code template framework of Enterprise Architect can be tailored according to the project-specific needs. But this requires some initial training. And often the expected outcome is hard to achieve as described in Eclipse-based Code Generation for Enterprise Architect Models.
A Simple Project-specific Code Generator
I prefer a general-purpose programming language such as Java or Xtend to implement code generators. In particular Xtend is well suited to implement templates because of its template expressions. They allow one to embed executable code inside the text to be generated. It feels like programming PHP, JSP, or JSX. The code in Listing 1 shows a code generation template written in Xtend. It generates Java classes for the classes declared in the class diagram of Figure 1.
The generated Java code shown in Listings 2, 3 and 4 does not look like handwritten, because qualified names are used instead of imports. This will be improved later in Figure 4 by methods collectImports
and printImports
.
If you look carefully at the template in Listing 1, you will realize that it does not know anything about Enterprise Architect. Instead, it handles instances of the UML metamodel which is available in Eclipse thanks to the Eclipse UML 2 project. The missing connection between Enterprise Architect and UML is the YAKINDU EA-Bridge. It is an API that offers UML-compliant read and write access to Enterprise Architect UML and SysML models. The database behind an Enterprise Architect project is automatically transformed into instances of the UML metamodel. This has three major advantages for you as a developer:
- Your code is compatible with other tools that are based on the UML 2 project such as Papyrus.
- Highly performant read and write access to Enterprise Architect models without the need to reverse engineer the database schema of Enterprise Architect.
- You do not have to learn anything about the API of the YAKINDU EA-Bridge. It is completely hidden for you as a developer, because the YAKINDU EA-Bridge integrates itself into the ecosystem of the Eclipse Modeling Framework (EMF).
The YAKINDU EA-Bridge comes with an optional Eclipse IDE integration which allows one to implement project-specific code generators. Those code generators are often prototypically developed and are executed only within a certain context. Thus, it is crucial that the development effort is less compared to manual coding. To implement a project-specific code generator, all you have to do is to place the EAP file in an Eclipse project and to annotate methods in the code generation template with @EACodegen
. Annotated methods should accept the UML element for which code should be generated as the only parameter and return the generated text. If your Enterprise Architect model is hosted by a remote database such as Microsoft SQL Server, you can use a shortcut file instead of an EAP file.
When the project is built, e.g. automatically or manually via the main menu item ‘Project, Clean…‘, the template is launched for all UML classes declared in all EAP files. Of course, only EAP files stored in the template’s project are considered. The generated code is saved in a file specified by the qualified name of the class. The file extension is specified by the argument of the @EACodegen
annotation. The structure of the Eclipse project can be seen in Figure 2.
Please observe that the YAKINDU EA-Bridge is an API. It allows you to process the Enterprise Architect model in any way. Indeed, the original use case were comprehensive code generators such as an Autosar RTE generator based on UML architectures.
Generating More than one Artefact per Model Element
Let’s make the example more exciting by implementing a product line with two different persistence approaches: One that uses JPA to store data in a relational database and one that uses HBase as a big data store.
I suggest implementing a persistence manager which can be used to load and save instances. Only the product based on JPA should allow one to start and complete transactions. Furthermore, I would like to place JPA specific annotations in the Java classes. Figure 3 shows the methods offered by the persistence manager.
The consequence is now, that the implementation of all six classes is slightly different in both products. The Java code in Listings 5, 6, 7 and 8 shows an excerpt of the code to be implemented.
Feasible solutions to realize the product line are:
- To use inheritance. That would require an interface definition with the public API for each class and to implement it for JPA and for HBase. The consequence would be that the rest of the application must be adjusted to operate only on the interfaces and never on the concrete classes.
- To copy, paste, and modify the implementation for both products would avoid the need to modify the rest of the application. Maintaining two variants might sound reasonable. But is this still the case with an increasing amount of variants? You should think carefully about the pros and cons of copy and paste.
- To use a code generator which generates the product specific code. The classes realizing code generation templates could be based on a common implementation and each subclass could adjust the product-specific parts.
I prefer the last solution. The outline in Figure 4 shows the refactored class template of Listing 1. Each introduced method generates a specific member of a Java class. This allows me to override these methods in the product-specific templates. In Listing 9 for instance can be seen, that JPA specific annotations are placed before the class definition.
The method path(Class, IFile)
in the template subclasses annotated with @EACodegenFile
is used to define the target location at which the generated code should be saved. It has two parameters. The first one is the UML element for which code should be generated. The second is the default location where the generated code should be stored. The return value of the annotated method is the adjusted location at which the generated code should be stored.
The screenshot in Figure 5 shows all templates. The arrows point to the files that are generated by each of them. In addition to the production code, also the test code is generated.
Conclusion
Modern general-purpose programming languages such as Xtend are well suited to implement complex code generators. The input could be a UML model, possibly modeled in Enterprise Architect. The YAKINDU EA-Bridge transforms the relational database behind an Enterprise Architect model on the fly, and completely hidden, into instances of the UML metamodel. There is no need to learn the proprietary code generation language provided by Enterprise Architect or to reverse engineer the database schema of Enterprise Architect.
The Eclipse IDE integration of the YAKINDU EA-Bridge allows one to implement project-specific code generators at low costs in a short time. In this way, you can save a lot of cumbersome, error-prone, and mindless implementation work.
If you want to see and run the full example for yourself, try out the YAKINDU EA-Bridge. The presented example is one of the examples shipped with the YAKINDU EA-Bridge.
June Training Week
Sparx Systems is pleased to announce a new Sparx Systems University Week scheduled June 3rd-7th.
During Sparx Systems University week, a range of both free and paid training sessions are hosted at training locations around the world and online. All sessions are supported by Sparx Service providers and qualified trainers in a number of different languages.
This week-long event is a unique opportunity to gain knowledge and improve skills around Enterprise Architect. June's course line-up covers a broad range of topics, and has been developed with both introductory and advanced users in mind.
Provider | Date | Timezone | Course Title | Location | Language |
SparxSystems Central Europe | 4th June | CET | Delivering an Agile Enterprise with Enterprise Architect (FREE) | Online | Deutsch |
SparxSystems Central Europe | 4th June | CET | IEEE 1471-2000 - IEEE Recommended Practice for Architectural Description for Software-Intensive Systems with Enterprise Architect |
Online | English |
SparxSystems Central Europe | 5th June | CET | Cyber Security Modeling for the Automotive Industry with Enterprise Architect | Online | English |
SparxSystems Central Europe | 5th June |
CET | Telcos, TM Forum Frameworx by Transware, and Cyber Security Modeling with Enterprise Architect (FREE) | Online | English |
Sparx Services UK | 3rd June |
GMT | Enterprise Architect Fundamentals |
Livingston, Scotland | English |
Sparx Services UK | 3rd June |
GMT | Enterprise Architect Profiles Workshop |
Livingston, Scotland | English |
Sparx Services UK | 4th June |
GMT | Enterprise Architect and BPMN |
Livingston, Scotland | English |
Sparx Services UK | 4th June |
GMT | Enterprise Architect Excel Scripting Workshop | Livingston, Scotland | English |
Sparx Services UK | 5th June |
GMT | Enterprise Architect and ArchiMate Business |
Livingston, Scotland | English |
Sparx Services UK | 5th June |
GMT | Enterprise Architect Documentation Workshop |
Livingston, Scotland | English |
Sparx Services UK | 6th June |
GMT |
Scottish Gathering of Enterprise Architect Users (EA User Group Meeting) Attend a Sparx Systems University course and gain FREE entry |
Livingston, Scotland | English |
Sparx Systems Japan | 21st June |
JST | Methodology and Process with modeling tool (FREE) |
Minato, Tokyo, Japan. Near Shinbashi Station | Japanese |
Sparx Services North America | 5th June | CDT | Business Process Modeling with Sparx Enterprise Architect |
Online | English |
Sparx Services North America | 6th June | CDT | Sparx Systems Enterprise Architect Fundamentals for Solution Developers |
Online | English |
Sparx Services North America | 7th June | CDT | Sparx Systems Enterprise Architect Fundamentals for Business Analysts |
Online | English |
Sparx Systems India |
IST | UML training using Sparx Systems Enterprise Architect |
Online | English | |
Sparx Systems India | IST | Business Analysis using Sparx Systems Enterprise Architect | Online | English | |
Tidy Diagrams using Neaten and Auto Route
In Enterprise Architect Version 14, Sparx Systems added functionality to simplify the process of creating neat and tidy diagrams. This tutorial highlights the "Neaten" and "Auto Route" functions, which are a handy means of tidying diagrams.
The Neaten function brings elements together based on proximity and optimized alignment. Try it out on your next diagram via Layout > Tools > Diagram Layout > Neaten.
The Auto Route function tidies the connectors on a diagram, automatically neatening up lines and re-routing them to avoid overlap, where feasible. See, Layout > Tools > Diagram Layout > Auto Route.
To learn more about diagram layout tools in Enterprise Architect, take a look at the Building Models in Enterprise Architect Guidebook, which covers more functions like Neaten and Auto Route.
Sparx Systems University Week - March 2-9, 2018
The first Sparx University Week for 2018 will be run during March, with most training sessions being held during the week of March 2-9.
University Weeks are hosted by Sparx Systems Japan, Sparx Systems Central Europe, Sparx Services North America, Sparx Systems India and Sparx Services UK (Hippo Software).
The delivery format for each course varies depending on the subject, audience and location, with a mix of both online and face-to-face seminars and courses.
It is anticipated that Sparx University Week will be run on a global basis every few months, in conjunction with Sparx Systems Sister and Services Partner network.
Bookings are essential, please review the course schedule below and visit the course provider's website for more details and to register your place.
Sparx University Week Schedule:
Facilitator: | Date/Time: | Course Title: | Location: | Language: | Link: |
Sparx System Japan | 2nd March 1:45pm - 5:25pm Tokyo | Enterprise Architect Case Studies Seminar 2018 - Free Session! sign-up will be open on the 15th January |
Tokyo International Forum (1 minute walk from JR Yurakucho Station) | Japanese | Details & Registration |
Sparx Systems India | 5th - 7th March 9:30am - 4:30pm IST | Enterprise Architect Training & Workshop for SDLC using UML | Online Delivery | English | Details & Registration |
Sparx Systems India | 8th - 9th March 9:30am - 4:30pm IST | Enterprise Architect Training & Workshop for BA | Online Delivery | English | Details & Registration |
Sparx Services UK (Hippo Software) | 5th-6th March 2018 (2 days) 10am - 4pm GMT | EA and ArchiMate for Business Architecture | Online Delivery | English | Details & Registration |
Sparx Services UK (Hippo Software) | 7th-8th March 2018 (2 days) 10am - 4pm GMT | EA and ArchiMate for Enterprise Architecture | Online Delivery | English | Details & Registration |
Sparx Services North America | 6th & 7th March 9 am - 5:30 pm CST | Business Process Modelling with BPMN - 2day course | Online Delivery | English | Details & Registration |
Sparx Services North America | 8th March 9 am - 5:30 pm CST | Enterprise Architect Business Process Modelling | Online Delivery | English | Details & Registration |
Sparx Systems Central Europe | 8. März 2018: 09:00-12:00 (MEZ) | Webinar Sparx Pro Cloud | Installieren, Konfigurieren, Modellieren auf der Zeitachse und wiederverwendbare Bausteine und Standards | Online Delivery | Deutsch | Details & Registration |
Sparx Systems Central Europe | 8th March 2018: 1p.m.-4p.m. (MEZ) | Webinar Sparx Pro Cloud | Installation, Configuration, Time-Aware-Modelling and Reusable Asset Services | Online Delivery | English | Details & Registration |
Sparx Systems Central Europe | 15.-16.02.2018 | UML Grundlagen, 2 Tageskurs bei München | München | Deutsch | Details & Registration |
Sparx Systems Central Europe | 08.-09.03.2018 | Modellbasierte Entwicklung, 2 Tageskurs bei München | München | Deutsch | Details & Registration |
Sparx Systems Central Europe | 13.-14.02.2018 | SysML mit EA, 2 Tageskurs in München | München | Deutsch | Details & Registration |
Sparx Systems Central Europe | 07.-08.03.2018 | SysML mit EA, 2 Tageskurs in Wien | in Wien | Deutsch | Details & Registration |
Sparx Systems Central Europe | 805.03.2018 9-12h00 MEZ | Pro Cloud Installation u.v.m. 3 hours | Online Delivery | Deutsch | Details & Registration |
Sparx Systems Central Europe | 10.04.-11.04.2018 | Best Practice Days in Nürnberg | Nürnberg | Deutsch | Details & Registration |
Sparx Systems Central Europe | 5-06.03.2018 | UML Fundamentals Vienna, 2 days course | Vienna | English | Details & Registration |
Sparx Systems Central Europe | 05.03.2018 13-16h00 CEST | Pro Cloud Installation and more | Online Delivery | English | Details & Registration |
Sparx Systems University Week - 23-27 Oct, 2017
The second Sparx University Week will be run during October, with most training sessions being held during the week of October 23-27.
University Weeks are hosted by Sparx Systems Japan, Sparx Systems Central Europe, Sparx Services North America, Sparx Systems India and Sparx Services UK (Hippo Software).
The delivery format for each course varies depending on the subject, audience and location, with a mix of both online and face-to-face seminars and courses.
It is anticipated that Sparx University Week will be run on a global basis every few months, in conjunction with Sparx Systems Sister and Services Partner network.
Bookings are essential, please review the course schedule below and visit the course provider's website for more details and to register your place.
Sparx University Week Schedule:
Facilitator: | Date/Time: | Course Title: | Location: | Language: | Link: |
Sparx Systems Central Europe | Mon 16 Oct: 9:00am - 12:00pm CEST | UML Fundamentals with Enterprise Architect - Free Session! | Online Delivery | English | Details & Registration |
Sparx Systems Central Europe | Thur 19 - Fri 20 October | Model-based Development with Enterprise Architect | Nuremberg, Germany | German | Details & Registration |
Sparx Systems Japan | Fri 20 Oct: 1:30pm - 5:45pm JST |
Enterprise Architect Introductory Seminar - Free Session! |
Yokohama, Japan | Japanese | Details & Registration |
Sparx Services UK (Hippo Software) | Mon 23 - Tue 24 October | Enterprise Architect, BPMN and Use Cases | Online Delivery | English | Details & Registration |
Sparx Systems Central Europe | Mon 23 - Tue 24 October | Enterprise Architect Foundations | Munich, Germany | German | Details & Registration |
Sparx Systems Central Europe | Tue 24 - Wed 25 October | SysML with Enterprise Architect | Munich, Germany | German | Details & Registration |
Sparx Systems Central Europe | Tue 24 - Wed 25 October | Enterprise Architect Foundations | Zurich, Switzerland | German | Details & Registration |
Sparx Systems Central Europe | Tue 24 - Wed 25 October | Enterprise Architect for Developers | Amsterdam, Netherlands | English | Details & Registration |
Sparx Systems Central Europe | Tue 24 - Wed 25 October | Enterprise Architect for Developers | Vienna, Austria | English | Details & Registration |
Sparx Systems North America | Tue 24 - Thur 26 October | BIZBOK® 4 Foundation with Enterprise Architect | Online Delivery | English | Details & Registration |
Sparx Systems India | Tue 24 - Thur 26 October | Enterprise Architect for Business Analysis | Online Delivery | English | Details & Registration |
Sparx Services UK (Hippo Software) | Wed 25 - Thur 26 October | Enterprise Architect and ArchMate | Online Delivery | English | Details & Registration |
Sparx Systems Japan | Fri 27 Oct: 1:30pm - 5:40pm JST | Enterprise Architect Utilization Seminar - Free Session! | Yokohama, Japan | Japanese | Details & Registration |
New Release: LemonTree (c) - Fresh Model Versioning v1.3
Hello fellow Enterprise Architect user!
we are very happy that the new release of EA's diff & merge extension LemonTree (c) by LieberLieber is available.
You can request the new version 1.3: http://lemontree.lieberlieber.com
Benefit of all features of your version control system by checking in EAP files! But do you already know that LemonTree can also diff DBMS such as SQL Server, Oracle, MySQl, etc.?
************* Release notes *************
We regularly provide updates like this to improve LemonTree.
Especially this release 1.3 brings improvements in speed and stability.
In addition, we have implemented the following improvements:
- Dependencies of changes: When the user is manually changing the merge result, heavy dependencies of changes are now considered.
- The order of swim lanes are now correct after merge.
- SVN integration is now more robust: The SVN hooks are not used anymore
- Git Integration: Bug fixed when writing model
- Problems with ports and their types (classifier + redefined port) are solved.
- Better logging
- Additional UI fixes
Sparx Featured in SD Times: DevOps Driven Digital Transformation
In an in-depth and illuminating interview with Sparx Systems Founder and CEO Geoffrey Sparks, Alexandra Weber Morales from SD Times identified several key aspects surrounding the company's continued growth in the DevOps space.
Geoffrey illustrated how Enterprise Architect provides a solid platform for the delivery and support of new applications, services, and technologies, by encouraging and facilitation of increased productivity between development (Dev) and IT operations (Ops). The Sparx CEO also explained the importance of UML as the established standard for software modeling.
"Within those organizations that are undergoing digital transformation
to improve operational efficiencies (many of whom are Sparx Systems
customers), there is a prevalence of UML tools deployed to manage application
delivery, a process which relies implicitly on code quality assurance."
- Geoffrey Sparks, CEO & Founder, Sparx Systems
Read the full article in PDF - available on the Sparx Systems website here
Visit SD Times website here
Read More about Sparx Systems and DevOps here
Enterprise Architect User Group: London 2017
Enterprise Architect User Group
London 2017; 18th - 19th May
The London
2017 meeting of the Enterprise Architect User Group sees a shakeup to the agenda in the form of an additional day being added to the roster. In additional to the traditional presentation day of User Stories, How to's etc the extra day added to the event is taking the form of a training day.
The training day adds to the event a selection of six, three hour training sessions on a variety of subjects from BPMN to TOGAF and Model Curation.
Location
Code Node, 10 South Place, London, EC2M 7BT
Get Directions
Agenda; Thursday 18th May
You can find information on these training sessions over at the EA User Group website.
Agenda; Friday 19th May
You can find a synopsis for each of these presentations over on the EA User Group website.
How to buy your tickets...
Tickets for the event are available directly from the EA User Group website and are priced as follows:
- Full two day event ticket; £550.00 +Vat
- Friday only ticket; £75.00 +Vat
SD Times - How UML makes a DevOps-driven digital transformation possible
In this month's edition of SD Times, reporter Alexandra Weber Morales has interviewed Sparx Systems CEO, Geoffrey Sparks about the prevalence of UML in DevOps culture.
Morales, who originally profiled Sparx Systems over 10 years ago, reconnected again to ask about the Sparx Systems' approach to DevOps, digital transformation and how UML can assist in automating aspects of the delivery pipeline.
'UML is the established standard for software modeling - anyone sketching a simple use case is modeling in UML.'
- Geoffrey Sparks
The article can be read in its entirety at: http://sdtimes.com/uml-makes-devops-driven-digital-transformation-possible
The interview is also published in the March edition of SD Times.