Altova UModel 2014 User Manual
Altova UModel 2014 User Manual
All rights reserved. No parts of this work may be reproduced in any form or by any means
- graphic, electronic, or mechanical, including photocopying, recording, taping, or
information storage and retrieval systems - without the written permission of the publisher.
Products that are referred to in this document may be either trademarks and/or registered
trademarks of the respective owners. The publisher and the author make no claim to
these trademarks.
While every precaution has been taken in the preparation of this document, the publisher
and the author assume no responsibility for errors or omissions, or for damages resulting
from the use of information contained in this document or from the use of programs and
source code that may accompany it. In no event shall the publisher and the author be
liable for any loss of profit or any other commercial damage caused or alleged to have
been caused directly or indirectly by this document.
Published: 2013
UML®, OMG™, Object Management Group™, and Unified Modeling Language™ are
either registered trademarks or trademarks of Object Management Group, Inc. in the
United States and/or other countries.
Table of Contents
1 UModel 3
2 Introducing UModel 6
4 UModel tutorial 14
4.1 Starting UModel
................................................................................................................. 16
4.2 Use cases ................................................................................................................. 20
4.3 ................................................................................................................. 28
Class Diagrams
4.3.1 Creating derived ...................................................................................................
classes 34
4.4 ................................................................................................................. 39
Object Diagrams
4.5 Component Diagrams
................................................................................................................. 44
4.6 Deployment Diagrams
................................................................................................................. 49
4.7 .................................................................................................................
Round-trip engineering (model - code - model) 53
4.8 .................................................................................................................
Round-trip engineering (code - model - code) 59
16 Appendices 452
16.1 License Information
................................................................................................................. 453
16.1.1 Electronic Software...................................................................................................
Distribution 454
16.1.2 Software Activation...................................................................................................
and License Metering 455
16.1.3 Intellectual Property
...................................................................................................
Rights 456
Index
1 UModel
UModel® 2014 Basic Edition is an affordable UML modeling application with a rich visual
interface and superior usability features to help level the UML learning curve, and includes
many high-end functions to empower users with the most practical aspects of the UML 2.4
specification. UModel is a 32/64-bit Windows application that runs on Windows Server
2003/2008/2012, Windows XP, Windows Vista, Windows 7, and Windows 8. 64-bit support is
available for the Enterprise and Professional editions.
These capabilities allow developers, including those new to software modeling, to quickly
leverage UML to enhance productivity and maximize their results.
UML®, OMG™, Object Management Group™, and Unified Modeling Language™ are either
registered trademarks or trademarks of Object Management Group, Inc. in the United States
and/or other countries.
Last updated: 10/29/2013
2 Introducing UModel
Altova web site: Introduction to Altova UModel
The UML is a complete modeling language but does not discuss, or prescribe, the methodology
for the development, code generation and round-trip engineering processes. UModel has
therefore been designed to allow complete flexibility during the modeling process:
UModel diagrams can be created in any order, and at any time; there is no need to
follow a prescribed sequence during modeling.
Code, or model merging can be achieved at the project, package, or even class level.
UModel does not require that pseudo-code, or comments in the generated code be
present, in order to accomplish round-trip engineering.
Code generation is customizable: the code-generation in UModel is based on SPL
templates and is, therefore, completely customizable. Customizations are automatically
recognized during code generation.
Code generation and reverse-engineering currently support Java versions 1.4.x, 5.0
and 1.6, C# versions 1.2, 2.0, 3.0, and 4.0 and Visual Basic versions 7.1, 8.0 and 9.0. A
single project can support Java, C#, or VB code simultaneously.
Support for UML templates and generics.
XML Metadata Interchange (XMI version 2.4) for UML 2.0 / 2.1.1 / 2.1.2 / 2.2 / 2.3 / 2.4
When adding properties, or operations UModel provides in-place entry helpers to
choose types, protection levels, and all other manner of properties that are also
available in industrial-strength IDEs such as XMLSpy, Visual Studio or Eclipse.
Syntax-coloring in diagrams makes UML diagrams more attractive and intuitive.
Modeling elements and their properties (font, colors, borders etc.) are completely
customizable in an hierarchical fashion at the project, node/line, element family and
element level.
Customizable actors can be defined in use-case diagrams to depict terminals, or any
other symbols.
Modeling elements can be searched for by name in the Diagram tab, Model Tree pane,
Messages and Documentation windows.
Class, or object associations, dependencies, generalizations etc. can be
found/highlighted in model diagrams through the context menu.
The unlimited levels of Undo/Redo track not only content changes, but also all style
changes made to any model element.
Please note:
This document does not attempt to describe, or explain, the Unified Modeling Language
(UML); it describes how to use the UModel modeling application, to model code and
achieve round-trip engineering results.
The 2013 Release version of UModel includes the following major and minor enhancements:
Support for UML 2.4
Support for SysML 1.2
Spellchecker, with extended spell-checking features
Abiltity to show .NET Properties as associations
Ability to ignore getters/setters when generating Sequence Diagrams for a project
Support for UML exception pins
The Eclipse plugins now run under Eclipse 4.2
A new Umodel edition has been introduced for the 2012 Release, namely the Basic edition.
The Basic edition has all the functionality of the previous Professional edition.
The Professional edition has all the functionality of the previous Enterprise edition, i.e. support
for SQL databases, SysML and BPMN diagrams, diagram layers, Automation support (COM
API), as well as Visual Studio and Eclipse integration.
The Enterprise editon has all the above, plus support for Model Driven Architecture, which
allows transformation of UML elements between different programming languages.
The 2012 Release R2 version of UModel includes the following major and minor
enhancements:
Ability to generate code from a sequence diagram
UModel supports logical files of the IBM iSeries database and shows logical files as
views.
Supportfor IBM DB2 logical files. A logical file in IBM iSeries editions of the DB2
database represents one or more physical files. A logical file allows users to access
data in a sequence or format that can be different from the physical file. Users who
connect to IBM iSeries computers may encounter existing databases constructed with
logical files. These were previously not accessible, but are now supported in Version
2012 Release 2.
The 2012 Release version of UModel includes the following major and minor enhancements:
Snap line positioning during drag-and-drop
The 2011 Release 3 version of UModel includes the following major and minor enhancements:
Ability to show VS .NET (C# or [Link]) properties in their own compartment
Ability to create new directories following the Java namespace hierarchy
Small enhancements in SPL to sorting of collections by name and kind as well as new
string comparison functions
The 2011 Release 2 version of UModel includes the following major and minor enhancements:
Code generation from State Machine diagrams in Java, [Link], or C#
The 2011 version of UModel includes the following major and minor enhancements:
Teamwork support: ability to split up projects into several sections allowing concurrent
project editing
Ability to create a 3-way project merge
State Machine diagrams: automatic creation of operations when creating transitions
Sequence diagrams: automatic creation of operations (incl. parameters), by typed calls
in messages
The 2010 Release 3 version of UModel includes the following major and minor enhancements:
Support for Visual Studio 2010:
Supports new solution and project files, predefined include files supplied for .NET
framework 4.0
Support for C# 4.0
New C# 4.0 features are supported by round-trip engineering, binary import and
sequence diagram generation
Ability to create Protocol State Machines
New autolayout output option: Block
Ability to ignore operation names when generating Sequence diagrams
Ability to define Argument variables for external tools
The 2010 Release 2 version of UModel includes the following major and minor enhancements:
64-bit support
Support for UML 2.3
Ability to automatically split generated sequence diagrams into smaller sub diagrams
HTML Documentation generation includes manually defined hyperlinks between
elements
Creation of separate sequence diagrams for the getter or setter part of a property (C#,
or [Link])
Please note:
The following modifications in code engineering have been made due to the new UML
version 2.3 (please see Projects and code engineering Java / C# / [Link] code
to/from UModel for more information):
The class modifiers “sealed” (C#), “NotInheritable” ([Link]) and “final” (Java) are now
mapped to UML “isFinalSpecification”.
The Java modifier “final” for fields and methods are now mapped to UML “leaf”.
The 2010 version of UModel includes the following major and minor enhancements:
Code engineering:
Ability to resolve aliases when reverse-engineering code
small improvements in sequence diagram generation
User Interface:
Documentation generation:
CSS code can be saved in HTML files, or externally
Generated image files can be saved in a specified subdirectory
File system:
Save Copy As is now supported
The 2009 version of UModel includes the following major and minor enhancements:
The 2008 Release 2 version of UModel includes the following major and minor enhancements:
Support for Visual Basic .NET 9.0 and C# 3.0 as well as Visual Studio 2008, Java 1.6
Merging of projects is now supported
User-defined Stereotype styles and how to define them
Enhanced Autocompletion capabilities
Automatic generation of ComponentRealizations
Importing multiple XML Schemas from a directory
Automatic generation of namespace directories for generated code
Support for ObjectNodes on Activity diagrams
Ability to generate relative links for UML documentation
UML conformant visibility icons in class diagrams
Support for Collection Associations
The 2008 version of UModel includes the following major and minor enhancements:
Visual Basic code generation from models, and reverse engineering of Visual Basic
code.
Abilty to save all project diagrams as images in one go.
Multiline lifeline titles in sequence, communication and timing diagrams.
Support for event subelements in State Machine Diagrams: ReceiveSignalEvent,
SignalEvent, SendSignalEvent, ReceiveOperationEvent, SendOperationEvent and
ChangeEvent.
New 'go to operation' option for call messages on Sequence and Communication
Diagrams.
Signals can now have generalizations and own attributes.
Enhanced tagged value support
Ability to Find & Replace modeling elements.
Sequence diagrams:
Automatic generation of (syntactically correct) replies when adding messages to
sequence diagrams.
Static operation names are underlined in Sequence diagrams.
4 UModel tutorial
This tutorial describes, and follows, the general sequence used when creating a modeling
project in UModel.
The major portion of the tutorial deals with the forward-engineering process, i.e. using UModel
to create UML diagrams and generate code as the precursor to the round-trip engineering
sections that follow. The round-trip engineering sections, describe the process from both code
and model vantage points.
The tutorial describes the following UML diagrams, and how to manipulate the various modeling
elements within them. The following diagrams and follow-on tasks are discussed:
All the files used in this tutorial are initally available in the C:\Documents and Settings\All
Users\Application Data\Altova folder. When any single user starts the application for the first
time, the example files for that user are copied to C:\Documents and
Settings\<username>\My Documents\Altova\UModel2014\UModelExamples\ folder.
Therefore do not move, edit, or delete the example files in the initial ...\All Users\.... directory.
[Link]
is the UModel project file that constitutes the initial state of the tutorial sample. Several
model diagrams as well as classes, objects, and other model elements exist at this
stage. Working through the tutorial adds new packages, model diagrams and many
other elements that will acquaint you with the ease with which you can model
applications using UModel. Please note that the syntax check function reports errors
and warnings on this file, the tutorial shows you how to resolve these issues.
[Link]
is the UModel project file that constitutes final state of the tutorial sample, if you have
worked through it step by step. This project file is the one used when generating code
and synchronizing it with UModel.
The [Link] file supplied in the folder is used for the round-trip engineering
process. Please unzip it in the ...\UModelExamples folder before starting the section.
Additional example files for both Java and C# programming languages are also available in the
same directory, i.e. Bank_Java.ump, Bank_CSharp.ump and Bank_MultiLanguage.ump.
These project files also contain Sequence diagrams which are described later in this
documentation.
A section describing how to start a project from scratch and generate code, is included in the
Projects and code engineering section.
1. Start UModel by double-clicking the UModel icon on your desktop, or use the Start | All
Programs menu to access the UModel program.
UModel is started with a default project "NewProject1" visible in the interface.
Note the major parts of the user interface: the three panes on the left hand side and the
empty diagram pane at right.
Two default packages are visible in the Model Tree tab, "Root" and "Component View".
These two packages cannot be deleted or renamed in a project.
The Model Tree pane supplies you with various views of your modeling project:
The Model Tree tab contains and displays all modeling elements of your UModel
project. Elements can be directly manipulated in this tab using the standard editing keys
as well as drag and drop.
The Diagram Tree tab allows you quick access to the modeling diagrams of you project
wherever they may be in the project structure. Diagrams are grouped according to their
diagram type.
The Favorites tab is a user-definable repository of modeling elements. Any type of
modeling element can be placed in this tab using the "Add to Favorites" command of
the context menu.
The Properties pane supplies you with two views of specific model properties:
The Properties tab displays the properties of the currently selected element in the
Model Tree pane or in the Diagram tab. Element properties can defined or updated in
this tab.
The Styles tab displays attributes of diagrams, or elements that are displayed in the
Diagram view. These style attributes fall into two general groups: Formatting and
display settings.
The Hierarchy tab displays all relations of the currently selected modeling item, in two
different views. The modeling element can be selected in a modeling diagram, the
Model Tree, or in the Favorites tab.
Diagram types:
Activity diagram Package diagram
Class diagram Profile diagram
Communication diagram Sequence diagram
Component diagram State Machine diagram
Composite Structure diagram Timing diagram
Deployment diagram Use Case diagram
Interaction Overview diagram XML Schema diagram
Object diagram Business Process Modeling
Notation
Element types:
An element that is currently visible in the active diagram is displayed with a blue dot at its base.
In this case a class element.
Class Instance/Object
Class instance slot
Class
Property
Operation
Parameter
Relations (/package)
Constraints
Please see Packages for more information on packages and their properties.
A Use Case diagram has now been added to the package in the Model Tree view, and
a diagram tab has been created in the diagram pane. A default name has been
provided automatically.
3. Double click the supplied name, in the Model Tree tab, change it to "Overview Account
Balance", and press Enter to confirm.
Please see Diagrams for more information on diagrams and their properties.
2. Click the Use Case icon in the icon bar and click in the diagram tab to insert the
element.
A UseCase1 element is inserted. Note that the element, and its name, are currently
selected, and that its properties are visible in the Properties tab.
3. Change the title to "get account balance", press Enter to confirm. Double click the title if
it is deselected.
Note that the use case is automatically resized to adjust to the text length.
Model elements have various connection handles and other items used to manipulate
them.
Note: Use CTRL+Enter to create a multi-line use case name.
3. Click the handle, drag the Association line to the right, and drop it on the "get account
balance" use case.
An association has now been created between the actor and the use case. The
association properties are also visible in the Properties tab. The new association has
been added to Model Tree under the Relations item of the Use Case View package.
4. Click the use case and drag it to the right to reposition it.
The association properties are visible on the association object.
5. Click the use case to select it, then click the collapse icon on the left hand edge of the
use case ellipse.
Please note:
A blue dot next to an element icon , in the Model Tree tab, signifies
that the element is visible in the current diagram tab. Resizing the actor adjusts the text
field which can be multi line. A line break can be inserted into the text using
CTRL+Enter.
5. Click the actor and use the association handle to create an association between
Standard user and "get account balance sum".
8. Click the Association icon in the icon bar and drag from the Bank actor to the
"generate monthly revenue report" use case.
This is an alternative method of creating an association.
Please note:
The background color used to make the bitmap transparent has the RGB values
82.82.82.
All use cases are selected, with the lowest being the basis for the following
adjustments.
Please note:
You can also use the CTRL key to select multiple elements.
Please note:
You could of course, double click the Class diagram icon in the Model Tree tab below
the BankView package to achieve the same thing.
Two concrete classes with a composite association between them, are visible in the class
diagram.
1. Click the class icon in the icon bar, then click to the right of the Bank class to
insert it.
2. Change the Class1 name to e.g. "Account", press Enter to confirm, (double click the
name if it becomes deselected).
Note that the Properties tab displays the current class properties.
3. Click the "abstract" check box in the Properties pane to make the class abstract.
4. Click in the "code file name" text box, and enter [Link] to define the Java class.
The class title is now displayed in italic, which is the identifying characteristic of abstract
classes.
2. Enter the Property name "balance", and then add a colon character ":".
A drop-down list containing all valid types is displayed.
3. Enter the "f" character through the keyboard, and press Enter to insert the return value
datatype "float".
Please note that drop-down lists are case sensitive!
4. Continue on the same line by appending "=0" to define the default value.
5. Press the F7 keyboard key to add a second property to the class.
6. Enter Id: and select String from the drop-down list.
8. Press the "b" key to select the boolean datatype, then Enter to insert it.
9. Press Enter to end the definition.
Please note:
Clicking the visibility icon to the left of an operation , or property , opens a
drop-down list enabling you to change the visibility status. Note that these visibilty icons
can be changed to the UML conformant symbols.
Please note:
If you only want to delete the operation from the class in the diagram, but not from the
project, press the CTRL+Del. key. You can also enable a prompt that queries you
when deleting objects, please see "Tools | Editing" for more information.
Finding (deleting) class properties and options from the Model Tree:
Properties and options can also be deleted directly from the Model Tree. To do this safely, it is
important to first find the correct property. Assuming you have inserted "Operation1" in the
Account class (press F8, then Enter to insert):
1. Right click Operation1 in the Account class.
2. Select the option "Select in Model Tree" or press F4.
The Operation1 item is now highlighted under Account in the Model Tree tab.
3. Press the Del key to delete the operation from the class and project!
Note that almost any modeling element can be found in the Model Tree when pressing
F4.
Please note:
It is also possible to navigate from the Properties pane to the Model Tree when viewing
an attributes properties, please see: the Properties in the User Interface section.
1. Click the Composition icon in the title bar, then drag from the Bank class to the
Account class. The class is highlighted when the association can be made.
A new property (Property1:Account) is created in the Bank class, and an composite
association arrow joins the two classes.
2. Double click the new Property1 entry in the Bank class and change it to "accounts",
being sure not to delete the Account type definition (displayed in teal/green).
3. Press the End keyboard key to place the text cursor at the end of the line, and
4. Enter the open square bracket character "[" and select "*" from the dropdown list, to
define the multiplicity, and press Enter to confirm.
dropdown list and press Enter twice to select and confirm the entry.
5. Press F8 and add the operation/constructor SavingsAccount().
6. Use the same method, F8, to add the operation getMinimumBalance:float.
7. Click in the "code file name" text box, in the Properties tab, and enter
[Link] to define the Java code class.
3. Right click the SavingsAccount class in the Model Tree and select Paste.
The operation is copied into the SavingsAccount class, which is automatically expanded
to display the new operation.
The new operation is now also visible in the SavingsAccount class in the Class
Diagram.
Please note:
You can use the Copy/Paste keyboard shortcuts (CTRL C, or V), as well as drag and
drop in the Model Tree to achieve the same effect. You might have to disable the sort
options to drop the operation between specific items.
1. Click the Generalization icon in the icon bar and hold down the CTRL key.
2. Drag from CreditCardAccount (the class in the middle) and drop on the Account class.
3. Drag from the CheckingAccount class and drop the arrowhead of the previously
created generalization.
4. Drag from the SavingsAccount class and drop the arrowhead of the previously created
1. Click the InstanceSpecification icon in the icon bar, then click under the John's
Checking object in the diagram tab.
2. Change the name of the instance to John's Credit, and press Enter.
While the instance is active, all its properties are visible in the Properties tab.
3. Click the classifier combo box and select the entry CreditCardAccount from the
drop-down list.
Note that right clicking an instance specification and selecting Show/Hide Node
To add a new object in the Model Tree view (then insert it into a diagram):
1. Right click the bankview package in the Model Tree tab, and select New element |
InstanceSpecification.
2. Change the default object name to John's Saving, and press Enter to confirm.
The new object is added to the package and sorted accordingly.
4. Drag the John's Saving object/instance from the Model Tree tab, into the Sample
Accounts tab, placing it below John's credit.
1. Click the existing link (association) between the AltovaBank and John's Checking.
2. In the Properties tab, click the classifier combo box and select the entry Account -
Bank.
The link now changes to a composite association, in accordance with the class
definitions.
3. Click the InstanceSpecification icon in the icon bar, and position the cursor over
the John's Credit class.
The cursor now appears as a + sign.
4. Drag from John's Credit object to AltovaBank to create a link between the two.
5. Use the classifier combo box in the Properties tab to change the link type to Account -
Bank.
6. Use the method outlined above to create a link between John's Saving and
AltovaBank.
Please note:
Changes made to the association type in any class diagram, are now automatically
3. Click both collapse icons to end up with the only the class name compartment.
4. Use the same method to insert the abstract class Account.
Please note:
The package containing the inserted class, is displayed in the name compartment in the
form "from bankview".
3. Click the ComponentRealization handle of the Account class (at the base), and drop it
on the BankView component.
2. Click the line type icon Direct line in the Layout toolbar.
The line properties are immediately altered. Lines have small icons along them called
waypoints. Waypoints can be clicked and moved to alter line characteristics. Change
the line properties to suit your needs.
2. Click the BankView GUI component under the Component View | BankView package
in the Model Tree, and drag it into the Overview diagram tab.
The package containing the inserted component is displayed in the name compartment,
"from BankView".
3. Use the same method to insert the BankView component under the same package.
This diagram shows the manifestation of the Bank API client and the BankView
components, to their respective compiled Java .jar files.
1. Click the Node icon in the icon bar, and click right of the Home PC node to insert
it.
2. Rename the node to Bank, and drag on one of its edges to enlarge it.
1. Click the dependency icon , then drag from the Home PC node to the Bank node.
This creates a dependency between the two nodes.
2. Click into the name field of the Properties tab, change it to TCP/IP, and press Enter to
confirm.
The dependency name appears above the dependency line.
Please note:
Having clicked the dependency arrow (or any named elements), you can also enter text
directly through the keyboard, without having to first click into the name field.
2. Click the [Link] artifact and drag it onto the Home PC node.
The node is highlighted when the drop action will be successful.
3. Use the same method to drag the other artifacts onto the Home PC node.
The artifacts are now part of the node and move with it when it is repositioned.
4. Click the Dependency icon in the icon bar, and hold down the CTRL key.
5. Drag from the [Link] artifact to the [Link] artifact; still holding
down the CTRL key.
6. Drag from the [Link] artifact to the [Link] artifact.
Please note:
Dragging an artifact out of a node onto the diagram background, automatically creates
a Deployment dependency.
The BankView realization diagram, depicts how the BankView component is realized by its six
constituent classes. This is the component that is produced when the forward-engineering
section of the tutorial is complete.
Please note:
The Java namespace root has been set on the Design-phase | BankView | com
package in the Model Tree.
Java, C# or VB code can be combined in one project and are automatically handled
during the round-trip engineering process. The Bank_MultiLanguage.ump file in the ...\
UModelExamples folder is an example of a project for Java and C# types of code.
Please note:
UModel Java usually follows the convention of creating code in directories according to
their namespace e.g. ...\code\namespace1\[Link].
If you want to use this directory naming convention for C# and VB .NET, select the
menu option Tools | Options | Code Engineering and select the relevant option in the
"Use namespace for code file path" group.
6. Check the project syntax again using Project | Check project syntax.
No errors are reported this time around. We can now generate program code for this
project. Please see Check Project syntax for more information.
The message pane displays the outcome of the code generation process.
3. Switch to UModel and right click the SavingsAccount class under the BankView
package.
4. Select the option Code Engineering | Merge UModel Class from Program Code.
This opens the Synchronization Settings dialog box with the "Model from Code" tab
being active. No changes are needed for the tutorial; see "Merge UModel project from
code" for more information)
6. Click the Account Hierarchy tab to see the outcome of the merge process.
The new method added to the code, (getInterestRate...) generates a new operation in
the SavingsAccount class of UModel.
The files used in this example are available as the [Link] file under
...\UModelExamples folder of your installation. Please unzip the [Link] file into the
...\UModelExamples folder before you start this section.
This creates the OrgChart directory which will then be used to import the existing code.
To Reverse engineer/import existing code from a directory:
1. Select File | New to create a new project.
2. Select Project | Import source directory.
3. Select the C# (1.2, 2.0, 3.0, or 4.0), Java version (1.4, or 5.0), or VB version (7.1, 8.0,
or 9.0) that the source code conforms to.
4. Click the Browse button and select the OrgChart directory supplied in the
...\UModelExamples folder.
5. Making sure that the "Enable diagram generation" check box is active, select any
specific import settings you need, and click Next.
Note that UModel can generate a single overview diagram and/or a diagram for each
package. The settings show above are the default settings.
6. Click Next to continue.
This dialog box allows you to define the package dependency generation settings.
7. Click Finish to use the default settings.
The data is parsed while being input, and a new package called "OrgChart" is created.
8. Expand the new package and keep expanding the sub packages until you get to the
OrgChart package (com | OrgChart).
10. Click the red box and drag it down to the centre of the window.
Please note:
You could also select the Project | Import source project option and select the
Borland JBuilder [Link] project file to import the project created by XMLSpy.
1. Click the Class icon in the icon bar and click to insert a new class.
2. Add a new Class called CompanyType.
3. Add new operations to the class using the F8 shortcut key:
e.g. CompanyType(), getCompanyType():String, setCompanyType():String.
[Link].
2. Click the new CompanyType class in the Model Tree, drag upwards and drop onto the
OrgChart component below the Component View package. A popup appears when the
mouse pointer is over a component.
Please note:
This method creates a Realization between a class and a component, without having to
use component or deployment diagrams.
3. Expand the Relations item below the Orgchart component, to see the newly created
realization.
The messages window displays the syntax checks being performed and status of the
synchronization process.
When complete, the new [Link] class has been added to the folder
...\OrgChart\com\OrgChart\.
Please note:
All method bodies and changes to the code will either be commented out or deleted,
depending on the setting in the "When deleting code" group, in the Synchronization
settings dialog box.
That's it!
You have learned how to create a modeling project using the forward engineering process, and
also completed a full round-trip code engineering cycle with UModel. The rest of this document
describes how best to achieve modeling results with UModel.
The panes are Model Tree, Properties, and Overview. The working/viewing area at right is the
UModel Diagram tab which currently shows the Class Diagram of the BankView Main package.
Please note:
All panes, as well as diagram tabs, can be searched using the Find combo box in the
Main toolbar, which contains the text "account" in the screenshot below, or by pressing
CTRL+F.
Renaming an element:
1. Double click the element name and edit it.
The Root and Component View packages are the only two elements that cannot be
renamed.
Deleting an element:
1. Click the element you want to delete (use CTRL+click to mark multiple elements).
2. Press the Del. keyboard key.
The modeling element is deleted from the Model Tree. This means that it is also
deleted from the Diagram tab, if present there, as well as from the project. Elements
can be deleted from a diagram without deleting them from the project, using CTRL+Del.
Please see deleting elements.
Diagram types:
Activity diagram Profile diagram
Class diagram Sequence diagram
Communication diagram State Machine diagram
Component diagram SysML diagrams (9 diagram
types)
Composite Structure diagram Timing diagram
Deployment diagram Use Case diagram
Interaction Overview diagram XML Schema diagram
Object diagram Business Process Modeling
Notation
Package diagram
Element types:
An element that is currently visible in the active diagram is displayed with a blue dot at its base.
In this case a class element.
Class Instance/Object
Class instance slot
Class
Property
Operation
Parameter
Relations (/package)
Constraints
To collapse the packages, press the - keyboard key. To collapse all packages click the
Root package and press -.
Note that you can use the standard keyboard keys, or the numeric keypad keys to
achieve this.
Please note:
The unused elements are displayed for the current package and its sub packages.
Generating/merging code:
UModel allows you to generate, or merge program code directly from the Model Tree, please
see: Synchronizing Model and source code for more information.
5.3 Favorites
Favorites tab
Use this tab as a user-defined repository, or library, for all types of named UML elements i.e.
classes, objects, associations etc. but not ProfileApplication or Generalization dependencies.
This allows you to create your personal pick-list of modeling elements for quick access.
The contents of the Favorites tab are automatically saved with each project file. Select the
menu option Tools | Options, File tab and click the "Load and save with project file" check box
to change this setting.
The element appears in the Favorites tab is a view of an existing element, i.e. it is not a
copy or clone!
Please note:
You can add and remove elements added to the Favorites tab, from the Favorites tab,
as well as the Model Tree tab.
5.4 Properties
Properties tab
The Properties tab displays the UML properties of the currently active element.
Clicking any model element in any of the supplied views, or tabs, displays its
properties.
Once visible, model properties can be changed, or completed, by entering data, or
selecting various options in the tab.
Selected properties can also be located in the diagram tabs by selecting Show in Active
Diagram from the context menu.
5.5 Styles
Styles tab
The Styles tab is used to view, or change attributes of diagrams, or elements that are displayed
in the diagram view.
The Styles tab is subdivided into several different categories/sections which can be selected by
clicking the "Styles" combo box. The combo box contents depends on the currently selected
model element.
Clicking an element in a diagram tab automatically selects the Element Style context, while
clicking and element in the Model Tree tab selects the Project Style context.
Style precedence is bottom-up, i.e. changes made at the more specific level override the more
general settings. E.g changes (to an object) made at the Element Style level override the
current Element Family and Project Styles settings. However, selecting a different object and
changing the Element Family Styles setting, updates all other objects except for the one just
changed at the Element Style level.
Please note:
Style changes made to model elements can all be undone!
Element Styles:
Applies to the currently selected element in the currently active diagram. Multiple selections are
possible.
Project Styles:
Project Styles apply to the current UModel Project in its entirety (e.g. you want to change the
default Arial font to Times New Roman for all text in all diagrams of the project).
Diagram Styles:
These styles only becomes available when you click/select a diagram background. Changing
settings here, only affects the single UML diagram for which the settings are defined in the
project.
E.g.
The Enumeration, Package and Profile elements all have default fill color settings defined in the
Element Family Styles settings. To change the fill colors at the project level, clear the value in
the Element Family Styles i.e. select the empty entry in the drop-down list box, select Project
styles from the Styles combo box, and change the fill color there.
5.6 Hierarchy
Hierarchy tab
The hierarchy tab displays all relations of the currently selected modeling item, in two different
views. The modeling element can be selected in a modeling diagram, the Model Tree, or in the
Favorites tab.
Please note:
General Hierarchy tab settings are set using the menu option Tools | Options | View,
in the Hierarchy group in the lower section of the dialog box.
This view shows multiple relations of the currently selected element e.g. SchemaString.
Clicking the various icons in the icon bar, allows you to show all types of relations, or narrow
them down by clicking/activating the various icons. In the screenshot above, all icons are active
and thus all relations are shown in a tree view.
Double clicking one of the element icons, in the tab, displays the relations of that element.
This view shows a single set of relations in an hierarchical overview. Only one of the relation
icons can be active at any one time. The Show Generalizations icon is currently active.
Double clicking one of the element icons in the tab, e.g. SchemaTypeNumber, displays the
relations of that element.
2. Edit the diagram name if necessary, select the style options and click OK.
A new diagram is created.
5.7 Overview
Overview tab
The Overview tab displays an outline view of the currently active diagram. Clicking and dragging
the red rectangle, scrolls the diagram view in the diagram tab.
5.8 Documentation
Documentation tab
Allows you to document any of the UML elements available in the Model Tree tab. Click the
element you want to document and enter the text in the Documentation tab. The standard
editing shortcuts are supported i.e. cut, copy and paste.
Please note:
When importing XML schemas, only the first annotation of a complex- or simpleType is
displayed in the Documentation window.
5.9 Messages
The Messages window displays warnings, hints and error messages when merging code, or
checking the project syntax.
Clicking the error message highlights the corresponding element in the Model Tree and also in
the owning diagram, if that diagram is currently active/open.
Deleting a diagram:
Click the diagram icon in the Model Tree and press Del. key.
Finding (deleting) class properties and options from the Model Tree:
Properties and options can also be deleted directly from the Model Tree. To do this safely, it is
important to first find the correct property. Assuming you have inserted "Operation1" in the
Account class (press F8, then Enter to insert):
1. Right click Operation1 in the Account class.
2. Select the option "Select in Model Tree" or press F4.
The Operation1 item is now highlighted under Account in the Model Tree tab.
3. Press the Del key to delete the operation from the class and project!
Note that almost any modeling element can be found in the Model Tree when pressing
F4.
Please note:
It is also possible to navigate from the Properties pane to the Model Tree when viewing
an attributes properties, please see: the Properties in the User Interface section.
An auto-layout function allows you to define how you would like your diagram to be visually
structured. Right click the diagram background and select either:
Autolayout All | Force directed, or
Autolayout All | Hierarchic
Autolayout All | Block
toggles between displaying the UML diagram heading, i.e. the frame around a
diagram with its name tag in the top left corner.
Please note:
When marking several objects, the action that you apply uses the element that was selected
last as the template you apply. E.g. if you mark three class elements and click the "Make same
Width" icon, then all three will be made as wide as the last class you selected.
This also applies when marking several objects using the marquee, the element last selected by
the marquee becomes the template element whose properties are applied to the other marked
objects.
Filter categories:
Class, Interface, PrimitiveType, DataType, Enumeration, Class Template, Interface Template,
DataType Template.
Please note:
To enable/disable the autocompletion select Tools | Options | Diagram Edting tab,
then click the "Enable automatic entry helper" option. The on-demand availability is not
affected by this setting however.
Pasting a copied class into a different package, also inserts a new class, but keeps the
original class name.
In both cases the new class is also added to the Model Tree as well.
Pasting an Operation in the same class, inserts a new operation of the same name as
the source operation.
A popup menu appears at this point allowing you to select between Paste, and Paste in
Diagram only.
5. Select the option that you would like to perform.
Please note:
Using the mouse and CTRL key allows you to copy, or move properties and operations
directly within a class.
Please note that multiple elements can be selected in the Model Tree using either
SHIFT+click, or CTRL+click.
Drag left (normal drag and drop) inserts elements immediately at the cursor position
(any associations, dependencies etc. that exist between the currently inserted elements
and the new one, are automatically displayed).
Drag right (holding down the right mouse button and releasing it in the diagram tab)
opens a popup menu from which you can select the specific associations,
generalizations you want to display.
Example:
You want to replicate the Account Hierarchy diagram in a new class diagram.
1. Right click the bankview package and select New | Class Diagram.
2. Locate the abstract Account class in the model tree, and use drag right to place it in
the new diagram.
The context menu shown above, is opened.
3. Select the Insert with Generalization Hierarchy (specific) item.
4. Deselect the check boxes for specific items you want to appear in the elements
(Properties and Operations in this case).
5. Click OK.
The Account class and its three subclasses, are all inserted into the diagram tab. The
Generalization arrows are automatically displayed.
Please note:
Holding down the CTRL key before clicking in the diagram tab, allows you to insert
multiple elements of the same type with each individual click in the diagram.
Please note:
Adding new elements directly to the diagram tab, automatically adds the same element
to the Model Tree tab. The element is added to the package containing the UML
diagram in the Model Tree view.
Manual hyperlinks are created between most modeling elements (except for lines) and:
any diagram in the current *.UMP project
any element on a diagram
any element in the Model Tree
external documents, e.g. PDF, Excel or Word documents
web pages
Note:
All manually created hyperlinks are also available in the HTML project documentation
when generating UML documentation.
Opening the Bank Server diagram under the Bank Server package displays the IBankAPI
interface as well as the BankServer class. An enumeration element containing the names of the
EnumerationLiterals is also visible. What we want to do is create a hyperlink from the
Enumeration to the Account Hierarchy class diagram.
This opens the Edit Hyperlinks dialog box in which you manage the hyperlinks.
2. Click the Add button and select Diagram Link to define a link to an existing diagram.
3. Select the hyperlink target that you want to be able to navigate to, e.g. Hierarchy of
Account diagram, and click OK.
Double clicking in the User defined name column allows you to define your own link
name.
Note that you can add multiple, as well as different kinds of links from a single modeling
element e.g. a web link to [Link] using the Add | Web
Link.
Hyperlinks on operations
2. Select the specific modeling element you want to link to and click OK to confirm.
Clicking the link icon opens the designated diagram with the element visible and
selected.
Note: when generating project documentation, the hyperlinks to the model elements in
the Model Tree are adjusted to point to the correct definitions in the generated
documentation.
Please note:
Use the same method to create hyperlinks from Comment elements.
Navigating hyperlinks:
Click the Previous and Next icons, in the main icon bar, to navigate the
source and destination links.
The command line parameter syntax is shown below, and can be displayed in the command
prompt window by entering: umodelbatch /?
Please note:
If the path, or file name contains a space, please use quotes around the path/file
name i.e. "c:\Program Files\...\File name"
project ... project file (*.ump) see also File: New/Load/Save options
/new[=file] ... create/save/save as new project
/set ... set options permanent
/gui ... display UModel user interface
(*.project,*.xml,*.jpx,*.csproj,*.csdproj,*.vbproj,*.vbdproj,*.sln,*.bdspr
oj)
/ibt=list ... import binary types (specify binary[typenames] list)
(';'=separator, '*'=all types, '#' before assembly names)
/ixd=path ... import XML schema directory
/ixs=file ... import XML schema file (*.xsd)
/m2c ... update program code from model (export/forward engineer)
/c2m ... update model from program code (import/reverse engineer)
/ixf=file ... import XMI file
/exf=file ... export to XMI file
/inc=file ... include file
/mrg=file ... merge file
/doc=file ... write documentation to specified file
/lue[=cpri] ... list all elements not used on any diagram (i.e. unused)
/ldg ... list all diagrams
/lcl ... list all classes
/lsp ... list all shared packages
/lip ... list all included packages
Example 1:
Import source code and create new project file:
/new: Specifies that the newly-created project file should be called "[Link]" in
C:\Program Files\Altova\UModel2014\UModelBatchOut\
Example 2:
Imports source code from X:\TestCases\UModel, and saves the resulting project file in
"C:\Program...".
Example 3:
Synchronize code using existing project file (e.g. one of the ones created above).
auto save
UModelBatch [Link] (options)
loads project [Link], executes options, [Link] is saved only if document has
changed (like /ibt)
save
UModelBatch [Link] (options) /new
loads project [Link], executes options, [Link] is always saved (regardless of
options)
save as
UModelBatch [Link] (options) /new=[Link]
loads project [Link], executes options, always saves [Link] as [Link]
(regardless of options)
Batch mode with UModel user interface visible i.e. /gui parrameter used.
new
UModelBatch /gui /new (options)
creates a new project, executes options, nothing saved, gui is left open
save new
UModelBatch /gui /new=[Link] (options)
creates a new project, executes options, [Link] saved, gui is left open
user mode
UModelBatch /gui [Link] (options)
loads project [Link], executes options, nothing saved, gui is left open
save
UModelBatch /gui [Link] (options) /new
loads project [Link], executes options, [Link] is saved, gui is left open
save as
UModelBatch /gui [Link] (options) /new=[Link]
loads project [Link], executes options, [Link] is saved as [Link], gui is left open
If "hard" errors occur on execution the other options, nothing will be saved in all cases!
The Root and Component packages are automatically inserted when a new project is created,
and are visible in the Model Tree tab. A new project with the default name NewProject1 is
created. Note that starting UModel opens a new project automatically.
All project relevant data is stored in the UModel project file, which has an *.ump extension.
Each folder symbol in the Model Tree tab represents a UML package!
You can add any type of model element: UML diagram, package, actor etc., to the project in any
sequence (and in any position) that you want; Note that all model elements can be inserted,
renamed, and deleted in the Model Tree tab itself, you are not even forced to create them as
part of a diagram.
Packages are the containers for all other UML modeling elements, use case diagrams,
classes, instances etc.
Packages can be created, at any position in the Model Tree.
Packages/contents can be moved/copied to other packages in the Model Tree (as well
as into valid model diagrams in the diagram tab).
Packages and their contents can be sorted (in the Model Tree tab) according to
several criteria.
Packages can be placed within other packages.
Packages can be used as the source, or target elements, when merging, or
synchronizing code.
To save a project:
Select the menu option File | Save as... (or File | Save). Note: Using the Tools | Option | File
tab, you can define if you want the *.ump file to be saved in a "pretty-print" format on saving.
To open a project:
Select the menu option File | Open, or select one of the files in the file list.
Please note:
Changes made externally to the project file, or included file(s), are automatically
registered and cause a prompt to appear. You can then choose if you want to reload
the project or not.
To move a project:
UModel projects and generated code can be easily moved to a different directory (or a different
computer) and be resynchronized there.
3. Right click MyPackage and select Code Engineering | Set as Java Namespace Root,
click OK to apply the UModel Java profile to the package.
This adds a Java Profile package to the Model Tree.
A class has to be "realized" before code can be generated. Note that you could also
drag the class and drop it on the component directly in the Model Tree.
Zero errors and one warning are generated. Although the code name was not
previously set, a default name will be generated automatically.
2. Select Project | Merge Project code from UModel Project... to output/generate the
Java code.
Creating a namespace
If you want to generate the class inside a specific namespace:
1. Add a new package below myPackage e.g. altova.
2. Click the package and activate the <<namespace>> check box in the Properties
window.
3. In the Model Tree window, move the MyFirstClass class into the altova package.
When code is generated, the class will now be in the namespace altova.
JBuilder .jpx, Eclipse .project project files, as well as NetBeans ([Link]) are
currently supported.
C# projects / Visual Basic projects:
- MS Visual studio projects, sln, csproj, csdprj..., vbproj, vbp as well as
- Borland .bdsproj project files
3. Select the project file type e.g. .jpx and click Open to confirm. This Jbuilder project file
is available in the [Link] file in the ...\UModelExamples folder.
Note that the option to import the project relative to the UModel project file is active.
4. Make sure that you have activated the Enable diagram generation check box, and
select any other specific import settings you need, and click Next.
5. Activate the "Import in new package" check box (or click the respective package in the
Import Target window)
Note that UModel can generate a single overview diagram and/or a diagram for each
package. The settings shown are the default settings.
Please note:
If you are importing into an existing project, you will be prompted for the package it
should be imported into. If you are using a new project, an OrgChart folder is
automatically created.
Resolve aliases:
When reverse engineering code which contains namespace or class aliases, you can now
choose if the alias is to be resolved. (Check box "Resolve aliases" in Import Source
Project/Directory dialog box).
When updating code, i.e. model to code, alias definitions are retained in the code as is. The
scope of the alias definitions are the files in which they appear.
e.g.
using Q = [Link]<String>;
Q myQueue;
Any potentially conflicting aliases are added to the "Unknow externals" if their use is unclear.
Note:
The Resolve alias settings can be changed at any time in the Project Settings dialog box.
Defined symbols
C# or Visual Basic code allow you to enter a list of "Defined symbols" in the field of that name.
These directives are used to conditionally compile sections of code. Enter these directives as a
semicolon delimited list. UModel takes the defined symbols into account during the code
engineering process.
UModel outputs all symbols used in the source code in the message window, when the
reverse-engineering process is completed.
Raised exceptions
Clicking an operation in one of the classes, then clicking the Exception combo box,
displays the exception information that an operation can throw.
If you intend to import Java and/or C# binary files, the following programs/components must be
installed:
Java 1.4 / 5.0:
Sun Java Runtime Environment (JRE), or Development Kit (JDK) in Versions 1.4, 1.5, 1.6
UModel support:
Type import is supported for all Class Archives targeting these environments, i.e.
adhering to the Java Virtual Machine Specification.
UModel support:
Type import is supported for Assemblies targeting:
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0
.NET Compact Framework v1.0, v2.0, v3.5 (for PocketPC, Smartphone, WindowsCE)
These requirements only apply if you intend to import Java or C# or [Link] binaries; if you do
not, there is no need for the Java Runtime Environment, or the MS .NET Framework to be
installed.
3. Click the "+" expand button to expand the list of binaries, and activate the check box
(es) of those that you want to import (the first three in the screen shot below), then click
Next.
4. Select the specific options you need and click Next to continue.
5. Define the Import Target, or click the Import in new Package check box, then click
Next.
6. Select the Content Diagram Generation properties from the dialog box and click Next to
continue.
Note that you can generate a single diagram for each package, as well a single
overview diagram.
7. Select the Package Dependency options that you would like to include and click Finish
to complete the import procedure.
The screenshot below shows the diagram containing the package dependencies of the
Java binaries.
Package level:
1. Use SHIFT, or CTRL + click to select the package(s) you want to merge.
2. Right click the selection, and select one of the code merging options:
Merge Program..., or Merge UModel project...
Class level:
1. Use SHIFT, or CTRL + click to select the classes(s) you want to merge.
2. Right click the selection, and select one of the code merging options:
Merge Program..., or Merge UModel project...
Please note:
When synchronizing code, you might be confronted with a dialog box that prompts you
to update your UModel project before synchronization.
This only occurs if you are using UModel projects created before the latest release.
Please click YES to update your project, and save your project file. This prompt will not
occur once this has been done.
Right-click a class, interface,… in the Model Tree and select Code Engineering |
Overwrite UModel Class from Program Code
- This updates the selected class (interface,…) of your project.
- Since missing classes cannot be selected, nothing will be added to the project.
Right-click a Component in the Model Rree (normally within the Component View
package) and Code Engineering | Overwrite UModel Component from Program
Code
- This updates the corresponding directory (or project file) only.
- New files in the directory (project file) are identified and added to the project.
- An entry "Collecting source files in 'C:\UMTest'" appears in your message window.
SPL Templates:
SPL templates are used during the generation of Java, C# and VB code.
Then select one of the menu options shown below, to initiate the synchronization process.
Project | Merge Program Code from UModel project, please see Round-trip
engineering (model - code - model) for more information, or
Project | Merge UModel Project from Project code, please see Round-trip
engineering (code - model - code) for more information.
Please note:
SPL templates are only used/accessed when new code is generated, i.e. new classes,
operations etc. have been added to the model. Existing code does not access/use the
SPL templates.
The new classifier is only re-inserted in those modeling diagrams that are automatically
created during the reverse-engineering process, or when generating a diagram using the "
Show in new Diagram | Content" option. The new classifier is inserted at a default position, on
the diagram, that probably differs from the previous location.
UModel now has the ability to help you when refactoring classes, please see Refactoring code
and synchronization.
Automatic ComponentRealizations are created for a Classifier that can be assigned ONE (and
only ONE) Component.
without any ComponentRealizations, or
contained in a code language namespace
The way the Component is found differs for the two cases:
Component representing a code project file (property "projectfile" set)
if there is ONE Component having/realizing classifiers in the containing package
if there is ONE Component having/realizing classifiers in a subpackage of the
containing package (top down)
if there is ONE Component having/realizing classifiers in one of the the parent
packages (bottom up)
if there is ONE Component having/realizing classifiers in a subpackage of one of the
the parent packages (top down)
Notes:
The option "Code Engineering | Generate missing ComponentRealizations" has to
be set.
As soon as ONE viable Component is found during one of the above steps, this
Component is used and the remaining steps are ignored!
Error/Warnings:
If no viable Component was found, a warning is generated (message log)
If more than one viable Component was found, an error is generated (message log)
UModel now opens a dialog box if it detects that new types have been added/renamed during
reverse engineering. The new types are listed in the "Name in code" column while the assumed
original type name is listed in the "Name in model" column. UModel tries to make an informed
guess as to the original name relying on namespace, class content, base classes and other
data.
If a class was renamed, select the previous class name using the combo box in the "Name in
model" column, e.g. C1. This ensures that all related data are retained and and the code
engineering process remains accurate.
E.g. You decide that you want to change the class names before generating code the second
time round. As you previously assigned a file name to each class, in the "code file name" field of
the Properties window, the new class and file name would now be out of sync.
UModel prompts if you want the code file name to agree with the new class name, when you
start the synchronization process. Note that you also have the option to change the class
constructors as well.
engineering process. The Java namespace root is denoted with a icon in the Model
Tree pane.
Selecting the command again removes the Java namespace for this package.
UModel elements and Java code elements, when outputting model to code
Java code elements and UModel model elements, when inputting code into model
The screenshot shows a small section of the table. Please click HERE to open the HTML
version of the table in your browser.
The screenshot shows a small section of the table. Please click HERE to open the HTML
version of the table in your browser.
The screenshot shows a small section of the table. Please click HERE to open the HTML
version of the table in your browser.
The screenshot shows a small section of the table. Please click HERE to open the HTML
version of the table in your browser.
UModel projects can be included within other UModel projects. To include projects place the
respective *.ump files in:
Please note:
An include file, which contains all types of the Microsoft .NET Framework 2.0, is
available in the C# 2.0 tab.
Please note:
To delete or remove a project from the "Include" dialog box, delete or remove the
(MyModel).ump file from the respective folder.
This option is useful if multiple persons are working on the same project at the same time, or
you just want to consolidate your work into one model.
Please see:
2-way Project merge
3-way Project merge
Please note:
Clicking on one of the entries in the message window displays that modeling element in
the Model Tree.
Merging results:
New modeling elements i.e. those that do not exist in the source, are added to the
merged model.
Differences in the same modeling elements; the elements from the second model
take precedence, e.g. there can only be one default value of an attribute, the default
value of the second file is used.
Diagram differences: UModel first checks to see if there are differences between
diagrams of the two models.
If there are, then the new/different diagram is added to the merged model (with a
running number suffix, activity1 etc.) and the original diagram is retained.
If there are no differences, then identical diagrams(s) are ignored, and nothing is
changed.
You can then decide which of the diagrams you want to keep or delete, you can of
course keep both of them if you want.
The whole merge process can be undone step-by-step by clicking the Undo icon in the
icon bar, or pressing CTRL+Z.
Clicking an entry in the message window displays that element in the Model Tree.
The file name of the merged file, the first file you opened, is retained!
Project merging
The 3-way project merge works with top-level UModel projects, i.e. main projects that may
contain subprojects, it does not support individual file merging, when these files have
unresolved references to other files.
When merging main projects, any editable subprojects are automatically merged as well. There
is no need for a separate subproject merging process.
Please see Manual 3-way project merge example for a simple example.
The whole merge process can be undone step-by-step by clicking the Undo icon in the
icon bar, or pressing CTRL+Z.
Clicking an entry in the message window displays that element in the Model Tree.
The file name of the merged file, the first file you opened, is retained!
Merging results:
Note: source in the following text, means the initial/first project file you open before starting the
merge process.
New modeling elements in the second file i.e. that do not exist in the source, are added
to the merged model.
New modeling elements in the source file i.e. that do not exist in the second file, remain
in the merged model.
Deleted modeling elements from the second file i.e. those that still exist in the source,
are removed from the merged model.
Deleted modeling elements from the source file i.e. that still exist in the second file,
remain deleted from the merged model.
Moved elements:
If an element is moved in the source, or second file, then the element is moved in the
merged model
If an element is moved (to different parents) in both the source and second file, a
prompt appears, and you have to manually select the parent element in the merged
model
Diagram differences:
UModel first checks to see if there are differences between diagrams of the two models.
If there are, then the new/different diagram is added to the merged model (with a
running number suffix, activity1 etc.) and the original diagram is retained.
If there are no differences, then identical diagrams(s) are ignored, and nothing is
changed.
You can then decide which of the diagrams you want to keep or delete, you can of
course keep both of them if you want.
The specific source control system you use, determines if the automatic snapshot 3-way
merge process is supported by UModel. A manual 3-way merge is however, always possible.
Source control systems that perform automatic file merging without user intervention,
will probably not support an automatic 3-way merge.
Source control systems that prompt you to choose between Replace or Merge, when a
project file has been changed, will generally support a 3-way merge. After the source
control plugin has replaced the file, selecting the Replace command activates the
UModel file alert which then allows you to do a 3-way merge. UModel must be used for
the check in/out process.
Main projects as well as subprojects can be placed under source control. Changing
data in a subproject automatically prompts you if the subproject(s) should be checked
out.
Each check in/out action, creates a Common ancestor, or a snapshot, file which is then
used during the 3-way project merge process.
Please note:
Snapshot files are only automatically created and used with the standalone versions of
UModel, i.e. these functions are not available in the Eclipse or Visual Studio plugin
versions.
E.g.
User A edits a UModel project file and changes the name of a class in the BankView Main
diagram. User B opens the same project file and changes the visibility of the same class.
As snapshot files are created for each user, the snapshot editing history allows the individual
changes to be merged into the project. Both the name and visibility changes are merged into
the project file during the 3-way merge process.
User1 opens the Bank_CSharp.ump project file in folder C#_1 and makes changes to the
BankView class.
User2 opens the Bank_CSharp.ump project file in folder C#_2 and makes changes to
the Bank class.
You are now prompted to open the Common Ancestor file, which is the original
project file in the ...\UModelExamples folder.
The 3-way merge process is started and you return to the project file from which you
started the 3-way merge process, i.e. from the project file in the C#_2 folder.
The changes made to the project in the C#_1 folder, are replicated in the C#_2 project
file.
The changes made to the project in the C#_2 folder, are retained in the project file.
The project file in the C#_2 folder should now be used as the Common Ancestor file for
future 3-way merges between the project files in folders C#_1 and C#_2.
Also note that subproject files can be split off a main, or subproject, file at any time. The
subproject files can be included as editable or read-only from the main project; each package is
shared and saved as a subproject file. Subprojects can be added to a source control system.
Please see Teamwork support for UModel projects for more information.
A "shared" icon appears below the shared package in the Model Tree. This package
can now be included in any other UModel project.
The "Include" dialog box allows you to choose between including the package/project
by reference, or as a copy.
4. Select the specific option (Include by reference) and click OK.
The "Deployment View" package is now visible in the new package. The packages'
source project is displayed in parenthesis ([Link]).
Shared folders that have been included by reference can be changed to "Include by
copy" at any time, by right clicking the folder and selecting Subproject | Include as a
Copy.
Please note:
All included projects of the source project, have also been included: Java Lang,
Unknown Externals and Java Profile.
Attempting to share a package which has links to external elements causes a prompt to appear.
E.g. trying to share the BankView package.
Clicking Yes, forces you to resolve the external links before you can save.
The Messages pane provides information on each of the external links.
Clicking an error entry, in the Messages pane, displays the relevant element in the Model Tree
tab.
Class template called MyVector, with formal template parameter "T", visible in the
dashed rectangle.
Formal parameters without type info (T ) are implicitly classifiers: Class, Datatype,
Enumeration, PrimitiveType, Interface. All other parameter types must be shown
explicitly e.g. Integer.
Property myArray with unbounded number of elements of type T.
Right clicking the template and selecting Show | Bound elements, displays the actual
bound elements.
Templates can also be defined when defining properties or operations. The autocomplete
function helps you with the correct syntax when doing this.
Parameter substitution
T>aBaseClass
Substituting classifiers
T>{contract}aBaseClass
allowsSubstitutable is true
Parameter must be a classifier that may be substituted for the classifier designated by
the classifier name.
When constraining to anything other than a class, (interface, datatype), the constraint is
displayed after the colon ":" character. E.g. T is constrained to an interface (T:Interface)
which must be of type "anInterface" (>anInterface).
Template parameter T must be of type "vector" which contains objects which are a
supertype of aBaseClass.
Using wildcards
Class1
Property1:vector<T->?>
Select the menu item Tools | Options to define your local settings, please see Tools | Options
in the Reference section for more details on the local settings.
association icon
aggregation
composition
containment
When an association has been created, a new attribute is automatically inserted in the
originating (A:name) class, e.g. Property1:Class2, in the example below.
Having created the association it is shown as active, and the Properties tab displays its
properties. A text label shows the default name of the member end of the association, i.e.
Property1. Note that the context menu option Text Label... allows you to show / hide labels.
Clicking an association line, displays the association properties in the Properties tab. A:Name
and B:Name indicate the role of each class in the other.
Please note:
Associations can be created using the same class as both the source and target. This
is a so-called self link. It describes the ability of an object to send a message to itself,
for recursive calls.
Click the relationship icon, then drag from the element, dropping somewhere else on
the same element. A self-link appears.
Deleting relationships/associations:
1. Click the relationship in the diagram tab, or in the Model Tree.
2. Press the Del. keyboard key.
The dependency is deleted from the diagram and project.
Note that the contained class, Class2 in this case, is now visible in a compartment of
Class1. This generally places the contained class in the same namespace as the
container class.
A Tooltip appears, informing you of the type of relationship that this handle creates,
Association in this case.
4. Drag to create a connector, and drop it on the second class.
The target class is highlighted if this type of association is possible.
Note that the lower handle of the class element creates a Collection Association.
Elements in the various model diagrams supply you with different connection handles.
E.g. a class in a class diagram supplies the following relationship handles (in clockwise
fashion):
InterfaceRealization
Generalization
Association
Please note:
The screenshots in this manual do not show the Association Ownership dot.
To enable it, set the Show Assoc. Ownership, in the Styles tab, to true.
Deleting relationships/associations:
1. Click the relationship in the diagram tab, or in the Model Tree.
2. Press the Del. keyboard key.
The dependency is deleted from the diagram and project.
Collection Associations
UModel supports a special type of viewing Collection Associations.
Collection associations are special associations for collection templates. A class property (e.g.
interface) can generally be shown as an association to the "type" of the property. UModel also
allows an alternalte method of viewing this type of association.
Click on the lower of the two class handles on the right of the class, then drag and drop the
connector onto the target class.
Example:
If associations are automatically created during reverse engineering, you will see them as
Collection Associations if the settings in the Diagram Editing tab are set to: Resolve collections
and are also available in the Collection Templates dialog box.
The double arrow head shows that the "type" of myColors is not only Color, but a "collection of"
Colors.
The assocation will not be shown as List<E->Color>, but directly to the enumeration "Color",
thus hiding the information that Color is used in a template binding.
The concrete collection type of myColors can still be seen in the myColorsContainer, but not in
the association.
The Diagram Editing tab of the Tools | Options dialog box allows you to specify the templates
where you want this behavior and whether you want the collections to be resolved.
The Generate Documentation command generates detailed documentation about your UML
project in HTML, MS Word, RTF or PDF. The documentation generated by this command can
be freely altered and used; permission from Altova to do so is not required.
Documentation is generated for the modeling elements you select in the Generate
Documentation dialog box. You can either use the fixed design, or use a StyleVision SPS for the
design. Using a StyleVision SPS enables you to customize the output of the generated
documentation. How to do this is explained in the section, User-Defined Stylesheets.
Note: To use an SPS to generate documentation, you must have StyleVision installed on your
machine. Related elements are typically hyperlinked in the onscreen output, enabling
you to navigate from component to component.
To generate documentation in MS Word format, you must have MS Word (version 2000
or later) installed.
Note that you can also create partial documentation of modeling elements by right clicking an
element (or multiple elements using CTRL + click) in the Model Tree and selecting "Generate
Documentation". The element can be a folder, class, interface etc. The documentation options
Related elements are hyperlinked in the onscreen output, enabling you to navigate from
component to component. All manually created hyperlinks also appear in the documentation.
Note also:
documentation is also generated for included C#, Java and/or VB subprojects (profiles) if
enabled in the Include tab!
Main tab:
Documentation Design
Select "Use fixed design..." to use the built-in documentation template.
Select "Use user-defined..." to use a predefined StyleVision Power Stylesheet created
in StyleVision. The SPS files are available in the ...\My
Documents\Altova\UModel2014\Documentation\UModel\ folder.
Click Browse to browse for a predefined SPS file.
Click Edit to launch StyleVision and open the selected SPS in a StyleVision window.
Output format:
The output format is specified here: either HTML, Microsoft Word, RTF, or PDF.
Microsoft Word documents are created with the .doc file extension when generated
using a fixed design, and with a .docx file extension when generated using a
StyleVision SPS.
The PDF output format is only available if you use a StyleVision SPS to generate the
documentation.
"Split output to multiple files" generates an output file for each modeling element that
would appear in the TOC overview when generating a single output file e.g. a class C1
with a nested class CNest exists; [Link] contains all info pertaining to C1 and CNest
as well as all their attributes, properties etc
The Embed CSS in HTML option allows you to embed an existing (referenced) CSS
file in the HTML documentation, when active; or keep the reference to the CSS file, and
the file itself, external when inactive.
The Embed diagrams option is enabled for the Microsoft Word and RTF output
options. When this option is selected, diagrams are embedded in the generated file.
Diagrams are created as PNG files (for HTML), or PNG/EMF files (for MS Word and
RTF), which are displayed in the result file via object links.
Create folder for diagrams generates a subfolder, below the selected output folder,
that will contain all diagrams when the documentation is output.
The "Show Result File..." option is enabled for all output options. When checked, the
result files are displayed in Browser View (HTML output), MS Word (MS Word output),
and the default application for .rtf files (RTF output).
Generate links to local files option allows you to specify if the generated links are to
be absolute, or relative, to the output file.
Include tab
allows you to select which diagrams and modeling elements are to appear in the
documentation.
Note that documenting subprojects can be disabled by deselecting the "Included subprojects"
check box.
Details tab
allows you to select the element details that are to appear in the documentation.
If you intend to import XML tags text in your documentation, please de-activate the "as
HTML" option under the Documentation option.
The up / down fields allow you to define the nesting depth shown above/below the
current class in the hierarchy diagram.
The "expand each element only once" option, only allows one of the same classifiers to
be expanded in the same image/diagram.
Fonts tab
allows you to customize the font settings for the various headers and text content.
The following screenshots show the fixed-design documentation for the Bank_MultiLanguage.
ump file that is included in the ...\UModelExamples directory.
The screenshot above shows the generated documentation with the diagram and element index
links at the top of the HTML file.
The screenshot below shows the specifics of the Account class and its relation to other
classes.
Note that the individual attributes and properties in the class diagrams are also hyperlinked to
their definitions. Clicking a property takes you to its definition. The individual hierarchy classes,
as well as all underlined text, are hyperlinked.
Clicking a link, in the generated documentation, navigates to the modeling element in the
browser.
Please note:
To use an SPS to generate documentation, you must have StyleVision installed on your
machine.
When creating the SPS design in StyleVision, nodes from the [Link]
schema are placed in the design and assigned styles and properties. Note that the
[Link] includes the [Link] file located in the folder above it.
Additional components, such as links and images, can also be added to the SPS design. How
to create an SPS design in StyleVision is described in detail in the StyleVision user manual.
The advantage of using an SPS for generating schema documentation is that you have
complete control over the design of the documentation. Note also that PDF output of the
documentation is available only if an SPS is used; PDF output is not available if the fixed design
is used.
10 UML Diagrams
There are two major groups of UML diagrams, Structural diagrams, which show the static view
of the model, and Behavioral diagrams, which show the dynamic view. UModel supports all
fourteen diagrams of the UML 2.4 specification as well as: XML Schema and Business
Modeling Notation diagrams.
Behavioral diagrams include Activity, State machine, Protocol State Machine and Use Case
diagrams; as well as the Interaction, Communication, Interaction Overview, Sequence, and
Timing diagrams.
Structural diagrams include: Class, Composite Structure, Component, Deployment, Object, and
Package diagrams.
Please note:
The CTRL+Enter keys can be used to create multi-line labels for most of the modeling
diagrams, e.g. Lifeline labels in sequence diagrams, timing diagrams; guard conditions, state
names, activity names etc.
Behavioral Diagrams
Activity Diagram
State Machine Diagram
Protocol State Machine Diagram
Use Case Diagram
A subset of the Behavioral diagrams are those that depict the object interactions, namely:
Communication Diagram
Interaction Overview Diagram
Sequence Diagram
Timing Diagram
Activity diagrams are useful for modeling real-world workflows of business processes, and
display which actions need to take place and what the behavioral dependencies are. The
Activity diagram describes the specific sequencing of activities and supports both conditional
and parallel processing. The Activity diagram is a variant of the State diagram, with the states
being activities.
Please note that the Activity diagram shown in the following section is available in the
Bank_MultiLanguage.ump sample, in the ...\UModelExamples folder supplied with UModel.
1. Click the Action (CallBehavior) icon in the icon bar, and click in the Activity
diagram to insert it.
2. Enter the name of the Action, e.g. Validate References, and press Enter to confirm.
1. Click the Action (CallOperation) icon in the icon bar, and click in the Activity
diagram to insert it.
2. Enter the name of the Action, e.g. collectAccountInfo, and press Enter to confirm.
3. Click the Browse button to the right of the operation field in the Properties tab.
This opens the "Select Operation" dialog box in which you can select the specific
operation.
4. Navigate to the specific operation that you want to insert, and click OK to confirm.
1. Click the DecisionNode icon in the title bar, and insert it in the Activity diagram.
2. Click the ActivityFinalNode icon which represents the abort activity, and insert it
into the Activity diagram.
3. Click the Validate References activity to select it, then click the right-hand handle,
ControlFlow, and drag the resulting connector onto the DecisionNode element.
5. Enter the guard condition "valid", in the guard field of the Properties tab.
6. Click the DecisionNode element and drag from the right-hand handle, ControlFlow,
and drop it on the ActivityFinalNode element.
The guard condition on this transition is automatically defined as "else". Double click the
guard condition in the diagram to change it e.g. "reference missing".
Please note that UModel does not validate, or check, the number of Control/Object Flows in a
diagram.
Creating a merge:
1. Click the MergeNode icon in the icon bar, then click in the Activity diagram to
insert it.
2. Click the ControlFlow (ObjectFlow) handles of the actions that are to be merged, and
drop the arrow(s) on the MergeNode symbol.
Activity Diagram elements
Action (CallBehavior)
Inserts the Call Behavior Action element which directly invokes a specific behavior.
Selecting an existing behavior using the behavior combo box, e.g. HandleDisplayException,
and displays a rake symbol within the element.
Action (CallOperation)
Inserts the Call Operation Action which indirectly invokes a specific behavior as a method.
Please see "Inserting an action (CallOperation)" for more information.
Action (OpaqueAction)
A type of action used to specify implementation information. Can be used as a placeholder until
you decide which specific action type you want to use.
Action (ValueSpecificationAction)
A type of action that evaluates(/generates) a specific value at the output pin. (Defined by the
specific properties, e.g. upperBound.)
AcceptEventAction
Inserts the Accept Event action which waits for the occurrence of an event which meets specific
conditions.
AcceptEventAction (TimeEvent)
Inserts a AcceptEvent action, triggered by a time event, which specifies an instant of time by an
expression e.g. 1 sec. since last update.
SendSignalAction
Inserts the Send Signal action, which creates a signal from its inputs and transmits the signal to
the target object, where it may cause the execution of an activity.
DecisionNode
Inserts a Decision Node which has a single incoming transition and multiple outgoing guarded
transitions. Please see "Creating a branch" for more information.
MergeNode
Inserts a Merge Node which merges multiple alternate transitions defined by the Decision Node.
The Merge Node does not synchronize concurrent processes, but selects one of the processes.
InitialNode
The beginning of the activity process. An activity can have more than one initial node.
ActivityFinalNode
The end of the activity process. An activity can have more that one final node, all flows in the
activity stop when the "first" final node is encountered.
FlowFinalNode
Inserts the Flow Final Node, which terminates a flow. The termination does not affect any other
flows in the activity.
ForkNode
Inserts a vertical Fork node.
Used to divide flows into multiple concurrent flows.
ForkNode (Horizontal)
Inserts a horizontal Fork node.
Used to divide flows into multiple concurrent flows.
JoinNode
Inserts a vertical Fork node.
A Join node synchronizes multiple flows defined by the Fork node.
InputPin
Inserts an input pin onto a Call Behavior, or Call Operation action. Input pins supply input values
that are used by an action. A default name, "argument", is automatically assigned to an input
pin.
The input pin symbol can only be placed onto those activity elements where the mouse pointer
changes to the hand symbol . Dragging the symbol repositions it on the element border.
OutputPin
Inserts an output pin action. Output pins contain output values produced by an action. A name
corresponding to the UML property of that action e.g. result, is automatically assigned to the
output pin.
The output pin symbol can only be placed onto those activity elements where the mouse pointer
changes to the hand symbol . Dragging the symbol repositions it on the element border.
Exception Pin
An OutputPin can be changed to an Exception pin by clicking the pin and selecting
"isExceptionPin" from the Properties pane.
ValuePin
Inserts a Value Pin which is an input pin that provides a value to an action, that does not come
from an incoming object flow. It is displayed as an input pin symbol, and has the same
properties as an input pin.
ObjectNode
Inserts an object node which is an abstract activity node that defines object flow in an activity.
Object nodes can only contain values at runtime that conform to the type of the object node.
CentralBufferNode
Inserts a Central Buffer Node which acts as a buffer for multiple in- and out flows from other
object nodes.
DataStoreNode
Inserts a Data Store Node which is a special "Central Buffer Node" used to store persistent (i.e.
non transient) data.
ActivityPartition (horizontal)
Inserts a horizontal Activity Partition, which is a type of activity group used to identify actions that
have some characteristic in common. This often corresponds to organizational units in a
business model.
Double clicking a label allows you to edit it directly; pressing Enter orients the text correctly.
Please note that Activity Partitions are the UML 2.0 update to the "swimlane" functionality of
previous UML versions.
Elements placed within a ActivityPartition become part of it when the boundary is
highlighted.
Objects within an ActivityPartition can be individually selected using CTRL+Click, or by
dragging the marquee inside the boundary.
Click the ActivityPartition boundary, or title, and drag to reposition it.
ActivityPartition (vertical)
Inserts a vertical Activity Partition, which is a type of activity group used to identify actions that
have some characteristic in common. This often corresponds to organizational units in a
business model.
ActivityPartition (2 Dimensional)
Inserts a two dimensional Activity Partition, which is a type of activity group used to identify
actions that have some characteristic in common. Both axes have editable labels.
ControlFlow
A Control Flow is an edge, i.e. an arrowed line, that connects two activities/behaviours, and
starts an activity after the previous one has been completed.
ObjectFlow
A Object Flow is an edge, i.e. an arrowed line, that connects two actions/object nodes, and
starts an activity after the previous one has been completed. Objects or data can be passed
along an Object Flow.
ExceptionHandler
An Exception Handler is an element that specifies what action is to be executed if a specified
exception occurs during the execution of the protected node.
Activity
ActivityParameterNode
Inserts an Activity Parameter node onto an activity. Clicking anywhere in the activity places the
parameter node on the activity boundary.
StructuredActivityNode
Inserts a Structured Activity Node which is a structured part of the activity, that is not shared
with any other structured node.
ExpansionRegion
An expansion region is a region of an activity having explicit input and outputs (using
ExpansionNodes). Each input is a collection of values.
The expansion region mode is displayed as a keyword, and can be changed by clicking the
"mode" combo box in the Properties tab. Available settings are:parallel, iterative, or stream.
ExpansionNode
Inserts an Expansion Node onto an Expansion Region. Expansion nodes are input and output
nodes for the Expansion Region, where each input/output is a collection of values. The arrows
into, or out of, the expansion region, determine the specific type of expansion node.
InterruptableActivityRegion
An interruptible region contains activity nodes. When a control flow leaves an interruptible
region all flows and behaviors in the region are terminated.
1. Right click the Control Flow arrow, and select New | InterruptingEdge.
Please note:
You can also add an InterrupingEdge by clicking the InterruptableActivityRegion, right
clicking in the Properties window, and selecting Add InterruptingEdge from the pop-up
menu.
The State Machine Diagram models the behavior of a system by describing the various states
an object may be in, and the transitions between those states. They are generally used to
describe the behavior of an object spanning several use cases. A state machine can have any
number of State Machine Diagrams (or State Diagrams) UModel.
Please note that the State machine diagrams shown in the following section are available in the
Bank_MultiLanguage.ump sample, in the ...\UModelExamples folder supplied with UModel.
1. Click the state icon in the icon bar and click in the State diagram to insert it.
2. Enter the name of the state and press Enter to confirm.
Simple states do not have any regions or any other type of substructure. UModel allows
you to add activities as well as regions to a simple state through the context menu.
You can select one action from the Do, Entry and Exit action categories. Activities are
placed in their own compartment in the state element, though not in a separate region.
The type of activity that you select is used as a prefix for the activity e.g. entry / store
current time.
To delete an activity:
1. Click the respective activity in the state element and press the Del. key.
The Transition properties are now visible in the Properties tab. Clicking the "kind"
combo box, allows you to define the transition type: external, internal or local.
Transitions can have an event trigger, a guard condition and an action in the form
eventTrigger [guard condition] /activity.
icon , automatically creates the corresponding operation in the referenced class, when
creating a transition and entering a name e.g. myOperation().
Note: operations can only be created automatically when the state machine is inside a class or
interface.
Please note:
Operations are automatically added for: Do:Activity, Entry:Activity, Exit:Activity, as well
as guard condition activities and effects (on transitions).
An "a" character appears in the transition label above the transition arrow, if it is the first
trigger in the state diagram. Triggers are assigned default values of the form alphabetic
letter, source state -> target state.
3. Double click the new character and enter the transition properties in the form
eventTrigger [guard condition] / activity.
Transition property syntax; the text entered before the square brackets is the trigger,
between brackets the guard condition, and after the slash, the activity. Manipulating this
string automatically creates or deletes the respective elements in the Model Tree.
Please note:
To see the individual transition properties, right click the transition (arrow) and select
"Select in Model Tree". The event, activity and constraint elements are all shown below
the selected transition.
3. Double click the Action window to switch into the Activity diagram and further define the
transition, e.g. change the Action name to Database logon.
Note that a new Activity Diagram tab has now been added to the project. You can add
any activity modeling elements to the diagram, please see "Activity Diagram" for more
information.
4. Click the State Machine Diagram tab to switch back to see the update transition.
5. Drag the Activity window to reposition it in the diagram, and click the resize handle if
necessary.
Dragging the Activity window between the two states, displays the transition in and out
of the activity.
Composite states
Composite state
This type of state contains a second compartment comprised of a single region. Any number of
states may be placed within this region.
To delete a region:
1. Click the region you want to delete in the composite state and press the Del. key.
Deleting a region of an orthogonal state reverts it back to a composite state; deleting
the last region of a composite state changes it back to a simple state.
Moving the composite state moves all contained states along with it.
Orthogonal state
This type of state contains a second compartment comprised of two or more regions, where the
separate regions indicate concurrency.
Right clicking a state and selecting New | Region allows you add new regions.
Submachine state
This state is used to hide details of a state machine. This state does not have any regions but is
associated to a separate state machine.
To define a submachine state:
1. Having selected a state, click the submachine combo box in the Properties tab.
A list containing the currently defined state machines appears.
2. Select the state machine that you want this submachine to reference.
Please note that a hyperlink icon automatically appears in the submachine, clicking it
opens the referenced statemachine, BankServer in this case.
1. Click the ConnectionPointReference icon in the title bar, then click the
submachine state that you want to add the entry/exit point to.
2. Right click in the Properties tab and select Add entry. Please note that another Entry, or
Exit Point has to exist elsewhere in the diagram to enable this pop-up menu.
This adds an EntryPoint row to the Properties tab, and changes the appearance of the
ConnectionPointReferece element.
3. Use the same method to insert an ExitPoint, by selecting "Add exit" from the context
menu.
Code generation from State Machine diagrams
UModel is now able to generate executable code from State Machine diagrams (Java,[Link],
or C#). Almost all of the State Machine diagram elements and features are supported:
State
CompositeState, with any hierarchical level
OrthogonalState, with any number of regions
Region
InitialState
FinalState
Transition
Guard
Trigger
Call-Event
Fork
Join
Choice
Junction
DeepHistory
ShallowHistory
Entry/exit/do actions
Effects
State Machine code generation is integrated into the "normal" round-trip engineering process.
This means that State Machine code can be automatically updated on every forward-
engineering process.
The screenshot above shows the AirCondition State Machine diagram which is available in the
..\StateMachineCodeGeneration directory under ...\UModelExamples. A separate directory
exists for each of the code generation languages supported by UModel, i.e. C#, Java, and VB.
Each directory contains an AirCondition and Complex folder, which contains the respective
UModel project, programming language project files, as well as the generated source files. The
[Link] project file contains almost all of the modeling elements and functionality that
UModel supports when generating code from State Machine diagrams.
Each directory also contains a test application, e.g. [Link] for C#, allowing
you to work with the generated source files immediately.
The default settings are shown above. Click OK to generate the code.
State Machine code is automatically updated when you start the forward engineering process.
You can however change this setting by clicking on the State Machine diagram background and
Changes should not be made manually in the generated code, as these changes are not are not
reflected in the State Machine diagram during the reverse-engineering process.
Clicking the icon of the Automatic Update field, opens the Generate State Machine Code
dialog box, allowing you to change the code generation settings.
Please note:
You can perform a syntax check on a State Machine diagram by right clicking the
diagram and selecting Check State Machine Syntax.
The controller class provides methods which can be used from "outside" to change the states
(e.g. after external events occur).
The state machine implementation however, calls controller class methods ("callbacks") to
inform the state machine user about state changes (OnEntry, OnExit, ...), transition effects, and
the possibility to override and implement methods for conditions (guards).
UModel can automatically create simple operations (without any parameter) for entry/exit/ do
behaviors, transition effects, ... when the corresponding option is turned on (also see Creating
states, activities and transitions. These methods can be changed to whatever you want in
UModel (add parameters, set them as abstract, etc.).
A state machine (i.e. its controller class) can be instantiated several times. All instances work
independently of each other.
The UML State machine execution is designed for the "Run-to-completion execution
model".
UML state machines assume that processing of each event is completed before the
next event is processed.
This also means no entry/exit/do action or transition effect, may directly trigger a new
transition/state change.
Initialization:
Every region of a state machine has to have an initial state.
The code generated by UModel, automatically initializes all regions of the state machine
The AirCondition example shows how to walk through the regions to the current state(s):
The state machine user should call the generated method "MyEvent1" when the
corresponding event occurs (outside the state machine).
The return parameter of these event-methods, provide information if the event caused a
state change (i.e. if it had any effect on the state machine) or not.
E.g. being in "State1" and event "MyEvent1()" occurs, the current state changes to
"State2" and "MyEvent1()" returns true.
If "State2" is active and "MyEvent1()" occurs nothing will change in the state machine
and MyEvent1() will return false.
d
in
co
de:
pr
iv
at
e
cl
as
s
CT
es
tS
ta
te
Ma
ch
in
e
:
IS
ta
te
{
//
Ov
er
wr
it
e
to
ha
nd
le
en
tr
y/
ex
it
/d
o
ac
ti
on
s,
tr
an
si
ti
on
ef
fe
ct
s,
..
.:
pu
bl
ic
vi
rt
ua
l
vo
id
On
St
at
e1
St
at
e2
Ef
fe
ct
()
{}
}
as
s
CT
es
tS
ta
te
Ma
ch
in
e
:
IS
ta
te
{
//
Ad
di
ti
on
al
de
fi
ne
d
op
er
at
io
ns
of
th
e
co
nt
ro
ll
er
cl
as
s:
pu
bl
ic
vi
rt
ua
l
vo
id
On
St
at
e1
St
at
e2
Ef
fe
ct
(
St
ri
ng
te
xt
)
}
}
IState
{
…
// Overwrite
to handle
entry/exit/do
actions, transition
effects,...:
public
virtual void
OnExitState3() {}
public
virtual void
OnEntryState4() {}
public
virtual void
OnDoState4() {}
}
Example 5 - guards:
Transitions can have guards, which determine if the transition really can fire.
The corresponding operation is Generated
automatically generated in method in code:
UModel private class
CTestStateMachi
ne : IState
{
…
//
Additional
defined
operations of
the controller
class:
public
virtual bool
CanGoState6()
{
return true; //
Overwrite!
}
}
If "State5" is the active state and "MyEvent2" occurs, the state machine implementation
will call "CanGoState6" and, depending on its result, the transition will fire or not.
Normally, these methods should be overwritten. When they are not abstract and the
"Generate debug messages" option is active, UModel provides default debug output as
described in Example 2.
Multiple transitions with the same event, but having different guards, are possible. The
order in which the different guards are polled is undefined. If a transition does not have
a guard, or the guard is "else", it will be considered as the last (i.e., only when all other
transition guards return false, will this one will fire):
Example:
If CanGoState6 (or CanGoState7) is called first is undefined but for sure the third transition only
fires if CanGoState6 and CanGoState7 return false.
Additional constructs and functionality can be found in the [Link] and Complex.
ump samples.
InitialState (pseudostate)
The beginning of the process.
FinalState
The end of the sequence of processes.
EntryPoint (pseudostate)
The entry point of a state machine or composite state.
ExitPoint (pseudostate)
The exit point of a state machine or composite state.
Choice
This represents a dynamic conditional branch, where mutually exclusive guard triggers are
evaluated (OR operation).
Junction (pseudostate)
This represents an end to the OR operation defined by the Choice element.
Terminate (pseudostate)
The halting of the execution of the state machine.
Fork (pseudostate)
Inserts a vertical Fork bar.
Used to divide sequences into concurrent subsequences.
Join (pseudostate)
Joins/merges previously defined subsequences. All activities have to be completed before
progress can continue.
DeepHistory
A pseudostate that restores the previously active state within a composite state.
ShallowHistory
A pseudostate that restores the initial state of a composite state.
All pseudostate elements can be changed to a different "type", by changing the kind combo box
entry in the Properties tab.
ConnectionPointReference
A connection point reference represents a usage (as part of a submachine state) of an
entry/exit point defined in the
statemachine reference by the submachine state.
Transition
A direct relationship between two states. An object in the first state performs one or more
actions and then enters the second state depending on an event and the fulfillment of any guard
conditions.
Transitions have an event trigger, guard condition(s), an action (behavior), and a target state.
Activating the "Toggle automatic creation of operations in target by typing operation names"
icon, automatically creates the corresponding operation in the referenced class, when creating a
transition and entering a name myOperation().
Note: operations can only be created automatically when the state machine is inside a class or
interface.
Protocol State Machines are used to show a sequence of events that an object responds to,
without having to show the specific behavior. The required sequence of events, and the
resulting changes in the state of the object, are modeled in this diagram.
Protocol State Machines are most often used to describe complex protocols, e.g. database
access through a specific interface, or communication protocols such as TCP/IP.
Protocol State Machines are created in the same way as State Machine diagrams, but have
fewer modeling elements. Protocol-Transitions between states can have pre- or post conditions
which define what must be true for a transition to another state to occur, or what the resulting
state must be, once the transition has taken place.
1. Click the State icon in the icon bar and click in the Protocol State Machine diagram
to insert it.
2. Enter the name of the state and press Enter to confirm.
Simple states do not have any regions or any other type of substructure.
State
A simple state element with one compartment.
Composite state
This type of state contains a second compartment comprised of a single region. Any number of
states may be placed within this region.
Orthogonal state
This type of state contains a second compartment comprised of two or more regions, where the
separate regions indicate concurrency.
Right clicking a state and selecting New | Region allows you add new regions.
Submachine state
This state is used to hide details of a state machine. This state does not have any regions but is
associated to a separate state machine.
InitialState (pseudostate)
The beginning of the process.
FinalState
The end of the sequence of processes.
EntryPoint (pseudostate)
The entry point of a state machine or composite state.
ExitPoint (pseudostate)
The exit point of a state machine or composite state.
Choice
This represents a dynamic conditional branch, where mutually exclusive guard triggers are
evaluated (OR operation).
Junction (pseudostate)
This represents an end to the OR operation defined by the Choice element.
Terminate (pseudostate)
The halting of the execution of the state machine.
Fork (pseudostate)
Inserts a vertical Fork bar.
Used to divide sequences into concurrent subsequences.
Join (pseudostate)
Joins/merges previously defined subsequences. All activities have to be completed before
progress can continue.
ConnectionPointReference
A connection point reference represents a usage (as part of a submachine state) of an
entry/exit point defined in the
statemachine reference by the submachine state.
Protocol Transition
A direct relationship between two states. An object in the first state performs one or more
operations and then enters the second state depending on an event and the fulfillment of any
pre- or post conditions.
Please see Inserting Protocol State Machine elements for more information.
Communication diagrams display the interactions i.e. message flows, between objects at run-
time, and show the relationships between the interacting objects. Basically, they model the
dynamic behavior of use cases.
Communication diagrams are designed in the same way as sequence diagrams, except that the
notation is laid out in a different format. Message numbering is used to indicate message
sequence and nesting.
UModel allows you to generate Communication diagrams from Sequence diagrams and vice
versa, in one simple action see "Generating Sequence diagrams" for more information.
Lifeline
The lifeline element is an individual participant in an interaction. UModel allows you to insert
other elements into the sequence diagram, e.g. classes. Each of these elements then appear
as a new lifeline. You can redefine the lifeline colors/gradient using the "Header Gradient"
combo boxes in the Styles tab.
To create a multiline lifeline press CTRL+Enter to create a new line.
2. Enter the lifeline name to change it from the default name, Lifeline1, if necessary.
Messages
A Message is a modeling element that defines a specific kind of communication in an
interaction. A communication can be e.g. raising a signal, invoking an Operation, creating or
destroying an instance. The message specifies the type of communication as well as the sender
and the receiver.
To insert a message:
1. Click the specific message icon in the toolbar.
2. Drag and drop the message line onto the receiver objects.
Lifelines are highlighted when the message can be dropped.
Note: holding down the CTRL key allows you to insert a message with each click.
The direction in which you drag the arrow defines the message direction. Reply
messages can point in either direction.
Having clicked a message icon and holding down CTRL, allows you to insert multiple
messages by repeatedly clicking and dragging in the diagram tab.
Message numbering
The Communication diagram uses the decimal numbering notation, which makes it easy to see
the hierarchical structure of the messages in the diagram. The sequence is a dot-separated list
of sequence numbers followed by a colon and the message name.
Interaction Overview Diagrams are a variant of Activity diagrams and give an overview of the
interaction between other interaction diagrams such as Sequence, Activity, Communication, or
Timing diagrams. The method of constructing a diagram is similar to that of Activity diagram
and uses the same modeling elements: start/end points, forks, joins etc.
Two types of interaction elements are used instead of activity elements: Interaction elements
and Interaction use elements.
Interaction elements are displayed as iconized versions of a Sequence, Communication,
Timing, or Interaction Overview diagram, enclosed in a frame with the "SD" keyword displayed
in the top-left frame title space.
Interaction occurrence elements are references to existing Interaction diagrams with "Ref"
enclosed in the frame's title space, and the occurrence's name in the frame.
Inserting Interaction Overview elements
1. Click the CallBehaviorAction (Interaction) icon in the icon bar, and click in the
Interaction Overview diagram to insert it.
The Collect Account Information sequence diagram is automatically inserted if you are
using the Bank_Multilanguage.ump example file from the ...\UModelExamples folder.
The first sequence diagram, found in the model tree, is selected per default.
2. To change the default interaction element: Click the behavior/diagram combo box in
the Properties tab.
A list of all the possible elements that can be inserted is presented.
1. Click the CallBehaviorAction (InteractionUse) icon in the icon bar, and click in the
Interaction Overview diagram to insert it.
2. To change the Interaction element: double click the behavior combo box in the
Properties tab.
A list of all the possible elements that can be inserted is presented.
3. Select the occurrence you want to insert.
Note that all elements inserted using this method appear in the form shown in the
screenshot above i.e. with "ref" in the frame's title space.
DecisionNode
Inserts a Decision Node which has a single incoming transition and multiple outgoing guarded
transitions. Please see "Creating a branch" for more information.
MergeNode
Inserts a Merge Node which merges multiple alternate transitions defined by the Decision Node.
The Merge Node does not synchronize concurrent processes, but selects one of the processes.
InitialNode
The beginning of the activity process. An interaction can have more than one initial node.
ActivityFinalNode
The end of the interaction process. An interaction can have more that one final node, all flows
stop when the "first" final node is encountered.
ForkNode
Inserts a vertical Fork node.
Used to divide flows into multiple concurrent flows.
ForkNode (Horizontal)
Inserts a horizontal Fork node.
Used to divide flows into multiple concurrent flows.
JoinNode
Inserts a vertical Fork node.
A Join node synchronizes multiple flows defined by the Fork node.
AddDurationConstraint
A Duration defines a ValueSpecification that denotes a duration in time between a start and
endpoint. A duration is often an expression representing the number of clock ticks, which may
elapse during this duration.
ControlFlow
A Control Flow is an edge, i.e. an arrowed line, that connects two behaviours, and starts an
interaction after the previous one has been completed.
UModel supports the standard Sequence diagram defined by UML, and allows easy
manipulation of objects and messages to model use case scenarios. Please note that the
sequence diagrams shown in the following sections are only available in the Bank_Java.ump,
Bank_CSharp.ump and Bank_MultiLanguage.ump samples, in the ...\UModelExamples
folder supplied with UModel.
Note: It is now possible to generate a sequence diagram directly from source code, please see
Sequence Diagram diagram generation .
Lifelines are the horizontally aligned boxes at the top of the diagram, together with a
dashed vertical line representing the object's life during the interaction. Messages are
shown as arrows between the lifelines of two or more objects.
Messages are sent between sender and receiver objects, and are shown as labeled
arrows. Messages can have a sequence number and various other optional attributes:
argument list etc. Conditional, optional, and alternative messages are all supported.
Please see Combined Fragment for more information.
Sequence diagram and other UModel elements, can be inserted into a sequence diagram using
several methods.
Lifeline
The lifeline element is an individual participant in an interaction. UModel also allows you to
insert other elements into the sequence diagram, e.g. classes and actors. Each of these
elements appear as a new lifeline once they have been dragged into the diagram pane from the
Model Tree tab.
The lifeline label appears in a bar at the top of the sequence diagram. Labels can be
repositioned and resized in the bar, with changes taking immediate effect in the diagram tab.
You can also redefine the label colors/gradient using the "Header Gradient" combo boxes in the
Styles tab.
To create a multiline lifeline press CTRL+Enter to create a new line.
Most classifier types can be inserted into the sequence diagram. The "represents" field in the
Properties tab displays the element type that is acting as the lifeline. Dragging typed properties
onto a sequence diagram also creates a lifeline.
Lifeline attributes:
The destruction check box allows you to add a destruction marker, or stop, to the lifeline
without having to use a destruction message.
The selector field allows you to enter an expression that specifies the particular part
represented by the lifeline, if the ConnectableElement is multivalued, i.e. has a multiplicity
greater than one.
Combined Fragment
CombinedFragment
Combined fragments are subunits, or sections of an interaction. The interaction operator
visible in the pentagon at top left, defines the specific kind of combined fragment. The constraint
thus defines the specific fragment, e.g. loop fragment, alternative fragment etc. used in the
interaction.
The combined fragment icons in the icon bar, allow you to insert a specific combined fragment:
seq, alt or loop. Clicking the interactionOperator combo box, also allows you to define the
specific interaction fragment.
InteractionOperators
The combined fragment represents weak sequencing between the behaviours of the operands.
Alternatives alt
Only one of the defined operands will be chosen, the operand must have a guard expression
that evaluates to true.
If one of the operands uses the guard "else", then this operand is executed if all other guards
return false. The guard expression can be entered immediately upon insertion, will appear
between the two square brackets.
The InteractionConstraint is actually the guard expression between the square brackets.
Option opt
Option represents a choice where either the sole operand is executed, or nothing happens.
Break break
The break operator is chosen when the guard is true, the rest of the enclosing fragment is
ignored.
Parallel par
Indicates that the combined fragment represents a parallel merge of operands.
Loop loop
The loop operand will be repeated by the number of times defined in the guard expression.
Having selected this operand, you can directly edit the expression (in the loop pentagon) by
double clicking.
Negative neg
Defines that the fragment is invalid, and all others are considered to be valid.
Assert assert
Designates the valid combined fragment, and its sequences. Often used in combination with
consider, or ignore operands.
Ignore ignore
Defines which messages should be ignored in the interaction. Often used in combination with
assert, or consider operands.
Consider consider
Defines which messages should be considered in the interaction.
3. Use the same method to add the second interaction operand with the guard condition
"else".
Dashed lines separate the individual operands in the fragment.
Deleting InteractionOperands:
1. Double click the guard expression in the combined fragment element, of the diagram
(not in the Properties tab).
2. Delete the guard expression completely, and press Enter to confirm.
The guard expression/interaction operand is removed and the combined fragment is
automatically resized.
Interaction Use
InteractionUse
The InteractionUse element is a reference to an interaction element. This element allows you to
share portions of an interaction between several other interactions.
Clicking the "refersTo" combo box, allows you to select the interaction that you want to refer to.
The name of the interaction use you select, appears in the element.
Please note:
You can also drag an existing Interaction Use element from the Model Tree into the
diagram tab.
Gate
Gate
A gate is a connection point which allows messages to be transmitted into, and out of,
interaction fragments. Gates are connected using messages.
State Invariant
StateInvariant
A StateInvariant is a condition, or constraint applied to a lifeline. The condition must be fulfilled
for the lifeline to exist.
To define a StateInvariant:
1. Click the State invariant icon, then click a lifeline, or an object activation to insert it.
2. Enter the condition/constraint you want to apply, e.g. accountAmount > 0, and press
Enter to confirm.
Messages
Messages are sent between sender and receiver lifelines, and are shown as labeled arrows.
Messages can have a sequence number and various other optional attributes: argument list
etc. Messages are displayed from top to bottom, i.e. the vertical axis is the time component of
the sequence diagram.
To insert a message:
1. Click the specific message icon in the Sequence Diagram toolbar.
2. Click the lifeline, or activation box of the sender object.
3. Drag and drop the message line onto the receiver objects lifeline or activation box.
Object lifelines are highlighted when the message can be dropped.
The direction in which you drag the arrow defines the message direction. Reply
To delete a message:
1. Click the specific message to select it.
2. Press the Del. key to delete it from the model, or right click it and select "Delete from
diagram".
The message numbering and activation boxes of the remaining objects are updated.
The display changes and the connect operation is displayed in the Model Tree tab.
Please note:
Static operation names are show as underlined in sequence diagrams.
Message numbering:
UModel supports different methods of message numbering: nested, simple and none.
Simple assigns a numerical sequence to all messages from top to bottom i.e. in
the order that they occur on the time axis.
Nested uses the decimal notation, which makes it easy to see the hierarchical
structure of the messages in the diagram. The sequence is a dot-separated list of
sequence numbers followed by a colon and the message name.
Please note:
The numbering scheme might not always correctly number all messages, if ambiguous
traces exist. If this happens, adding return messages will probably clear up any
inconsistencies.
Message replies:
Message reply icons are available to create reply messages, and are displayed as dashed
arrows.
Reply messages are also generally implied by the bottom of the activation box when activation
boxes are present. If activation boxes have been disabled (Styles tab | Show Execution
Specifics=false), then reply arrows should be used for clarity.
Activating the "toggle reply messages" icon, automatically creates syntactically correct
reply messages when creating a call message between lifelines/activations boxes.
.
2. Drag the message arrow to the lifeline of an existing object to create that object.
This type of message ends in the middle of an object rectangle, and often repositions
the object box vertically.
1. Create a message between two lifelines, the receiving object being a class lifeline
(Bank)
As soon as you drop the message arrow, the message name is automatically
highlighted.
2. Enter a character using the keyboard e.g. "b".
A pop-up window containing a list of the existing class methods is opened.
3. Select an operation from the list, and press Enter to confirm e.g. collectAccountInfos.
4. Press the spacebar and press Enter to select the parenthesis character that is
automatically supplied.
A syntax helper popup now appears, allowing you to enter the parameter correctly.
Note: operations can only be created automatically when the lifeline references a class,
interface...
Message icons:
Message (Call)
Message (Reply)
Message (Creation)
Message (Destruction)
The example below shows how to automatically create a sequence diagram by using an
existing method. You can, of course, use the same approach on your own code. The method is
available in the OrgChart package which was imported using the Project | Import Source
Directory command in the tutorial. Please see Round-trip engineering (code - model - code) in
the tutorial for more information on importing code.
1. Having imported the code, right click the main method of the OrgChartTest class, in
the Model Tree and select Generate Sequence Diagram...
This opens the Sequence Diagram Generation dialog box in which you define the
generation settings.
2. Select the presentation and layout options, then click OK to generate the diagram.
The settings shown above produce the sequence diagram below.
Notes:
You can assign a special color to the non-displayable invocations.
The maximum invocation depth defines the recursion depth to be used in the
diagram.
The "Type names to ignore" option, allows you to define a comma delimited list of
types that should not appear in the sequence diagram when it is generated.
The "Operation names to ignore" option allows you define a comma delimited list of
operations that should not appear in the generated sequence diagram (initComponents
are automatically added as a default).
Adding the operation names to the list e.g. "InitComponents" causes the complete
operation to be ignored. Prepending a + character to the operation in the list e.g.
+InitComponent, causes the the operation calls to be shown in the diagram, but
without their content.
The "Split into smaller diagrams where appropriate" option automatically splits
sequence diagrams into smaller sub-diagrams, and automatically generates hyperlinks
between them for easy navigation.
Sequence diagrams are automatically updated when you update the complete UModel project.
Sequence diagrams are not updated if you update classes, or individual files, externally. You
can however change this setting by clicking on the diagram background and clicking the
"Automatic Update" checkbox.
Clicking the icon of the Automatic Update field, opens the Sequence Diagram Generation
dialog box allowing you to change the sequence diagram generation settings.
2. Select the operations that you want to generate a sequence diagram for and click OK. (
Use the Select All Public and Select All buttons where necessary.)
Clicking OK opens the Sequence Diagram Generation dialog box, in which you can
further specify the sequence diagram generation options.
3. Click OK to generate the sequence diagrams.
A sequence diagram is generated for each selected operation.
Note: you can now choose to include/exclude Getters and Setters, when generating the
sequence diagram.
2. Select the option from the context menu that you want to create a sequence diagram
from (Getter/Setter).
This opens the Sequence Diagram Generation dialog box in which you can further
specify the sequence diagram presentation settings.
Notes:
When using a reverse engineered sequence diagram as basis, ensure that the option "Show
code in notes" is selected when reverse engineering the code, so you do not lose any code
when you start the forward-engineering process again.
This is due to the fact that UML is not able to display all the language features of [Link], Java
and C# on the sequence diagram, and those code sections are therefore shown as code notes.
If a Sequence Diagram is to be used for code engineering automatically every time code
engineering is started:
Activate the "Use for forward engineering" check box in the property pane when the
sequence diagram is selected.
Old code will always be lost when forward engineering code from a sequence diagram, because
it will be overwritten with the new code.
Project menu:
1. Select the menu option Project | Generate Code from Sequence Diagrams.
You are now prompted to select the specific Sequence Diagram(s).
Clicking the "Select All" button selects all the Sequence Diagrams in the UModel
project.
2. Click OK to generate the code.
The Messages window shows the status of the code generation process.
Model Tree:
Right click a Sequence Diagram and select Generate Code from Sequence diagram.
You will then be prompted if you want to use the new diagram for forward engineering.
The result is a new Sequence Diagram containing the lifeline of that class.
For those programming statements that have no corresponding sequence diagram elements, e.
g. "i = i+1", UModel makes use of "code" notes to add code to diagrams. These notes must then
be linked to the lifeline.
Note that UModel does not check, or parse, these code fragments. It is up to you to make sure
that the code fragments are correct and will compile.
1. Click the Note icon then click the model element where you want to insert it, e.g.
CombinedFragment.
2 Enter the code fragment, e.g. return.
3. Click the Node Link handle of the inserted note and drop the cursor on the lifeline.
4. Activate the "Is Code" check box in the Properties tab to include this code fragment
when generating code.
When selecting a note on a sequence diagram, which can be used for code generation, the
property "is code" is available in the Properties window. Clicking the check box, allows you to
switch between "ordinary" notes and code generation notes.
Ordinary notes:
Code generation
notes - shown with a darker dog-ear
Code updates occur automatically on every forward engineering process if the "Use for forward
engineering" check box is active. If changes were made to the sequence diagram, the code of
the operation is always overwritten.
The sequence diagram shown below was generated by right clicking the OnCommand
operation and selecting "Generate sequence diagram from code". The C# code of this example
is available in the c:\Documents and Settings\<user>\My Documents\Altova\UModel2012
\UModelExamples\IDEPlugIn\Styles\ folder. Use the option Project | Import Source Project, to
import the project.
if (!m_bPlugINVersionOK)
{
return;
}
if (nID == 3 || nID == 6)
{
OnSetStyles((IApplication)pUModel, "red");
}
if (nID == 4 || nID == 7)
{
OnSetStyles((IApplication)pUModel, "green");
}
[Link]();
Timing diagrams depict the changes in state, or condition, of one or more interacting objects
over a given period of time. States, or conditions, are displayed as timelines responding to
message events, where a lifeline represents a Classifier Instance or Classifier Role.
A Timing diagram is a special form of a sequence diagram. The difference is that the axes are
reversed i.e. time increases from left to right, and lifelines are shown in separate vertically
stacked compartments.
Timing diagrams are generally used when designing embedded software or real-time systems.
There are two different types of timing diagram: one containing the State/Condition timeline as
shown above, and the other, the General value lifeline, shown below.
Lifeline
or Lifeline
The lifeline element is an individual participant in an interaction, and is available in two different
representations: State/Condition timeline or General Value lifeline. To create a multiline lifeline
press CTRL+Enter to create a new line.
1. Click the Lifeline (State/Condition) icon in the title bar, then click in the Timing
Diagram to insert it.
2. Enter the lifeline name to change it from the default name, Lifeline1, if necessary.
3. Place the mouse cursor over a section of one of the timelines and click left. This selects
the line.
4. Move the mouse pointer to the position you want a state change to occur, and click
again.
Note that you will actually see the double headed arrow when you do this.
A red box appears at the click position and divides the line at this point.
5. Move the cursor to the right hand side of the line and drag the line upwards.
Note that lines can only be moved between existing states of the current lifeline.
Any number of state changes can be defined per lifeline. Once the red box appears on
a line, clicking anywhere else in the diagram deletes it.
This changes the display to the General Value lifeline, the cross-over point represents a
state/value change.
Please note that clicking the Lifeline (General Value) icon , inserts the lifeline as
shown above. You can switch between the two representations at any time.
Grouping lifelines
Placing, or stacking lifelines, automatically positions them correctly and preserves any tick
marks that might have been added. Messages can also be created between separate lifelines
by dragging the respective message object.
Tick Mark
TickMark
The tick mark is used to insert the tick marks of a timing ruler scale onto a lifeline.
To insert a TickMark:
1. Click the tick mark icon and click on the lifeline to insert it.
2. Insert multiple tick marks by holding down the CTRL key and repeatedly clicking at
different positions on the lifeline border.
3. Enter the tick mark label in the field provided for it.
Drag tick marks to reposition them on the lifeline.
Event/Stimulus
Event / Stimulus
The Event/Stimulus ExecutionEvent is used to show the change in state of an object caused by
the respective event or stimulus. The received events are annotated to show the event causing
the change in condition or state.
To insert an Event/Stimulus:
1. Click the Event/Stimulus icon, then click the specific position in the timeline where the
state change takes place.
2. Enter a name for the event, in this example the event is "Code".
Note that the event properties are visible in the Properties tab.
DurationConstraint
DurationConstraint
A Duration defines a ValueSpecification that denotes a duration in time between a start and
endpoint. A duration is often an expression representing the number of clock ticks, which may
elapse during this duration.
To insert an DurationConstraint:
1. Click the DurationConstraint icon, then click the specific position on the lifeline where
the constraint is to be displayed.
The default minimum and maximum values, "d..t", are automatically supplied. These
values can be edited by double clicking the time constraint, or by editing the values in
the Properties window.
2. Use the "handles" to resize the object if necessary.
TimeConstraint
TimeConstraint
A TimeConstraint is generally shown as graphical association between a TimeInterval and the
construct that it constrains. Typically this graphical association between an EventOccurrence
and a TimeInterval.
To insert a TimeConstraint:
1. Click the TimeConstraint icon, then click the specific position on the lifeline where the
constraint is to be displayed.
The default minimum and maximum values are automatically supplied, "d..t"
respectively. These values can be edited by double clicking the time constraint, or by
editing the values in the Properties window.
Message
Messages are sent between sender and receiver timelines, and are shown as labeled arrows.
To insert a message:
1. Click the specific message icon in the toolbar.
2. Click anywhere on the timeline sender object e.g. Idle.
3. Drag and drop the message line onto the receiver objects timeline e.g. NoCard.
Lifelines are highlighted when the message can be dropped.
The direction in which you drag the arrow defines the message direction. Reply
messages can point in either direction.
Having clicked a message icon and holding down CTRL, allows you to insert multiple
messages by repeatedly clicking and dragging in the diagram tab.
To delete a message:
Structural Diagrams
Class Diagram
Component Diagram
Composite Structure Diagram
Deployment Diagram
Object Diagram
Package Diagram
Profile Diagram
You can choose between the UModel type shown above, or the UML conformant
symbols shown below.
Right click a class, e.g. SavingsAccount, and select the menu option Show/Hide Node content
.
Deselecting a protected checkbox in the Attributes group, deselects the protected attributes in
the preview window.
Having confirmed with OK, the protected attributes in the class are replaced with ellipsis "...".
Double clicking the ellipsis opens the dialog box.
Note that individual attributes can be affected by only deselecting the check box in the preview
window.
The "When new elements are added and not hidden by Element Styles" option allows you to
define what will be made visible when new elements are added to the class. Elements can be
added manually in the model diagram and in the Model Tree, or automatically during the code
engineering process.
Show elements: displays all new elements that are added to any view of the class.
E.g. The interestRate:float attribute has been hidden in both "views" of SavingsAccount, leaving
the minimumBalance attribute visible. The "Show elements" radio button is active for the left-
hand class.
Double clicking the ellipsis "..." in the attribute compartment of the left-hand class shows that
the "Show elements" radio button is active.
Double clicking the ellipsis "..." in the attribute compartment of the right-hand class shows that
the "Hide elements (except those added to this node)" radio button is active.
Clicking the left-hand class and pressing F7, (or clicking the class in the Model Tree and
pressing F7) adds a new attribute (Property1) to the class.
The new element is only visible in the left-hand class, because "Show elements" is set as
active. The right-hand class setting is "Hide elements...", so the new element is not shown
there.
Clicking the right-hand class and pressing F7 adds a new attribute (Property2) to the class.
This new attribute is now visible because the Hide elements... setting has the qualifier "except
those added to this node", where "node" generically means this class, or modelling element.
The Property2 attribute is also visible in the left hand class, because the setting there is "Show
elements"
Please note:
Tagged values of hidden elements are also hidden when you select the hide option.
operations of a class. This can be done from the Model Tree, Favorites tab, or in Class
diagrams.
1. Right click one of the derived classes in the class diagram, e.g. CheckingAccount, and
select Override/Implement Operations.
This opens the Overriden Methods dialog box shown below.
2. Select the Operations that you want to override and confirm with OK.
The "Select undefined..." buttons select those method types in the window at left.
Please note:
When the dialog box is opened, operations of base classes and implemented interfaces
that have the same signature as existing operations, are automatically checked (i.e.
active).
A popup appears at this point allowing you to decide what type of get/set method you
want to create.
Selecting the first item creates a get and set method for interestRate:float.
The Create Getters/Setters dialog box opens displaying all attributes available in the
currently active class.
2. Use the buttons to select the items as a group, or click the getter/setter check boxes
individually.
Please note:
You can also right click a single attribute and use the same method to create an
operation for it.
In the shots shown above, Class2 realizes Interface1, which is used by classes 1, 3, and 4. The
usage icons were used to create the usage relationship between the classes and the interface.
This adds the raised exceptions field to the Properties window, and automatically
selects the first entry in the popup menu.
3. Select an entry from the popup, or enter your own into the field.
The Composite Structure Diagram has been added in UML 2.0 and is used to show the internal
structure, including parts, ports and connectors, of a structured classifier, or collaboration.
Collaboration
Inserts a collaboration element which is a kind of classifier/instance that communicates with
other instances to produce the behavior of the system.
CollaborationUse
Inserts a Collaboration use element which represents one specific use of a collaboration
involving specific classes or instances playing the role of the collaboration. A collaboration use
is shown as a dashed ellipse containing the name of the occurrence, a colon, and the name of
the collaboration type.
When creating dependencies between collaboration use elements, the "type" field must be filled
to be able to create the role binding, and the target collaboration must have at least one part/
role.
Part (Property)
Inserts a part element which represents a set of one or more instances that a containing
classifier owns. A Part can be added to collaborations and classes.
Port
Inserts a port element which defines the interaction point between a classifier and its
environment, and can be added on parts with a defined type.
Class
Inserts a Class element, which is the actual classifier that occurs in that particular use of the
collaboration.
Connector
Inserts a Connector element which can be used to connect two or more instances of a part, or a
port. The connector defines the relationship between the objects and identifies the
communication between the roles.
Packages are depicted as folders and can be used on any of the UML diagrams, although they
are mainly used on use-case and class diagrams.
Dependency links between packages are created if there are any references between the
modeling elements of those packages. E.g. Dependencies between classes, derived classes, or
if attributes have types that are defined in a different package.
A new diagram is generated and displays the package dependencies of the altova
package.
Inserting Package Diagram elements
Using the toolbar icons:
1. Click the specific icon in the Package Diagram toolbar.
Package
Inserts the package element into the diagram. Packages are used to group elements and also
to provide a namespace for the grouped elements. Being a namespace, a package can import
individual elements of other packages, or all elements of other packages. Packages can also be
merged with other packages.
Profile
Inserts the Profile element, which is a specific type of package that can be applied to other
packages.
The Profiles package is used to extend the UML meta model. The primary extension construct
is the Stereotype, which is itself part of the profile. Profiles must always be related to a
reference meta model such as UML, they cannot exist on their own.
Dependency
Inserts the Dependency element, which indicates a supplier/client relationship between
modeling elements, in this case packages, or profiles.
PackageImport
Inserts an <<import>> relationship which shows that the elements of the included package will
be imported into the including package. The namespace of the including package gains access
to the included namespace; the namespace of the included package is not affected.
PackageMerge
Inserts a <<merge>> relationship which shows that the elements of the merged (source)
package will be imported into the merging (target) package, including any imported contents the
merged (source) package.
If the same element exists in the target package then these elements' definitions will be
expanded by those from the target package. Updated or added elements are indicated by a
generalization relationship back to the source package.
Note: elements defined as "private" within a package, cannot be merged or imported.
ProfileApplication
Inserts a Profile Application which shows which profiles have been applied to a package. This is
a type of package import that states that a Profile is applied to a Package.
The Profile extends the package it has been applied to. Applying a profile, using the
ProfileApplication icon, means that all stereotypes that are part of it, are also available to the
package.
Profile names are shown as dashed arrows from the package to the applied profile, along with
the <<apply>> keyword.
The UModel Profile diagram allows you to define custom stereotypes, tagged values and
constraints in a dedicated diagram.
Profiles and stereotypes are used to extend the UML meta model. The primary extension
construct is the Stereotype, which is itself part of the profile. Profiles must always be related to a
reference meta model such as UML, they cannot exist on their own. UModel now supports the
Profile Diagram in which you can define your own stereotypes.
The Java [Link] (C# [Link], or VB [Link]) file need to be applied when creating
new UModel projects using the menu item Project | Include Subproject. This profile
supplies the Java datatypes and stereotypes, and is essential when creating code for
round-trip engineering.
The Bank_CSharp.ump sample file (in the ...\UModelExamples folder) shows how this is
done. The C# profile has been applied to the BankView package.
Profiles are specific types of packages, that are applied to other packages.
Stereotypes are specific metaclasses, that extend standard classes.
"Tagged values" are values of stereotype attributes.
A ProfileApplication shows which profiles have been applied to a package, and is a type of
package import that states that a Profile is applied to a Package. The Profile extends the
package it has been applied to. Applying a profile, using the ProfileApplication icon , means
that all stereotypes that are part of it, are also available to the package.
ProfileApplications are shown as dashed arrows from the package to the applied profile, along
with the <<apply>> keyword.
Stereotypes:
A stereotype defines how an existing metaclass may be extended. It is a kind of class that
extends Classes through Extensions. Stereotypes can only be created in Profiles. Stereotypes
are displayed as classes, in class diagrams, with the addition of the keyword <<stereotype>>
added above the name of the class.
2. Right click the MyProfile package in the Model Tree and select New Diagram | Profile
diagram.
This adds the Profile diagram to the selected package.
2. Drag the newly created profile "MyProfile", from the Model Tree into the new Profile
diagram.
3. Drag the DesignView package into the Profile diagram as well.
4. Click the ProfileApplication icon in the icon bar, select the DesignView package
and drag the connector onto the MyProfile package.
This allows the stereotypes defined in this profile (MyProfile) to be used in the
DesignView package, or any of its subpackages.
5. Click the stereotype icon in the icon bar and insert a stereotype "class", e.g.
MyKeyValuePair.
6. Press F7 to add an attribute to the stereotype e.g. MyKey1. Do the same thing to add
MyKey2.
This concludes the definition of the stereotype for the moment. We can now use/
assign the stereotype when adding an attribute to a class which is part of the BankView
package.
This opens the class diagram and displays the associations between the various
classes. We now want to add an attribute to the BankView class, and assign/use the
previously defined stereotype.
2. Click the BankView class and press F7 to add an attribute.
3. Use the scrollbar of the Properties tab to scroll to the bottom of the list. Notice that the
MyKeyValuePair stereotype is available in the list box.
4. Click the MyKeyValuePair check box to activate/apply it. The two tagged values
MyKey1 and MyKey2, are now shown under the Stereotype entry.
5. Double click in the respective fields and enter some values.
The diagram tab now displays the tagged values in the Note element. Double clicking a
value in the note element allows you to edit it directly.
Please note:
When hiding attributes or operations using the "Show / Hide node content" context
menu option, tagged values are also shown/hidden together with the modeling element.
Association (member) ends can display stereotypes by setting the Show MemberEnd
stereotypes option to "true" in the Styles tab.
For more information on displaying tagged values see Displaying tagged values.
Click the diagram tab containing the stereotype definition (i.e. the previously added Profile
diagram):
1. Click the Enumeration icon in the icon bar to insert an enumeration into the
diagram (containing the previously defined stereotype e.g. ProfileDiagram1).
2. Add EnumerationLiterals to the enumeration by pressing SHIFT+F7, or use the
context menu, e.g. the EnumerationLiterals - Yes, and No.
3. Click the stereotype "class" and press F7 to add a new attribute/property, e.g. Finished.
4. Select the "MyEnum" type from the Properties tab.
Double clicking the Finished tagged value, presents the predefined enumeration values
in a popup. Click one of the enumerations to select it.
Clicking the stereotype class automatically displays the stereotype styles in the Styles
tab.
4. Switch to a different Class Diagram and insert a new class.
5. Click the Class Header/Title and activate the MyKeyValuePair stereotype check box.
The new class now has the styles that were assigned to the stereotype i.e. an aqua
gradient. Note that the stereotype styles are not applied if the stereotype is applied to
an property or operation within the class.
6. Click the new stereotype class in the diagram then click the Styles tab.
7. Select the "Appled Stereotype Styles" entry in the Styles combo box.
You can now preview the style settings defined for this stereotype in the Styles window.
Note that you cannot change the style settings here. This must be done in the class
diagram in which the stereotype was defined.
7. Right click the MyProfile package and select New Diagram | Class diagram.
2. Click the Profile-Application icon in the tool bar, and drag the connector from
MyPackage to MyProfile.
3. Click the stereotype icon in the toolbar and click in the MyProfile package to insert
it.
While the stereotype element is active, make the following changes in the Properties tab:
4. Change the name of the element from Stereotype1 to "node".
5. Change the metaclass property value from Element to "Node".
6. Enter a path for the image that you want to use as the stereotype icon in the "icon file
name" field, or click the Browse button to select a path, e.g. c:\Documents and
Settings\Me\My Documents\Altova\UModel2011\UModelExamples\[Link].
The representation of the stereotype icon has now changed to that of the selected
bitmap.
Please note:
When displaying the custom icons the RGB color 82,82,82 is the backgrougd
transparent color.
XML Schema
XML Schema diagrams display schema components in UML notation. Global elements i.e.
elements, simpleTypes, complexTypes are shown as classes, or datatypes, with attributes in
the attributes compartment.
There are no operations in the Operation compartment. The Tagged Value note modeling
element is used to display the schema details.
To see how the UML elements and XML schema elements/attributes are mapped, navigate to
XML Schema to/from UModel elements.
Please note:
Invalid XML Schemas cannot be imported into UModel. XML Schemas are not
validated when importing, or creating them in UModel. XML Schemas are also not
taken into account during the project syntax check. A well-formed check is however
performed when importing an XML schema.
2. Make sure that the Enable diagram generation check box is active and click Next, to
continue.
3. Define the Content diagram options in the group of that name. The first option creates a
separate diagram for each schema global element.
4. Select the compartments that are to appear in the class diagrams in the Style group.
The "Show schema details as tagged values" option displays the schema details in the
Tagged Value note modeling element.
5. Click Next to define the Package dependency diagram.
Please note:
A new package called All Schemas was created and set as the XSD Namespace Root. All XSD
globals generate an XML Schema diagram, with the diagrams under the respective namespace
packages.
2. Activate the "Process all subdirectories" if you want to import Schemas from all
subdirectories.
The rest of the import process follows the sequence of importing a single XML schema
described above.
Please note:
If an XML schema includes or imports other schemas, then these schemas will be
Note:
Selecting the tagged values from the Styles tab sets the the tagged value settings project wide.
Right clicking a class and selecting Tagged values | all etc., only affects the individually marked
classes.
Please note:
Either method described above, applies to any of the XML Schema elements that can be
inserted onto the diagram.
Inserts/defines the target namespace for the schema. The XSD Target Namespace must
belong to an XSD Namespace Root package.
XSD Schema
Inserts/defines an XML schema. The XSD schema must belong to an XSD Target Namespace
package.
Element (global)
Inserts a global element into the diagram. Note that a property is also automatically generated in
the attributes compartment.
1. Click the XSD ComplexType icon , then click in the diagram to insert it.
2. Double click the name and change it to Address.
5. Right click the sequence class and select New | XSD Element (local).
This adds a new property element.
6. Double click the property, enter the element name, e.g. Name, add a colon ":" and enter
"string" as the datatype.
7. Do the same for the two more elements naming them Street and City for example.
8. Click the Name property and drag it into the diagram.
2. Right click the new package and select the menu option Code Engineering | Set as
XSD namespace root.
You are asked if you want to assign the XSD profile if this is the first XSD Namespace
root in the project.
3. Click OK to assign the profile.
4. Right click the new package and select New Element | Package.
5. Double click in the package name field and change it to the namespace you want to
use, e.g. [Link]
6. Click the <<namespace>> check box in the Properties tab, to define this as the target
namespace.
7. Right click the namespace package and select New diagram | XML Schema diagram.
You prompted if you want to add the Schema diagram to a new XSD Schema.
8. Click Yes to add the new diagram.
You can now create your schema using the icons in the XML Schema icon bar.
2. Make sure that you set the code language, of the component, to XSD1.0, and enter a
path for the generated schema to be placed in, e.g. C:\schemacode\[Link].
3. Select the menu option Project | Overwrite Program Code from UModel project, and
click OK to generate the schema.
The top-level project i.e. the project from which the subprojects can be included, is called the
main project. Subprojects are created on the package level as individual UModel project files
and have a *.ump extension.
Subprojects can be structured in any way that you wish, in a flat or hierarchical structure, or a
combination of both. This makes it theoretically possible to split off every package of a main
project, into read-only/editable subproject files.
This also applies to UML diagrams, they can also be edited at the main, or subproject, level.
Please note:
UModel allows you to share packages and UML diagrams they might contain, between different
projects. Packages can be included in other projects by reference, or as a copy. Please see
Sharing Packages and Diagrams for more information.
3. Select "Editable" to be able to edit the subproject from the main project. (Selecting
Read-only makes it uneditable in the main project.) Then click OK.
The name of the subproject file is shown in square brackets next to the package name
and the file Banking [Link] file is placed in the UModelExamples
\Bank_MultiLanguage_Java folder.
The same method is used to create a subproject of the BankView folder. The
[Link] file is placed in the ...\UModelExamples\Bank_MultiLanguage_Java\
folder.
Please note:
The file path of the subproject can be changed at any time by right clicking the
1. Right click the subproject package (e.g. Bank [Link]) in the main project and
select Project | Open as Project.
This starts another instance of UModel and opens the subproject as a "main" project.
Any unresolved references are shown in the Messages window.
Reusing subprojects
Subprojects that have been split off from a main project can be used in any other main
project(s).
1. Right click a project and select Project | Inlcude Subproject.
2. Click the Browse button and select the *.ump file that you want to include, e.g. Banking
[Link].
Saving projects
When saving the main project file, all editable subproject files are also saved. I.e. all data
contained in the shared packages of the subproject files are saved.
You should therefore not create/add data (components) outside of the shared/subproject
structure, if the subproject is defined as "editable" in a main project file. If data exists outside of
the subproject structure, a warning message will be displayed in the Messages window.
If sub1 was opened as a "main" project, then it is considered as a self contained project and
can be edited without any reference to the actual main project.
2. Select the style option that you want to use, then click OK to include the project again.
12 Source Control
Since your Altova application implements the Microsoft Source Code Control Interface
(MSSCCI) v1.1 – v1.3, multiple source control systems are supported, including Microsoft
SourceSafe and other compatible repositories.
Note: The 64-bit version of your Altova application automatically supports any of the
supported 32-bit source control programs listed in this documentation. When using a
64-bit Altova application with a 32-bit source control program, the Perform background
status updates every... ms option (Tools | Options) is automatically grayed-out and
cannot be selected!
HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider\InstalledSCCProviders
Note that Source Control (SC) plug-ins are not automatically installed by all SC products.
Please read the documentation supplied with your specific SC software for more information
about plug-ins.
Note that a Source Control project is not the same as a UModel project. Source Control projects
are directory dependent, whereas UModel projects are logical constructions without direct
directory dependence.
The Visual Studio and Eclipse versions of UModel now support the Source Control functions
and menu items, and these are available in the respective IDE.
In this section
This section is organized as follows:
Setting up Source Control, which lists source control systems supported by Altova
together with installation notes and other relevant issues.
Source Control Commands contains individual descriptions of each command in the
submenu, Project | Source Control.
AccuRev
Version: AccuRev 4.7.0 Windows
Clients: AccuBridge for Microsoft SCC 2008.2
Bazaar
Version: Bazaar 1.9 Windows
Clients: Aigenta Unified SCC 1.0.6
Mercurial
Version: Mercurial 1.0.2 for Windows
Clients: Sergey Antonov HgSCC 1.0.1
Perforce 2008
Version: P4S 2008.1
Clients: Perforce P4V 2008.1
PureCM
Version: PureCM Server 2008/3a
Clients: PureCM Client 2008/3a
Serena Dimensions
Version: Dimensions Express/CM 10.1.3 for Win32 Server
Clients: Serena Dimensions 10.1.3 for Win32 Client
Softimage Alienbrain
Version: Alienbrain Server 8.1.0.7300
Clients: Softimage Alienbrain Essentials/Advanced Client 8.1.0.7300
SourceGear Fortress
Version: 1.1.4 Server
Clients: SourceGear Fortress 1.1.4 Client
SourceGear SourceOffsite
Version: SourceOffsite Server 4.2.0
Clients: SourceGear SourceOffsite Client 4.2.0 (Windows)
SourceGear Vault
Version: 4.1.4 Server
Clients: SourceGear Vault 4.1.4 Client
The examples in this section use the Bank_CSharp.ump UModel project (and associated code
files) available in the C:\Documents and Settings\<username>\My
Documents\Altova\UModel2014\UModelExamples\ folder.
A Source Control project is, however, not the same as a UModel project. Source Control
projects are directory dependent, whereas UModel projects are logical constructions without
direct directory dependence.
1. To install ComponentSoftware CS-RCS (PRO) start the setup and choose the option
“Workstation Setup”.
2. Specify your repository tree root and when the installation is finished, restart your
machine as requested.
3. Use the “ComponentSoftware RCS Properties” to choose, or create, a project and to
specify a work folder.
To integrate with Altova products, it is sufficient to install only the client. Check only the client
check box.
Provide a server name and the license server element(s) following the examples
provided by the installer (port@server_name).
Provide a configuration description name by editing a name you like and insert the path
to a Release area. This path must specify a shared folder.
You can create a new folder on your machine, share it, and use it as a Release Area. (
In Vista, you must set the Network discovery to "on" in Network and Sharing Center to
set this path.) The Release Area is now created, some files are copied into it and a
shortcut is created with the name [Link].
When all files are copied, continue by clicking the shortcut from Windows Explorer. A
In Vista, the second setup could generate the internal error: 2739. In this case, start Windows
Explorer and go to C:\Windows\System32.
Right click and run “[Link]” “As Administrator”. A command window pops up.
Type “regsvr32 [Link]”.
Launch the setup again.
To work with files stored in ClearCase, you should create a view that points to your ClearCase
project.
When working with Altova products, setting the “Auto Commit” Mode is recommended.
Auto Commit Mode is found in the advanced Source Control options.
After defining a workspace, you can start to work.
Mercurial
see under Sergey Antonov HgScc 1.0.1
[Link]
The Perforce Visual Client (P4V) offers a choice:
To install all client features (default behavior)
To install only the “SCC Plug-in (P4SCC)” feature.
The default installation will work correctly with all Altova products.
To install Qumasoft QVCS-Enterprise client, run the installer. If your operating system is Vista,
you must modify the installation directory from the default value “C:\Program
Files\QVCS-Enterprise Client” to “C:\QVCS-Enterprise Client”. This must be done as Vista does
not let applications write to the C:\Program Files area. Edit the “[Link]” file that resides in
the installation directory so that the JAVA_HOME environment variable points to the location of
your JVM.
If you work with Vista you might have problem when saving the file.
1. If this is the case, start Windows Explorer and go to C:\Windows\System32.
2. Right click and run “[Link]” “As Administrator”.
3. A command window pops up.
4. Type “cd <installation folder of the QVCS –Enterprise client>”
5. Type “Notepad [Link]” and then edit the file and save it.
6. From the installation directory of the Qumasoft QVCS-Enterprise client run the batch file
“[Link]”.
7. Add a server from the “Server menu” specifying the requested name, IP address and
ports, log in and define a local workspace.
If your operating system is Vista, you must modify the installation directory from the
default value “C:\Program Files\QVCSBin“ to “C:\QVCSBin”. This must be done as
Vista does not let applications write to the C:\Program Files area.
After installation is finished, launch the QVCS 3.10 client, create a new user and
enable Ide integration by selecting the submenu “Ide Integration” in the Admin menu
and adding QVCS as a Version Control Tool.
Create a project and set a workspace.
When using a 64-bit version of an Altova application with a 32-bit source control program, the
Perform background status updates every xx ms option (Tools | Options) is automatically
grayed-out and cannot be selected!
The Perform background status updates every xx ms check box is unchecked per default,
which means that status updates are not performed at all. Activate the check box and enter a
value in the field, if you want to perform status updates every xx ms. For 64-bit versions using
32-bit source control plugins, this option has no effect.
In the Source Control tab, select the required Source Control System and then click the
Advanced button. The dialog box that opens will be different for each Source Control System.
For the setup process, note the following:
If you have performed a standard installation of Altova DiffDog, the file path to the
Altova DiffDog executable is:
c:\program files\altova\diffdog2014\[Link]
If Altova DiffDog is installed elsewhere on your system, insert the appropriate value
when the filepath is required.
Do not use DiffDog to merge UModel project files (*.ump).
applications's Source Control tab (Tools | Options | Source Control) or via the source control
application.
Warning: Do not perform these settings from the Altova product options, as there is no
possibility of inserting the external application parameters.
Warning: DiffDog will only work with Altova UModel's ump files if the Type is set to “Mergeable",
in Properties. It is possible to set this property In UModel by executing the command “Show
Properties” and setting it in the “General” section. But this must be repeated for every ump file.
It is better to define this in the Dynamsoft SourceAnywhere Standalone Server Manager. Select
your repository, then Mergeable File Types, and add "ump". The new setting is now applied to
all ump files.
Warning: When using the default diff editor CvsConflictEditor, you might have problems
comparing files with excessively long lines. We recommended that you "pretty print" all files
(particularly .ump files) before storing them in the repository. This limits the line length, thus
avoiding problems with the CVSConflictEditor.
Mercurial
see under Sergey Antonov HgScc 1.0.1
Warning: When using the default differencing editor CvsConflictEditor, you might have
problems comparing files with excessively long lines. We recommended that you "pretty print"
all files (particularly .ump files) before storing them in the repository. This limits the line length,
thus avoiding problems with the CVSConflictEditor.
Warning: It is possible that the new settings will only be applied after a Windows log off.
variable.
2. Use the QVCS Enterprise User Preferences.
3. In Utilities, enable the checkbox, Use External Visual Compare Tool.
4. Specify as Visual Compare Command Line:
<DiffDog full path> “file1Name file2Name”
2. Specify as “External Programs”, “Application for comparing files” the DiffDog full path.
Warning: The default differencing editor CvsConflictEditor, has problems comparing files with
excessively long lines. We recommended that you "pretty print" all files (particularly .ump files)
before storing them in the repository. This limits the line length, avoiding problems with the
CVSConflictEditor.
The description of the version control commands that follow, only apply to the standalone
version of UModel. The Visual Studio and Eclipse versions of UModel, use the version control
functionality, and menu items, available in those IDEs.
The BankCSharp directory has been created locally, you can now work with these files
as you normally would.
Note:
To place the code files generated when synchronizing code, under source control
please see: Add to Source Control
or
The lock symbol denotes that the file, or folder is under source control, but is currently not
checked out.
or
The red check mark denotes checked out, i.e. the UModel project file (or code file) has been
checked out for editing. The asterisk in the Application title bar denotes that changes have been
made to the file, and you will be prompted to save it when you exit.
or
The arrow symbol shows that the file(s) have been checked out by someone else in the
network, or by you into a different working directory
You are now prompted if you want to remove the binding information from the project.
This command works in a similar fashion to the Get command, but does not display the "Source
control - Get" dialog box. It is therefore not possible to specify Advanced get options.
Note that this command automatically performs a recursive get latest version operation when
performed on a folder, i.e. it affects all other files below the current one in the package
hierarchy.
12.2.4 Get
Retrieves a read-only copy of the selected files and places them in the working folder. The files
are not checked-out for editing per default.
Select All
Selects all the files in the list box.
Advanced
Allows you to define the Replace writable and Set timestamp options in the respective combo
boxes.
The "Make writable" check box removes the read-only attribute of the retrieved files.
Advanced
Allows you to define the Replace writable and Set timestamp options in the respective combo
boxes.
The "Make writable" check box removes the read-only attribute of the retrieved files.
Note:
You can change the number of files to check out, by activating the individual check
boxes in the Files list box.
or
The red check mark denotes that the file/folder has been checked out.
Advanced
Allows you to define the Replace writable and Set timestamp options in the respective combo
boxes.
The "Make writable" check box removes the read-only attribute of the retrieved files.
12.2.7 Check In
This command checks in the previously checked out files, i.e. your locally updated files, and
places them in the source control database.
To Check In files:
Select the files in the Model Tree
Select Project | Source Control | Check In.
Shortcut: Right-click a checked out item in the project window, and select "Check in" from the
Context menu.
Note:
You can change the number of files to check in, by activating the individual check boxes
in the Files list box.
, or
The lock symbol denotes that the file/folder is under source control, but is currently not
checked out.
Note:
You can change the number of files by activating the individual check boxes in the Files
list box.
The Undo check out option can apply to the following items:
Single files, click on the respective files (CTRL + click, in Model Tree)
Folders, click on the folders (CTRL + click, in Model Tree)
Advanced
Allows you to define the Replace writable and Set timestamp options in the respective combo
boxes.
The "Make writable" check box removes the read-only attribute of the retrieved files.
Having placed the UModel project file (*.ump) under source control, you can then add the code
files, produced by the code-engineering process, to source control as well. The working
directory used in this section is c:\temp\ssc\Bank_CSharp.
Please note that for this to work, the generated code files and the UModel project have to be
placed in, or under, the same SourceSafe working directory.
E.g. ...\Bank_CSharp
1. Expand the Component View folder in the Model Tree and Navigate to the BankView
component.
2. Click the BankView component and click the Browse icon next to the "directory" field in
the Properties window.
9. Click OK once you have selected the files you want to place under source control.
The lock symbol now appears next to each of the classes/file sources placed under
source control.
Note:
You can change the number of files to remove, by activating the individual check boxes
in the Files list box.
3. Select the file you want to share in the "Files to share" list box and click the Share
button.
The file is now removed from the "File to share" list.
4. Click the Close button to continue.
This dialog box is provides various way of comparing and getting specific versions of
the file in question. Double clicking an entry in the list opens the History Details dialog
box for that file.
Close
Closes this dialog box.
View
Opens a further dialog box in which you can select the type of viewer you want to see
the file with.
Details
Opens a dialog box in which you can see the properties of the currently active file.
Get
Allows you to retrieve one of the previous versions of the file in the version list, and
place it into the working directory.
Check Out
Allows you to check out the latest version of the file.
Diff
Opens the Difference options dialog box, which allows you to define the difference
options when viewing the differences between two file versions.
Use CTRL+Click to mark two file versions in this window, then click Diff to view the
differences between them.
Pin
Pins or unpins a version of the file, allowing you to define the specific file version to use
when differencing two files.
Rollback
Rolls back to the selected version of the file.
Report
Generates a history report which you can send to the printer, file, or clipboard.
Help
Opens the online help of the source control provider plugin.
If you have "pinned" one of the files in the history dialog box, then the pinned file will be used in
the "Compare" text box. Any two files can be selected using the Browse buttons.
The differences between the two files are highlighted in both windows (this example
uses MS SourceSafe).
Add
Action (CallBehaviorAction)
Action (CallOperationAction)
AcceptEventAction
AcceptEventAction (TimeEvent)
SendSignalAction
DecisionNode (Branch)
MergeNode
InitialNode
ActivityFinalNode
FlowFinalNode
ForkNode (vertical)
ForkNode (horizontal)
JoinNode
JoinNode (horizontal)
InputPin
OutputPin
ValuePin
ObjectNode
CentralBufferNode
DataStoreNode
ActivityPartition (horizontal)
ActivityPartition (vertical)
ActivityPartition 2-Dimensional
ControlFlow
ObjectFlow
ExceptionHandler
Activity
ActivityParameterNode
StructuredActivityNode
ExpansionRegion
ExpansionNode
InterruptibleActivityRegion
Note
Note Link
Relationship:
Association
Aggregation
Composition
AssociationClass
Dependency
Usage
InterfaceRealization
Generalization
Add:
Package
Class
Interface
Enumeration
Datatype
PrimitiveType
Profile
Stereotype
ProfileApplication
InstanceSpecification
Note
Note Link
Add
Lifeline
Message (Call)
Message (Reply)
Message (Creation)
Message (Destruction)
Note
Note Link
Add
Collaboration
CollaborationUse
Part (Property)
Class
Interface
Port
Relationship
Connector
Dependency (Role Binding)
InterfaceRealization
Usage
Note
Note Link
Add:
Package
Interface
Class
Component
Artifact
Relationship:
Realization
InterfaceRealization
Usage
Dependency
Note
Note Link
Add:
Package
Component
Artifact
Node
Device
ExecutionEnvironment
Relationship:
Manifestation
Deployment
Association
Generalization
Dependency
Note
Note Link
Add
CallBehaviorAction (Interaction)
CallBehaviorAction (InteractionUse)
DecisionNode
MergeNode
InitialNode
ActivityFinalNode
ForkNode
ForkNode (Horizontal)
JoinNode
JoinNode (Horizontal)
DurationConstraint
Relationship
ControlFlow
Note
Note Link
Relationship:
Association
AssociationClass
Dependency
Usage
InterfaceRealization
Generalization
Add:
Package
Class
Interface
Enumeration
Datatype
PrimitiveType
InstanceSpecification
Note
Note Link
Add
Package
Profile
Relationship
Dependency
PackageImport
PackageMerge
ProfileApplication
Note
Note Link
Add
Profile
Stereotype
Relationship
Generalization
ProfileApplication
PackageImport
ElementImport
Note
NoteLink
Add
Simple state
Composite state
Orthogonal state
Submachine state
FinalState
InitialState
EntryPoint
ExitPoint
Choice
Junction
Terminate
Fork
Fork (horizontal)
Join
Join (horizontal)
ConnectionPointReference
Relationship
Protocol Transition
Note
Note link
Add
Lifeline
CombinedFragment
CombinedFragment (Alternatives)
CombinedFragment (Loop)
InteractionUse
Gate
StateInvariant
DurationConstraint
TimeConstraint
Message (Call)
Message (Reply)
Message (Creation)
Message (Destruction)
Note
Note Link
No message numbering
Simple message numbering
Nested message numbering
Add
Simple state
Composite state
Orthogonal state
Submachine state
FinalState
InitialState
EntryPoint
ExitPoint
Choice
Junction
Terminate
Fork
Fork (horizontal)
Join
Join (horizontal)
DeepHistory
ShallowHistory
ConnectionPointReference
Relationship
Transition
Note
Note link
Add
Lifeline (State/Condition)
Lifeline (General value)
TickMark
Event/Stimulus
DurationConstraint
TimeConstraint
Message (Call)
Message (Reply)
Asynchronous Message (Call)
Note
Note Link
Add:
Package
Actor
UseCase
Relationship:
Association
Generalization
Include
Extend
Note
Note Link
Add
XSD TargetNamespace
XSD Schema
XSD Element (global)
XSD Group
XSD ComplexType
XSD ComplexType (simpleContent)
XSD SimpleType
XSD List
XSD Union
XSD Enumeration
XSD Attribute
XSD AttributeGroup
XSD Notation
XSD Import
Relationship
XSD Include
XSD Redefine
XSD Restriction
XSD Extension
XSD Substitution
Note
Note link
14 UModel Reference
The following section lists all the menus and menu options in UModel, and supplies a short
description of each.
14.1 File
New
Clears the diagram tab, if a previous project exists, and creates a new UModel project.
Open
Opens previously defined modeling project. Select a previously saved project file *.ump from
the Open dialog box.
The standard Open dialog is shown below. Please note the "Switch to URL..." button at the
base of the dialog box.
The Switch to URL button changes the appearance of the dialog box and allows you to open a
UModel project file from an URL.
1. Enter the URL you want to access, in the Server URL field.
2. Enter your User-ID in the User and Password fields, if the server is password
protected.
3. Click Browse to view and navigate the directory structure of the server.
4. Click the file you want to load into UModel. If the server is a Microsoft® SharePoint®
Server, check the Microsoft® SharePoint® Server check box. See the Microsoft®
SharePoint® Server Notes below for further information about working with files on this
type of server.
The file URL now appears in the File URL field at the top of the dialog box.
The Open button only becomes active at this point.
5. Click the Open button to load the file. The file appears in the main window.
Please note: The Browse function is only available on servers which support WebDAV
and on Microsoft SharePoint Servers. The supported protocols are FTP, HTTP, and
HTTPS.
To give you more control over the loading process, you can choose to load the file
through the local cache or a proxy server (which considerably speeds up the process if
the file has been loaded before). Alternatively, you may want to reload the file if you are
working, say, with an electronic publishing or database system; select the Reload option
in this case.
In the directory structure that appears in the Available Files pane, file icons have
symbols that indicate the check-in/check-out status of files.
Right-clicking a file pops up a context menu containing commands available for that file.
The various file icons are shown below:
After you check out a file, you can edit it in your Altova application and save it using File
| Save (Ctrl+S).
You can check-in the edited file via the context menu in the Open URL dialog (see
screenshot above).
When a file is checked out by another user, it is not available for check out.
When a file is checked out locally by you, you can undo the check-out with the Undo
Check-Out command in the context menu. This has the effect of returning the file
unchanged to the server.
If you check out a file in one Altova application, you cannot check it out in another
Altova application. The file is considered to be already checked out to you. The
available commands at this point in any Altova application supporting Microsoft®
SharePoint® Server will be: Check In and Undo Check Out.
Reload
Allows you to reload the current project and save, or discard, the changes made since you
opened the project file.
Save
Saves the currently active modeling project using the currently active file name.
Save as
Saves the currently active modeling project with a different name, or allows you to give the
project a new name if this is the first time you save it.
Save Copy As
Allows you to save a copy of the currently active UModel project with a different file name.
Send by Mail
Opens your default mail application and inserts the current UModel project as an attachment.
Print
Opens the Print dialog box, from where you can print out your modeling project as hardcopy.
"Use current", retains the currently defined zoom factor of the modeling project. Selecting this
option enables the "Page split of pictures" group.
The Prevent option prevents modeling elements from being split over a page, and keeps them
as one unit.
"Use optimal" scales the modeling project to fit the page size. You can also specify the zoom
factor numerically.
Print Preview
Opens the same Print dialog box with the same settings as described above.
Print Setup
Opens the Print Setup dialog box in which you can define the printer you want to use and the
paper settings.
14.2 Edit
Undo
UModel has an unlimited number of "Undo" steps that you can use to retrace you modeling
steps.
Redo
The redo command allows you to redo previously undone commands. You can step backward
and forward through the undo history using both these commands.
Cut/Copy//Delete
The standard windows Edit commands, allow you to cut, copy, etc., modeling elements, please
see "Cut, copy and paste in UModel Diagrams" for more information.
Paste
using the keyboard shortcut CTRL+V, or "Paste" from the context menu, as well as Paste from
the Edit menu, always adds a new modeling element to the diagram and to the Model Tree,
please see "Cut, copy and paste in UModel Diagrams".
Select all
Select all modeling elements of the currently active diagram. Equivalent to the CTRL+A
shortcut.
Find
There are several options you can use to search for modeling elements:
Find Next F3
Searches for the next occurrence of the same search string in the currently active tab or
diagram.
Replace
Allows you to search and replace any modelling elements in the project. When the element is
found it is highlighted in the diagram as well as in the Model Tree.
Copy as bitmap
Copies the currently active diagram into the clipboard from where you can paste it into the
application of your choice.
Please note:
Diagrams are copied into the system clipboard, you have to insert them into another
application to see, or get access to them.
14.3 Project
Check Project Syntax...
Checks the UModel project syntax. The project file is checked on multiple levels detailed in the
tables below:
Please note:
Constraints on model elements are not checked, as they are not part of the Java code
generation process. Please see "constraining model elements" for more information.
Source control
UModel now supports Microsoft SourceSafe and other compatible repositories.
Microsoft has defined a Registry Entry, where all SCC compatible programs can
register themselves. UModel only reads this entry.
HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider\InstalledSCC
Providers
Also note that Source Control plugins are not automatically installed by all SSC
products. Please read the documentation supplied with your specific source control
software for more information.
Please see:
Source control systems for detailed information on source control servers and clients
and how to use them.
C# projects:
MS Visual Studio projects, csproj, csdprj..., as well as
Borland .bdsproj project files
[Link] projects:
MS Visual Studio projects, vbproj, vbdproj.
Opens the Import XML Schema File dialog box allowing you to import schema files. Please see
"XML Schema Diagrams" for more information.
Having selected the operations and clicked OK, the Sequence Diagram Generation dialog box
is opened allowing you to further define the generation settings.
Project settings
Allows you to define the specific languages settings for your project.
Synchronization Settings...
Opens the Synchronization Settings dialog box as shown in the screenshots above.
Merge Project...
Merges two UModel project files into one model. The first file you open is the one the second
file will be merged into. Please see Merging UModel projects for more information.
Include Subproject
UModel is supplied with several files that can be included in a UModel project. Clicking the Java
tab allows you to include Java lang classes, interfaces and packages in your project, by
selecting one of the supplied files.
UModel projects can be included within other UModel projects. To include projects place the
respective *.ump files in:
Please note:
An include file, which contains all types of the Microsoft .NET Framework 2.0, is
available in the C# 2.0 tab.
Please note:
To delete or remove a project from the "Include" dialog box, delete or remove the
(MyModel).ump file from the respective folder.
Clear Messages
Clears the syntax check and code merging messages, warnings and errors from the Messages
window.
Please note:
Errors are generally problems that must be fixed before code can be generated, or the model
code can be updated during the code engineering process. Warnings can generally be deferred
until later. Errors and warnings are generated by the syntax checker, the compiler for the
specific language, the UModel parser that reads the newly generated source file, as well as
during the import of XMI files.
Generate documentation
Allows you to generate documenation for the currently open project in HTML, Microsoft Word,
and RTF formats. please see Generating UML documentation for more information.
14.4 Layout
The commands of the Layout menu allow you to line up and align the elements of your
modeling diagrams.
When using the marquee (drag on the diagram background) to mark several elements, the
element with the dashed outline becomes the "active" element, i.e. the last marked element. All
alignment commands use this element as the origin, or basis for the following alignment
commands.
Align:
The align command allows you to align modeling elements along their borders, or centers
depending on the specific command you select.
Space evenly:
This set of commands allow you to space selected elements evenly both horizontally and
vertically.
Line up:
This set of commands allow you to line up the selected elements vertically or horizontally.
Line Style:
This set of commands allow you to select the type of line used to connect the various modeling
elements. The lines can be any type of dependency, association lines used in the various model
diagrams.
Autosize:
This command resizes the selected elements to their respective optimal size(s).
Autolayout all:
This command allows you to choose the type of presentation of the modeling elements in the
UML diagram tab.
"Force directed"
displays the modeling elements from a centric viewpoint.
"Hierarchic"
displays elements according to their relationships, superclass - derived class etc.
"Block"
displays elements grouped by element size in rectangular fashion.
14.5 View
The commands available in this menu allow you to:
Switch/activate tabs of the various panes
Define the modeling element sort criteria of the Model Tree and Favorites tab
Define the grouping criteria of the diagrams in the Diagram Tree tab
Show or hide specific UML elements in the Favorites and Model Tree tab
Define the zoom factor of the current diagram.
14.6 Tools
The tools menu allows you to:
Customize your version: define your own toolbars, keyboard shortcuts, menus, and
macros.
Restore Toolbars and Windows to their default state.
Define the global program settings/options
14.6.1 Spelling...
Select Tools | Spelling to start the spell check process. The standard spell checker options are
available in this dialog box.
To define the specific spell checker options, click the "Options" button, or select the menu
option Tools | Spelling Options.
Please note:
You can spell check entries in the Model Tree as well as in UML diagrams. Right clicking in the
Model Tree and selecting "Documentation Spelling" spell checks the comments and notes of
the Model Tree.
Not in Dictionary
This text box contains the word that cannot be found in either the selected language dictionary
or user dictionary.
Suggestions
This list box displays words resembling the unknown word (supplied from the language and
user dictionaries). Double-clicking a word in this list automatically inserts it in the document and
continues the spellchecking process.
Ignore once
This command allows you to continue checking the document while ignoring the first occurrence
of the unknown word. The same word will be flagged again if it appears in the document.
Ignore all
This command ignores all instances of the unknown word in the whole document.
Add to dictionary
This command adds the unknown word to the user dictionary. You can access the user
dictionary (in order to edit it) via the Options dialog.
Change
This command replaces the currently highlighted word in the XML document with the (edited)
word in the Not in Dictionary text box.
Change all
This command replaces all occurrences of the currently highlighted word in the XML document
with the (edited) word in the Not in Dictionary text box.
Recheck Document
The "Recheck Document" button restarts the check from the beginning of the document.
Within the Lexicons folder, different language dictionaries are each stored in different folder:
<language name>\<dictionary files>. For example, on a Windows 7 machine, files for the
two English-language dictionaries (English (British) and English (US)) will be stored as
below:
C:\ProgramData\Altova\SpellChecker\Lexicons\English (British)\en_GB.aff
C:\ProgramData\Altova\SpellChecker\Lexicons\English (British)\en_GB.dic
C:\ProgramData\Altova\SpellChecker\Lexicons\English (US)\en_US.dic
C:\ProgramData\Altova\SpellChecker\Lexicons\English (US)\en_US.dic
In the Spelling Options dialog, the dropdown list of the Dictionary Language combo box displays
the language dictionaries. These dictionaries are those available in the Lexicons folder and
have the same names as the language subfolders in the Lexicons folder. For example, in the
case of the English-language dictionaries shown above, the dictionaries would appear in the
Dictionary Language combo box as: English (British) and English (US).
All installed dictionaries are shared by the different users of the machine and the different major
versions of Altova products (whether 32-bit or 64-bit).
You can add dictionaries for the spellchecker in two ways, neither of which require that the files
be registered with the system:
By adding Hunspell dictionaries into a new subfolder of the Lexicons folder. Hunspell
dictionaries can be downloaded, for example, from
[Link] or
[Link] (Note that OpenOffice uses
the zipped OXT format. So change the extension to .zip and unzip the .aff and .dic
file to the language folders in the Lexicons folder. Also note that Hunspell dictionaries
are based on Myspell dictionaries. So Myspell dictionaries can also be used.)
By using the Altova dictionary installer, which installs a package of multiple language
dictionaries by default to the correct location on your machine. The installer can be
downloaded by clicking the link in the Dictionary language pane of the Spelling Options
dialog (see screenshot below).
Note: It is your choice as to whether you agree to the terms of the license applicable to the
dictionary and whether the dictionary is appropriate for your use with the software on
your computer.
To add a word to the user dictionary, enter the word in the Word text box and click Add. The
word will be added to the alphabetical list in the Dictionary pane. To delete a word from the
dictionary, select the word in the Dictionary pane and click Delete. The word will be deleted
from the Dictionary pane. When you have finished editing the User Dictionary dialog, click OK
for the changes to be saved to the user dictionary.
Words may also be added to the User Dictionary during a spelling check. If an unknown word is
encountered during a spelling check, then the Spelling dialog pops up prompting you for the
action you wish to take. If you click the Add to Dictionary button, then the unknown word is
added to the user dictionary.
Prefixes
Double clicking in the "Prefix to ignore" column lets you enter the prefixes, of specific UML
elements, you want to ignore during spell checking, e.g. m_ for properties, and I for Interfaces.
The "Append" button adds a new row to the Prefixes table. "Delete" deletes the currently active
row.
Clicking the "More spelling options..." button opens the Spelling Options dialog box shown
below.
Dictionary Language
Use this combo box to select the dictionary language for the spellchecker. The default selection
is US English. Other language dictionaries are available for download free of charge from the
Altova website.
Note: The .NET Framework version 2.0 or higher will have to be installed on your machine in
order for the Scripting Editor to run.
14.6.4 Macros
Placing the mouse cursor over the Macros entry, opens a flyout menu containing a list of the
currently defined macros in the Scripting Project. The active Scripting Project is defined in the
Scripting tab of the Options dialog box.
E.g.
The User-Defined Tools | Customize command opens the Tools tab of the Customize dialog
(in which you can create the custom commands that appear in the menu of the User-Defined
Tools command.)
14.6.6 Customize...
The customize command lets you customize UModel to suit your personal needs.
Commands
Toolbars
Tools
Keyboard
Menu
Options
Commands
The Commands tab allows you customize your menus or toolbars.
A small button appears at the tip of mouse pointer when you drag a command. The
check mark below the pointer means that the command cannot be dropped at the
current cursor position.
The check mark disappears whenever you can drop the command (over a tool bar or
menu).
Placing the cursor over a menu when dragging, opens it, allowing you to insert the
command anywhere in the menu.
Commands can be placed in menus or tool bars. If you created you own toolbar you
can populate it with your own commands/icons.
Please note:
You can also edit the commands in the context menus (right click anywhere opens the
context menu), using the same method. Click the Menu tab and then select the specific
context menu available in the Context Menus combo box.
Toolbars contain symbols for the most frequently used menu commands. For each symbol you
get a brief "tool tip" explanation when the mouse cursor is directly over the item and the status
bar shows a more detailed description of the command.
You can drag the toolbars from their standard position to any location on the screen, where they
appear as a floating window. Alternatively you can also dock them to the left or right edge of the
main window.
Click the folder icon (in the Menu contents: bar) to add a new menu entry, and use the
Command field to associate it to an application.
The Tools tab now also supports the definition of Arguments. Arguments are variables that are
assigned specific values when the external tool is started using the menu item.
E.g. Open the source code file of the currently selected UML class in Notepad.
1. Select the menu item Tools | Customize and click the Tools tab.
2. Enter the name and path of the external application e.g. C:\...\[Link].
3. Click the Flyout button of the Arguments field and select the argument you want to use,
e.g. Code File Name.
UModel Arguments
Project File Name
The file name of the active UModel project file, e.g. “[Link]”.
The code project file name can be relative to the UModel project file and is the same as shown
in the Properties of the component, e.g. “C:\Temp\MySource\[Link]” or
“MySource\[Link]”.
Keyboard
The Keyboard tab allows you to define (or change) keyboard shortcuts for any command.
Menu
The Menu tab allows you to customize the main menu bars as well as the (popup - right click)
context menus.
You can customize both the Default and UModel Project menu bars.
The Default menu is the one visible when no XML documents of any type are open.
The UModel Project menu is the menu bar visible when a *.ump file has been opened.
To customize a menu:
1. Select the menu bar you want to customize from the "Show Menus for:" combo box
2. Click the Commands tab, and drag the commands to the menu bar of your choice.
or,
1. Select Tools | Customize to open the Customize dialog box, and
2. Drag the command away from the menu, and drop it as soon as the check mark icon
appears below the mouse pointer.
or,
1. Select Tools | Customize to open the Customize dialog box, and
2. Drag the command away from the context menu, and drop it as soon as the check
mark icon appears below the mouse pointer.
Menu shadows
Click the Menu shadows check box, if you want all your menus to have shadows.
Macros
The Macros tab allows you to select from the macros defined in the Scripting Project that is
currently active in UModel.
The active Scripting Projects are specified in the Scripting tab of the Options dialog, or in the
Scripting tab of the project settings.
The Show shortcut keys in ToolTips check box, allows you to decide if you want to have the
shortcut displayed in the tooltip.
When active, the Large icons check box switches between the standard size icons, and larger
versions of the icons.
This command is useful if you have been resizing, moving, or hiding toolbars or windows, and
would now like to have all the toolbars and windows as they originally were.
14.6.8 Options
Select the menu item Tools | Options to define your project options.
main area.
Default visibility settings when adding new elements - Properites or Operations.
The default code language when a new component is added.
If a newly added constraint, is to automatically constrain its owner as well.
If a prompt should appear when deleting elements from a project, from the Favorites
tab or in any of the diagrams. This prompt can be deactivated when deleting items
there; this option allows you to reset the "prompt on delete" dialog box.
The delay with which the syntax error popup should be closed.
format.
The Indentation method used in the code, i.e. tabs or any number of spaces.
The directories to be ignored when updating a UModel project from code, or directory.
Separate the respective directories with a semicolon ";". Child directories of the same
name are also ignored.
The location of the XMLSpy Catalog File, [Link], which enables UModel as
well as XMLSpy to retrieve commonly used schemas (as well as stylesheets and other
files) from local user folders. This increases the overall processing speed, and enables
users to work offline.
The current source control plugin using the combo box. The Advanced button allows
you to define the specific settings of the source control plugin-that you selected. These
settings change depending on the source control plugin that you use.
The login ID for the source control provider.
Specific settings check in/out settings.
The Reset button is made available if you have checked/activated the "Don't show this
again" option in one of the dialog boxes. The Don't show this again prompt is then
reenabled.
14.7 Window
Cascade:
This command rearranges all open document windows so that they are all cascaded (i.e.
staggered) on top of each other.
Tile horizontally:
This command rearranges all open document windows as horizontal tiles, making them all
visible at the same time.
Tile vertically:
This command rearranges all open document windows as vertical tiles, making them all visible
at the same time.
Arrange icons:
Arranges haphazardly positioned, iconized diagrams, along the base of the diagram viewing
area.
Close:
Closes the currently active diagram tab.
Close All:
Closes all currently open diagram tabs.
Next:
Switches to the next modeling diagram in the tab sequence, or the next hyperlinked element.
Previous:
Switches to the previous modeling diagram in the tab sequence, or the previous hyperlinked
element.
Window list:
This list shows all currently open windows, and lets you quickly switch between them.
You can also use the CTRL+TAB or CTRL F6 keyboard shortcuts to cycle through the open
windows.
14.8 Help
Allows access to the Table of Contents and Index of the UModel documentation, as well as
Altova web site links. The Registration option opens the Altova Licensing Manager, which
contains the licensing information for all of Altova products.
15 Code Generator
UModel includes a built-in code generator which can automatically generate Java, C#, Visual
Basic, or XML Schema files from UML models.
Any potentially conflicting aliases are added to the "Unknow Externals" if their use is unclear.
Note:
The Resolve alias settings can be changed at any time in the Project Settings dialog box.
It is assumed that you have prior programming experience, and are familiar with operators,
functions, variables and classes, as well as the basics of object-oriented programming - which
is used heavily in SPL.
The templates used by UModel are supplied in the ...\UModelspl folder. You can use these files
as an aid to help you in developing your own templates.
The template file is interpreted by the code generator and outputs .java, .cs source code files, ,
or any other type of file depending on the template.
Code generator instructions are enclosed in square brackets '[' and ']'.
Multiple statements can be included in a bracket pair. Additional statements have to be
separated by a new line or a colon ':'.
or
[$x = 42: $x = $x + 1]
Comments
Comments inside an instruction block always begin with a ' character, and terminate on the next
line, or at a block close character ].
15.1.2 Variables
Any non-trivial SPL file will require variables. Some variables are predefined by the code
generator, and new variables may be created simply by assigning values to them.
The $ character is used when declaring or using a variable, a variable name is always prefixed
by $.
Variable names are case sensitive.
Variables types:
integer - also used as boolean, where 0 is false and everything else is true
string
object - provided by UModel
iterator - see foreach statement
[$x = "teststring"]
x is now treated as a string.
Strings
String constants are always enclosed in double quotes, like in the example above. \n and \t
inside double quotes are interpreted as newline and tab, \" is a literal double quote, and \\ is a
backslash. String constants can also span multiple lines.
Objects
Objects represent the information contained in the UModelproject. Objects have properties,
which can be accessed using the . operator. It is not possible to create new objects in SPL (they
are predefined by the code generator, derived from the input), but it is possible to assign objects
to variables.
Example:
class [=$[Link]]
This example outputs the word "class", followed by a space and the value of the Name property
of the $class object.
The following table show the relationship between UML elements their SPL equivalents along
with a short description.
Predefined variables
UML element SPL property Multiplicit UML UModel Description
y
Attribute / Attribute /
Association Association
BehavioralFeature isAbstract isAbstract:Boolean
All new coding elements are written using the SPL templates:
If you look into UModelSPL\C#[Java]\Default\[Link], you can change the way how the
name is written, e.g. replace
write $[Link]
by
write "m_" & $[Link]
It is highly recommended that you immediately update your model from code, after code
generation to ensure that code and model are synchronized!
Please note:
As previously mentioned copy the SPL templates one directory higher (i.e. above the default
directory to UModelSPL\C#) before modifying them. This ensures that they are not overwritten
when you install a new version of UModel. Please make sure that the "user-defined override
default" check box is activated in the Code from Model tab of the Synchronization Setting
dialog box.
SPL Templates
SPL templates can be specified per UModel project using the menu option Project | Project
Settings (as shown in the screenshot below). Relative paths are also supported. Templates
which are not found in the specified directory, are searched for in the local default directory.
Global objects
$Options an object holding global options:
integer CompareNoCase(s)
The return value indicates the lexicographic relation of the string to s (case insensitive):
integer Find( s )
Searches the string for the first match of a substring s.
Returns the zero-based index of the first character of s or -1 if s is not found.
string Left( n )
Returns the first n characters of the string.
integer Length()
Returns the length of the string.
string MakeUpper()
Returns a string converted to upper case.
string MakeUpper( n )
Returns a string, with the first n characters converted to upper case.
string MakeLower()
Returns a string converted to lower case.
string MakeLower( n )
Returns a string, with the first n characters converted to lower case.
string Mid( n )
Returns a string starting with the zero-based index position n
string Mid( n, m )
Returns a string starting with the zero-based index position n and the length m
string RemoveLeft( s )
Returns a string excluding the substring s if Left( [Link]() ) is equal to substring s.
string RemoveLeftNoCase( s )
Returns a string excluding the substring s if Left( [Link]() ) is equal to substring s (case
insensitive).
string RemoveRight( s )
Returns a string excluding the substring s if Right( [Link]() ) is equal to substring s.
string RemoveRightNoCase( s )
Returns a string excluding the substring s if Right( [Link]() ) is equal to substring s (case
insensitive).
string Repeat( s, n )
Returns a string containing substring s repeated n times.
string Right( n )
Returns the last n characters of the string.
15.1.3 Operators
Operators in SPL work like in most other programming languages.
* Multiply
/ Divide
% Modulo
+ Add
- Subtract
= Equal
<> Not equal
= Assignment
15.1.4 Conditions
SPL allows you to use standard "if" statements. The syntax is as follows:
if condition
statements
else
statements
endif
Please note that there are no round brackets enclosing the condition!
As in any other programming language, conditions are constructed with logical and comparison
operators.
Example:
[if $[Link] and $[Link] <> ""]
whatever you want ['inserts whatever you want, in the resulting file]
[endif]
Switch
SPL also contains a multiple choice statement.
Syntax:
switch $variable
case X:
statements
case Y:
case Z:
statements
default:
statements
endswitch
Syntax:
foreach iterator in collection
statements
next
Example:
[foreach $class in $classes
if not $[Link]
] class [=$[Link]];
[ endif
next]
Example 2:
[foreach $i in 1 To 3
Write "// Step " & $i & "\n"
‘ Do some work
next]
Foreach steps through all the items in $classes, and executes the code following the
instruction, up to the next statement, for each of them.
In each iteration, $class is assigned to the next class object. You simply work with the class
object instead of using, classes[i]->Name(), as you would in C++.
Example:
[foreach $enum in $[Link]
if not $[Link]
], [
endif
]"[=$[Link]]"[
next]
Example:
$SortedNestedClassifier = $[Link]( true )
15.1.6 Subroutines
Code generator supports subroutines in the form of procedures or functions.
Features:
By-value and by-reference passing of values
Local/global parameters (local within subroutines)
Local variables
Recursive invocation (subroutines may call themselves)
Subroutine declaration
Subroutines
Syntax example:
Sub SimpleSub()
... lines of code
EndSub
Please note:
Recursive or cascaded subroutine declaration is not permitted, i.e. a subroutine may
not contain another subroutine.
Parameters
Parameters can also be passed by procedures using the following syntax:
All parameters must be variables
Variables must be prefixed by the $ character
Local variables are defined in a subroutine
Global variables are declared explicitly, outside of subroutines
Multiple parameters are separated by the comma character "," within round
parentheses
Parameters can pass values
Syntax:
' define sub CompleteSub()
[Sub CompleteSub( $param, ByVal $paramByValue, ByRef $paramByRef )
] ...
ByVal specifies that the parameter is passed by value. Note that most objects can only
be passed by reference.
ByRef specifies that the parameter is passed by reference. This is the default if neither
ByVal nor ByRef is specified.
Example:
' define a function
[Sub MakeQualifiedName( ByVal $namespacePrefix, ByVal $localName )
if $namespacePrefix = ""
return $localName
else
return $namespacePrefix & ":" & $localName
endif
EndSub
]
Subroutine invocation
Use call to invoke a subroutine, followed by the procedure name and parameters, if any.
Call SimpleSub()
or,
Call CompleteSub( "FirstParameter", $ParamByValue, $ParamByRef )
Function invocation
To invoke a function (any subroutine that contains a return statement), simply use its name
inside an expression. Do not use the call statement to call functions.
Example:
$QName = MakeQualifiedName($namespace, "entry")
16 Appendices
These appendices contain technical information about UModel and important licensing
information.
License Information
Electronic software distribution
Copyrights
End User License Agreement
Please read this information carefully. It is binding upon you since you agreed to these terms
when you installed this software product.
For further details, please refer to the Altova Software License Agreement at the end of this
section.
Your Altova product has a built-in license metering module that further helps you avoid any
unintentional violation of the End User License Agreement. Your product is licensed either as a
single-user or multi-user installation, and the license-metering module makes sure that no more
than the licensed number of users use the application concurrently.
This license-metering technology uses your local area network (LAN) to communicate between
instances of the application running on different computers.
Single license
When the application starts up, as part of the license metering process, the software sends a
short broadcast datagram to find any other instance of the product running on another computer
in the same network segment. If it doesn't get any response, it will open a port for listening to
other instances of the application.
Multi license
If more than one instance of the application is used within the same LAN, these instances will
briefly communicate with each other on startup. These instances exchange key-codes in order
to help you to better determine that the number of concurrent licenses purchased is not
accidentally violated. This is the same kind of license metering technology that is common in
the Unix world and with a number of database development tools. It allows Altova customers to
purchase reasonably-priced concurrent-use multi-user licenses.
We have also designed the applications so that they send few and small network packets so as
to not put a burden on your network. The TCP/IP ports (2799) used by your Altova product are
officially registered with the IANA (see the IANA website ([Link] for details) and
our license-metering module is tested and proven technology.
If you are using a firewall, you may notice communications on port 2799 between the computers
that are running Altova products. You are, of course, free to block such traffic between different
groups in your organization, as long as you can ensure by other means, that your license
agreement is not violated.
You will also notice that, if you are online, your Altova product contains many useful functions;
these are unrelated to the license-metering technology.
Altova software contains certain Third Party Software that is also protected by intellectual
property laws, including without limitation applicable copyright laws as described in detail at
[Link]
All other names or trademarks are the property of their respective owners.
Licensor:
Altova GmbH
Rudolfsplatz 13a/9
A-1010 Wien
Austria
This End User License Agreement (“Agreement”) is a legal document between you and
Altova GmbH (“Altova”). It is important that you read this document before using the
Altova-provided software (“Software”) and any accompanying documentation, including,
without limitation printed materials, ‘online’ files, or electronic documentation
(“Documentation”). By clicking the “I accept” and “Next” buttons below, or by installing,
or otherwise using the Software, you agree to be bound by the terms of this Agreement
as well as the Altova Privacy Policy (“Privacy Policy”) including, without limitation, the
warranty disclaimers, limitation of liability, data use and termination provisions below,
whether or not you decide to purchase the Software. You agree that this agreement is
enforceable like any written agreement negotiated and signed by you. If you do not agree,
you are not licensed to use the Software, and you must destroy any downloaded copies of the
Software in your possession or control. You may print a copy of this Agreement as part of the
installation process at the time of acceptance. Alternatively, a copy of this Agreement may be
found at [Link] and a copy of the Privacy Policy may be found at
[Link]
1. SOFTWARE LICENSE
(ii) If you have licensed SchemaAgent, then the terms and conditions of this
Agreement apply to your use of the SchemaAgent server software (“SchemaAgent Server”)
included therein, as applicable, and you are licensed to use SchemaAgent Server solely in
connection with your use of Altova Software and solely for the purposes described in the
accompanying documentation.
(iii) If you have licensed Software that enables users to generate source code, your
license to install and use a copy of the Software as provided herein permits you to generate
source code based on (i) Altova Library modules that are included in the Software (such
generated code hereinafter referred to as the “Restricted Source Code”) and (ii) schemas or
mappings that you create or provide (such code as may be generated from your schema or
mapping source materials hereinafter referred to as the “Unrestricted Source Code”). In addition
to the rights granted herein, Altova grants you a non-exclusive, non-transferable, limited license
to compile the complete generated code (comprised of the combination of the Restricted
Source Code and the Unrestricted Source Code) into executable object code form, and to use,
copy, distribute or license that executable. You may not distribute or redistribute, sublicense,
sell, or transfer the Restricted Source Code to a third-party in the un-compiled form unless said
third-party already has a license to the Restricted Source Code through their separate
agreement with Altova. Notwithstanding anything to the contrary herein, you may not distribute,
incorporate or combine with other software, or otherwise use the Altova Library modules or
Restricted Source Code, or any Altova intellectual property embodied in or associated with the
Altova Library modules or Restricted Source Code, in any manner that would subject the
Restricted Source Code to the terms of a copyleft, free software or open source license that
would require the Restricted Source Code or Altova Library modules source code to be
disclosed in source code form. Notwithstanding anything to the contrary herein, you may not
use the Software to develop and distribute other software programs that directly compete with
any Altova software or service without prior written permission. Altova reserves all other rights in
and to the Software. With respect to the feature(s) of UModel that permit reverse-engineering of
your own source code or other source code that you have lawfully obtained, such use by you
does not constitute a violation of this Agreement. Except as otherwise expressly permitted in
Section 1(j) reverse engineering of the Software is strictly prohibited as further detailed therein.
(iv) In the event Restricted Source Code is incorporated into executable object
code form, you will include the following statement in (1) introductory splash screens, or if none,
within one or more screens readily accessible by the end-user, and (2) in the electronic and/or
hard copy documentation: “Portions of this program were developed using Altova® [name of
Altova Software, e.g. MapForce® 2011] and includes libraries owned by Altova GmbH,
Copyright © 2007-2011 Altova GmbH ([Link]).”
(b) Server Use for Installation and Use of SchemaAgent. You may install one (1) copy
of the Software on a computer file server within your internal network solely for the purpose of
downloading and installing the Software onto other computers within your internal network up to
the Permitted Number of computers in a commercial environment only. If you have licensed
SchemaAgent, then you may install SchemaAgent Server on any server computer or
workstation and use it in connection with your Software. No other network use is permitted,
including without limitation using the Software either directly or through commands, data or
instructions from or to a computer not part of your internal network, for Internet or Web-hosting
services or by any user not licensed to use this copy of the Software through a valid license
from Altova.
(c) Named-Use. If you have licensed the “Named-User” version of the software, you may
install the Software on up to five (5) compatible personal computers or workstations of which
you are the primary user thereby allowing you to switch from one computer to the other as
necessary provided that only one (1) instance of the Software will be used by you as the
Named-User at any given time. If you have purchased multiple Named-User licenses, each
individual Named-User will receive a separate license key code.
(d) Concurrent Use in Same Physical Network or Office Location. If you have licensed
a “Concurrent-User” version of the Software, you may install the Software on any compatible
computers in a commercial environment only, up to ten (10) times the Permitted Number of
users, provided that only the Permitted Number of users actually use the Software at the same
time and further provided that the computers on which the Software is installed are on the same
physical computer network. The Permitted Number of concurrent users shall be delineated at
such time as you elect to purchase the Software licenses. Each separate physical network or
office location requires its own set of separate Concurrent User Licenses for those wishing to
use the Concurrent User versions of the Software in more than one location or on more than
one network, all subject to the above Permitted Number limitations and based on the number of
users using the Software. If a computer is not on the same physical network, then a locally
installed user license or a license dedicated to concurrent use in a virtual environment is
required. Home User restrictions and limitations with respect to the Concurrent User licenses
used on home computers are set forth in Section 1(g).
(f) Backup and Archival Copies. You may make one (1) backup and one (1) archival
copy of the Software, provided your backup and archival copies are not installed or used on any
computer and further provided that all such copies shall bear the original and unmodified
copyright, patent and other intellectual property markings that appear on or in the Software. You
may not transfer the rights to a backup or archival copy unless you transfer all rights in the
Software as provided under Section 3.
(g) Home Use (Personal and Non-Commercial). In order to further familiarize yourself
with the Software and allow you to explore its features and functions, you, as the primary user of
the computer on which the Software is installed for commercial purposes, may also install one
copy of the Software on only one (1) home personal computer (such as your laptop or desktop)
solely for your personal and non-commercial (“HPNC”) use. This HPNC copy may not be used
in any commercial or revenue-generating business activities, including without limitation,
work-from-home, teleworking, telecommuting, or other work-related use of the Software. The
HPNC copy of the Software may not be used at the same time on a home personal computer
as the Software is being used on the primary computer.
(h) Key Codes, Upgrades and Updates. Prior to your purchase and as part of the
registration for the thirty (30) day evaluation period, as applicable, you will receive an evaluation
key code. You will receive a purchase key code when you elect to purchase the Software from
either Altova GmbH or an authorized reseller. The purchase key code will enable you to activate
the Software beyond the initial evaluation period. You may not re-license, reproduce or
distribute any key code except with the express written permission of Altova. If the Software that
you have licensed is an upgrade or an update, then the latest update or upgrade that you
download and install replaces all or part of the Software previously licensed. The update or
upgrade and the associated license keys does not constitute the granting of a second license to
the Software in that you may not use the upgrade or updated copy in addition to the copy of the
Software that it is replacing and whose license has terminated.
(i) Title. Title to the Software is not transferred to you. Ownership of all copies of the
Software and of copies made by you is vested in Altova, subject to the rights of use granted to
you in this Agreement. As between you and Altova, documents, files, stylesheets, generated
program code (including the Unrestricted Source Code) and schemas that are authored or
created by you via your utilization of the Software, in accordance with its Documentation and the
terms of this Agreement, are your property unless they are created using Evaluation Software,
as defined in Section 4 of this Agreement, in which case you have only a limited license to use
any output that contains generated program code (including Unrestricted Source Code) such
as Java, C++, C#, [Link] or XSLT and associated project files and build scripts, as well as
generated XML, XML Schemas, documentation, UML diagrams, and database structures only
for the thirty (30) day evaluation period.
(j) Reverse Engineering. Except and to the limited extent as may be otherwise
specifically provided by applicable law in the European Union, you may not reverse engineer,
decompile, disassemble or otherwise attempt to discover the source code, underlying ideas,
underlying user interface techniques or algorithms of the Software by any means whatsoever,
directly or indirectly, or disclose any of the foregoing, except to the extent you may be expressly
permitted to decompile under applicable law in the European Union, if it is essential to do so in
order to achieve operability of the Software with another software program, and you have first
requested Altova to provide the information necessary to achieve such operability and Altova
has not made such information available. Altova has the right to impose reasonable conditions
and to request a reasonable fee before providing such information. Any information supplied by
Altova or obtained by you, as permitted hereunder, may only be used by you for the purpose
described herein and may not be disclosed to any third party or used to create any software
which is substantially similar to the expression of the Software. Requests for information from
users in the European Union with respect to the above should be directed to the Altova
Customer Support Department.
(k) Other Restrictions. You may not loan, rent, lease, sublicense, distribute or otherwise
transfer all or any portion of the Software to third parties except to the limited extent set forth in
Section 3 or as otherwise expressly provided. You may not copy the Software except as
expressly set forth above, and any copies that you are permitted to make pursuant to this
Agreement must contain the same copyright, patent and other intellectual property markings
that appear on or in the Software. You may not modify, adapt or translate the Software. You
may not, directly or indirectly, encumber or suffer to exist any lien or security interest on the
Software; knowingly take any action that would cause the Software to be placed in the public
domain; or use the Software in any computer environment not specified in this Agreement. You
may not permit any use of or access to the Software by any third party in connection with a
commercial service offering, such as for a cloud-based or web-based SaaS offering.
You will comply with applicable law and Altova’s instructions regarding the use of the
Software. You agree to notify your employees and agents who may have access to the Software
of the restrictions contained in this Agreement and to ensure their compliance with these
restrictions.
You acknowledge that the Software and any copies that you are authorized by Altova to make
are the intellectual property of and are owned by Altova and its suppliers. The structure,
organization and code of the Software are the valuable trade secrets and confidential
information of Altova and its suppliers. The Software is protected by copyright, including without
limitation by United States Copyright Law, international treaty provisions and applicable laws in
the country in which it is being used. You acknowledge that Altova retains the ownership of all
patents, copyrights, trade secrets, trademarks and other intellectual property rights pertaining to
the Software, and that Altova’s ownership rights extend to any images, photographs,
animations, videos, audio, music, text and “applets” incorporated into the Software and all
accompanying printed materials. You will take no actions which adversely affect Altova’s
intellectual property rights in the Software. Trademarks shall be used in accordance with
accepted trademark practice, including identification of trademark owners’ names. Trademarks
may only be used to identify printed output produced by the Software, and such use of any
trademark does not give you any right of ownership in that trademark. Altova®, XMLSpy®,
Authentic®, StyleVision®, MapForce®, UModel®, DatabaseSpy®, DiffDog®, SchemaAgent®,
SemanticWorks®, MissionKit®, Markup Your Mind®, Nanonull™, RaptorXML™, RaptorXML
Server™, RaptorXML +XBRL Server™, Powered By RaptorXML™, FlowForce Server™,
StyleVision Server™, and MapForce Server™ are trademarks of Altova GmbH. (pending or
registered in numerous countries). Unicode and the Unicode Logo are trademarks of Unicode,
Inc. Windows, Windows XP, Windows Vista, Windows 7, and Windows 8 are trademarks of
Microsoft. W3C, CSS, DOM, MathML, RDF, XHTML, XML and XSL are trademarks (registered
in numerous countries) of the World Wide Web Consortium (W3C); marks of the W3C are
registered and held by its host institutions, MIT, INRIA and Keio. Except as expressly stated
above, this Agreement does not grant you any intellectual property rights in the Software.
Notifications of claimed copyright infringement should be sent to Altova’s copyright agent as
further provided on the Altova Web Site.
Notwithstanding the foregoing, you may transfer all your rights to use the Software to another
person or legal entity provided that: (a) you also transfer this Agreement, the Software and all
other software or hardware bundled or pre-installed with the Software, including all copies,
updates and prior versions, and all copies of font software converted into other formats, to such
person or entity; (b) you retain no copies, including backups and copies stored on a computer;
(c) the receiving party secures a personalized key code from Altova; and (d) the receiving party
accepts the terms and conditions of this Agreement and any other terms and conditions upon
which you legally purchased a license to the Software. Notwithstanding the foregoing, you may
not transfer education, pre-release, or not-for-resale copies of the Software.
If the product you have received with this license is pre-commercial release or beta Software
(“Pre-release Software”), then this Section applies. In addition, this section applies to all
evaluation and/or demonstration copies of Altova software (“Evaluation Software”) and
continues in effect until you purchase a license. To the extent that any provision in this section is
in conflict with any other term or condition in this Agreement, this section shall supersede such
other term(s) and condition(s) with respect to the Pre-release and/or Evaluation Software, but
only to the extent necessary to resolve the conflict. You acknowledge that the Pre-release
Software is a pre-release version, does not represent final product from Altova, and may
contain bugs, errors and other problems that could cause system or other failures and data
loss. CONSEQUENTLY, THE PRE-RELEASE AND/OR EVALUATION SOFTWARE IS
PROVIDED TO YOU “AS-IS” WITH NO WARRANTIES FOR USE OR PERFORMANCE, AND
ALTOVA DISCLAIMS ANY WARRANTY OR LIABILITY OBLIGATIONS TO YOU OF ANY
KIND, WHETHER EXPRESS OR IMPLIED. WHERE LEGALLY LIABILITY CANNOT BE
EXCLUDED FOR PRE-RELEASE AND/OR EVALUATION SOFTWARE, BUT IT MAY BE
LIMITED, ALTOVA’S LIABILITY AND THAT OF ITS SUPPLIERS SHALL BE LIMITED TO THE
SUM OF FIFTY DOLLARS (USD $50) IN TOTAL. If the Evaluation Software has a time-out
feature, then the software will cease operation after the conclusion of the designated evaluation
period. Upon such expiration date, your license will expire unless otherwise extended. Your
license to use any output created with the Evaluation Software that contains generated program
code (including Unrestricted Source Code) such as Java, C++, C, [Link] or XSLT and
associated project files and build scripts as well as generated XML, XML Schemas,
documentation, UML diagrams, and database structures terminates automatically upon the
expiration of the designated evaluation period but the license to use such output is revived upon
your purchase of a license for the Software that you evaluated and used to create such output.
Access to any files created with the Evaluation Software is entirely at your risk. You
acknowledge that Altova has not promised or guaranteed to you that Pre-release Software will
be announced or made available to anyone in the future, that Altova has no express or implied
obligation to you to announce or introduce the Pre-release Software, and that Altova may not
introduce a product similar to or compatible with the Pre-release Software. Accordingly, you
acknowledge that any research or development that you perform regarding the Pre-release
Software or any product associated with the Pre-release Software is done entirely at your own
risk. During the term of this Agreement, if requested by Altova, you will provide feedback to
Altova regarding testing and use of the Pre-release Software, including error or bug reports. If
you have been provided the Pre-release Software pursuant to a separate written agreement,
your use of the Software is governed by such agreement. You may not sublicense, lease, loan,
rent, distribute or otherwise transfer the Pre-release Software. Upon receipt of a later
unreleased version of the Pre-release Software or release by Altova of a publicly released
commercial version of the Software, whether as a stand-alone product or as part of a larger
product, you agree to return or destroy all earlier Pre-release Software received from Altova and
to abide by the terms of the license agreement for any such later versions of the Pre-release
Software.
(a) Limited Warranty and Customer Remedies. Altova warrants to the person or entity
that first purchases a license for use of the Software pursuant to the terms of this Agreement
that (i) the Software will perform substantially in accordance with any accompanying
Documentation for a period of ninety (90) days from the date of receipt, and (ii) any support
services provided by Altova shall be substantially as described in Section 6 of this agreement.
Some states and jurisdictions do not allow limitations on duration of an implied warranty, so the
above limitation may not apply to you. To the extent allowed by applicable law, implied
warranties on the Software, if any, are limited to ninety (90) days. Altova’s and its suppliers’
entire liability and your exclusive remedy shall be, at Altova’s option, either (i) return of the price
paid, if any, or (ii) repair or replacement of the Software that does not meet Altova’s Limited
Warranty and which is returned to Altova with a copy of your receipt. This Limited Warranty is
void if failure of the Software has resulted from accident, abuse, misapplication, abnormal use,
Trojan horse, virus, or any other malicious external code. Any replacement Software will be
warranted for the remainder of the original warranty period or thirty (30) days, whichever is
longer. This limited warranty does not apply to Evaluation and/or Pre-release Software.
THE SOFTWARE. EXCEPT FOR THE FOREGOING LIMITED WARRANTY, AND FOR ANY
WARRANTY, CONDITION, REPRESENTATION OR TERM TO THE EXTENT WHICH THE
SAME CANNOT OR MAY NOT BE EXCLUDED OR LIMITED BY LAW APPLICABLE TO YOU
IN YOUR JURISDICTION, ALTOVA AND ITS SUPPLIERS MAKE NO WARRANTIES,
CONDITIONS, REPRESENTATIONS OR TERMS, EXPRESS OR IMPLIED, WHETHER BY
STATUTE, COMMON LAW, CUSTOM, USAGE OR OTHERWISE AS TO ANY OTHER
MATTERS. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, ALTOVA AND
ITS SUPPLIERS DISCLAIM ALL OTHER WARRANTIES AND CONDITIONS, EITHER
EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, SATISFACTORY QUALITY,
INFORMATIONAL CONTENT OR ACCURACY, QUIET ENJOYMENT, TITLE AND
NON-INFRINGEMENT, WITH REGARD TO THE SOFTWARE, AND THE PROVISION OF OR
FAILURE TO PROVIDE SUPPORT SERVICES. THIS LIMITED WARRANTY GIVES YOU
SPECIFIC LEGAL RIGHTS. YOU MAY HAVE OTHERS, WHICH VARY FROM
STATE/JURISDICTION TO STATE/JURISDICTION.
(d) Infringement Claims. Altova will indemnify and hold you harmless and will defend or
settle any claim, suit or proceeding brought against you by a third party that is based upon a
claim that the content contained in the Software infringes a copyright or violates an intellectual
or proprietary right protected by United States or European Union law (“Claim”), but only to the
extent the Claim arises directly out of the use of the Software and subject to the limitations set
forth in Section 5 of this Agreement except as otherwise expressly provided. You must notify
Altova in writing of any Claim within ten (10) business days after you first receive notice of the
Claim, and you shall provide to Altova at no cost such assistance and cooperation as Altova
may reasonably request from time to time in connection with the defense of the Claim. Altova
shall have sole control over any Claim (including, without limitation, the selection of counsel and
the right to settle on your behalf on any terms Altova deems desirable in the sole exercise of its
discretion). You may, at your sole cost, retain separate counsel and participate in the defense or
settlement negotiations. Altova shall pay actual damages, costs, and attorney fees awarded
against you (or payable by you pursuant to a settlement agreement) in connection with a Claim
to the extent such direct damages and costs are not reimbursed to you by insurance or a third
party, to an aggregate maximum equal to the purchase price of the Software. If the Software or
its use becomes the subject of a Claim or its use is enjoined, or if in the opinion of Altova’s legal
counsel the Software is likely to become the subject of a Claim, Altova shall attempt to resolve
the Claim by using commercially reasonable efforts to modify the Software or obtain a license to
continue using the Software. If in the opinion of Altova’s legal counsel the Claim, the injunction
or potential Claim cannot be resolved through reasonable modification or licensing, Altova, at its
own election, may terminate this Agreement without penalty, and will refund to you on a pro rata
basis any fees paid in advance by you to Altova. THE FOREGOING CONSTITUTES ALTOVA’S
Altova offers multiple optional “Support & Maintenance Package(s)” (“SMP”) for the version of
Software product edition that you have licensed, which you may elect to purchase in addition to
your Software license. The Support Period, hereinafter defined, covered by such SMP shall be
delineated at such time as you elect to purchase a SMP. Your rights with respect to support and
maintenance as well as your upgrade eligibility depend on your decision to purchase SMP and
the level of SMP that you have purchased:
(a) If you have not purchased SMP, you will receive the Software AS IS and will not receive
any maintenance releases or updates. However, Altova, at its option and in its sole discretion on
a case by case basis, may decide to offer maintenance releases to you as a courtesy, but these
maintenance releases will not include any new features in excess of the feature set at the time
of your purchase of the Software. In addition, Altova will provide free technical support to you for
thirty (30) days after the date of your purchase (the “Support Period” for the purposes of this
paragraph 6(a), and Altova, in its sole discretion on a case by case basis, may also provide free
courtesy technical support during your thirty (30) day evaluation period. Technical support is
provided via a Web-based support form only, and there is no guaranteed response time.
(b) If you have purchased SMP, then solely for the duration of its delineated Support
Period, you are eligible to receive the version of the Software edition that you have
licensed and all maintenance releases and updates for that edition that are released during your
Support Period. For the duration of your SMP’s Support Period, you will also be eligible to
receive upgrades to the comparable edition of the next version of the Software that succeeds
the Software edition that you have licensed for applicable upgrades released during your
Support Period. The specific upgrade edition that you are eligible to receive based on your
Support Period is further detailed in the SMP that you have purchased. Software that is
introduced as separate product is not included in SMP. Maintenance releases, updates and
upgrades may or may not include additional features. In addition, Altova will provide Priority
Technical Support to you for the duration of the Support Period. Priority Technical Support is
provided via a Web-based support form only and Altova will make commercially reasonable
efforts to respond via e-mail to all requests within forty-eight (48) hours during Altova’s business
hours (MO-FR, 8am UTC – 10pm UTC, Austrian and US holidays excluded) and to make
reasonable efforts to provide work-arounds to errors reported in the Software.
During the Support Period you may also report any Software problem or error to Altova. If Altova
determines that a reported reproducible material error in the Software exists and significantly
impairs the usability and utility of the Software, Altova agrees to use reasonable commercial
efforts to correct or provide a usable work-around solution in an upcoming maintenance release
or update, which is made available at certain times at Altova’s sole discretion.
Updating Software may require the updating of software not covered by this Agreement before
installation. Updates of the operating system and application software not specifically covered
by this Agreement are your responsibility and will not be provided by Altova under this
Agreement. Altova’s obligations under this Section 6 are contingent upon your proper use of the
Software and your compliance with the terms and conditions of this Agreement at all times.
Altova shall be under no obligation to provide the above technical support if, in Altova’s opinion,
the Software has failed due to the following conditions: (i) damage caused by the relocation of
the Software to another location or CPU; (ii) alterations, modifications or attempts to change the
Software without Altova’s written approval; (iii) causes external to the Software, such as natural
disasters, the failure or fluctuation of electrical power, or computer equipment failure; (iv) your
failure to maintain the Software at Altova’s specified release level; or (v) use of the Software
with other software without Altova’s prior written approval. It will be your sole responsibility to: (i)
comply with all Altova-specified operating and troubleshooting procedures and then notify Altova
immediately of Software malfunction and provide Altova with complete information thereof; (ii)
provide for the security of your confidential information; (iii) establish and maintain backup
systems and procedures necessary to reconstruct lost or altered files, data or programs.
(a) License Metering. The Software includes a built-in license metering module that is
designed to assist you with monitoring license compliance in small local networks. The metering
module attempts to communicate with other machines on your local area network. You permit
Altova to use your internal network for license monitoring for this purpose. This license metering
module may be used to assist with your license compliance but should not be the sole method.
Should your firewall settings block said communications, you must deploy an accurate means of
monitoring usage by the end user and preventing users from using the Software more than the
Permitted Number.
(b) License Compliance Monitoring. You are required to utilize a process or tool to
ensure that the Permitted Number is not exceeded. Without prejudice or waiver of any potential
violations of the Agreement, Altova may provide you with additional compliance tools should you
be unable to accurately account for license usage within your organization. If provided with such
a tool by Altova, you (a) are required to use it in order to comply with the terms of this
Agreement and (b) permit Altova to use your internal network for license monitoring and
metering and to generate compliance reports that are communicated to Altova from time to
time.
(c) Software Activation. The Software may use your internal network and Internet
connection for the purpose of transmitting license-related data at the time of installation,
registration, use, or update to an Altova Master License Server and validating the
authenticity of the license-related data in order to protect Altova against unlicensed or
illegal use of the Software and to improve customer service. Activation is based on the
exchange of license related data between your computer and the Altova Master License
Server. You agree that Altova may use these measures and you agree to follow any
applicable requirements. You further agree that use of license key codes that are not or
were not generated by Altova and lawfully obtained from Altova, or an authorized reseller
as part of an effort to activate or use the Software violates Altova’s intellectual property
rights as well as the terms of this Agreement. You agree that efforts to circumvent or
disable Altova’s copyright protection mechanisms, the license management mechanism,
or the Altova Master License Server violate Altova’s intellectual property rights as well
as the terms of this Agreement. Altova expressly reserves the rights to seek all available
legal and equitable remedies to prevent such actions and to recover lost profits,
damages and costs.
(d) LiveUpdate. Altova provides a new LiveUpdate notification service to you, which is
free of charge. Altova may use your internal network and Internet connection for the purpose of
transmitting license-related data to an Altova-operated LiveUpdate server to validate your
license at appropriate intervals and determine if there is any update available for you.
(e) Use of Data. The terms and conditions of the Privacy Policy are set out in full at
[Link] and are incorporated by reference into this Agreement. By your
acceptance of the terms of this Agreement and/or use of the Software, you authorize the
collection, use and disclosure of information collected by Altova for the purposes provided for in
this Agreement and/or the Privacy Policy. Altova has the right in its sole discretion to amend this
provision of the Agreement and/or Privacy Policy at any time. You are encouraged to review the
terms of the Privacy Policy as posted on the Altova Web site from time to time.
(f) Audit Rights. You agree that Altova may audit your use of the Software for compliance
with the terms of this Agreement at any time, upon reasonable notice. In the event that such
audit reveals any use of the Software by you other than in full compliance with the terms of this
Agreement, you shall reimburse Altova for all reasonable expenses related to such audit in
addition to any other liabilities you may incur as a result of such non-compliance.
(g) Notice to European Users. Please note that the information as described in
paragraph 7(d) above may be transferred outside of the European Economic Area, for purposes
of processing, analysis, and review, by Altova, Inc., a company located in Beverly,
Massachusetts, U.S.A., or its subsidiaries or Altova’s subsidiaries or divisions, or authorized
partners, located worldwide. You are advised that the United States uses a sectoral model of
privacy protection that relies on a mix of legislation, governmental regulation, and
self-regulation. You are further advised that the Council of the European Union has found that
this model does not provide "adequate" privacy protections as contemplated by Article 25 of the
European Union's Data Directive. (Directive 95/46/EC, 1995 O.J. (L 281) 31). Article 26 of the
European Union's Data Directive allows for transfer of personal data from the European Union
to a third country if the individual has unambiguously given his consent to the transfer of
personal information, regardless of the third country's level of protection. By agreeing to this
Agreement, you consent to the transfer of all such information to the United States and the
processing of that information as described in this Agreement and the Privacy Policy.
This Agreement may be terminated (a) by your giving Altova written notice of termination; (b) by
Altova, at its option, giving you written notice of termination if you commit a breach of this
Agreement and fail to cure such breach within ten (10) days after notice from Altova; or (c) at
the request of an authorized Altova reseller in the event that you fail to make your license
payment or other monies due and payable. In addition the Agreement governing your use of a
previous version of the Software that you have upgraded or updated is terminated upon your
acceptance of the terms and conditions of the Agreement accompanying such upgrade or
update. Upon any termination of the Agreement, you must cease all use of the Software that
this Agreement governs, destroy all copies then in your possession or control and take such
other actions as Altova may reasonably request to ensure that no copies of the Software remain
in your possession or control. The terms and conditions set forth in Sections 1(h), 1(i), 1(j), 1(k),
1(l), 2, 5, 7, 9, 10, 11, and 11 survive termination as applicable.
The Software was developed entirely at private expense and is commercial computer software
provided with RESTRICTED RIGHTS. Use, duplication or disclosure by the U.S. Government or
a U.S. Government contractor or subcontractor is subject to the restrictions set forth in this
Agreement and as provided in FAR 12.211 and 12.212 (48 C.F.R. §12.211 and 12.212) or
DFARS 227. 7202 (48 C.F.R. §227-7202) as applicable. Consistent with the above as
applicable, Commercial Computer Software and Commercial Computer Documentation
licensed to U.S. government end users only as commercial items and only with those rights as
are granted to all other end users under the terms and conditions set forth in this Agreement.
Manufacturer is Altova GmbH, Rudolfsplatz 13a/9, A-1010 Vienna, Austria/EU. You may not
use or otherwise export or re-export the Software or Documentation except as authorized by
United States law and the laws of the jurisdiction in which the Software was obtained. In
particular, but without limitation, the Software or Documentation may not be exported or
re-exported (i) into (or to a national or resident of) any U.S. embargoed country or (ii) to anyone
on the U.S. Treasury Department's list of Specially Designated Nationals or the U.S.
Department of Commerce's Table of Denial Orders. By using the Software, you represent and
warrant that you are not located in, under control of, or a national or resident of any such
country or on any such list.
Notwithstanding the foregoing, if you are an agency, instrumentality or department of the federal
government of the United States, then this Agreement shall be governed in accordance with the
laws of the United States of America, and in the absence of applicable federal law, the laws of
the Commonwealth of Massachusetts will apply. Further, and notwithstanding anything to the
contrary in this Agreement (including but not limited to Section 5 (Indemnification)), all claims,
demands, complaints and disputes will be subject to the Contract Disputes Act (41 U.S.C.
§§7101 et seq.), the Tucker Act (28 U.S.C. §1346(a) and §1491), or the Federal Tort Claims
Act (28 U.S.C. §§1346(b), 2401-2402, 2671-2672, 2674-2680), FAR 1.601(a) and 43.102
(Contract Modifications); FAR 12.302(b), as applicable, or other applicable governing authority.
For the avoidance of doubt, if you are an agency, instrumentality, or department of the federal,
state or local government of the U.S. or a U.S. public and accredited educational institution,
then your indemnification obligations are only applicable to the extent they would not cause you
to violate any applicable law (e.g., the Anti-Deficiency Act), and you have any legally required
authorization or authorizing statute.
The Software may contain third party software which requires notices and/or additional terms
and conditions. Such required third party software notices and/or additional terms and
conditions are located at our Website at [Link] and are
made a part of and incorporated by reference into this Agreement. By accepting this
Agreement, you are also accepting the additional terms and conditions, if any, set forth therein.
If you are located in the European Union and are using the Software in the European Union and
not in the United States, then this Agreement will be governed by and construed in accordance
with the laws of the Republic of Austria (excluding its conflict of laws principles and the U.N.
Convention on Contracts for the International Sale of Goods) and you expressly agree that
exclusive jurisdiction for any claim or dispute with Altova or relating in any way to your use of the
Software resides in the Handelsgericht, Wien (Commercial Court, Vienna) and you further
agree and expressly consent to the exercise of personal jurisdiction in the Handelsgericht, Wien
(Commercial Court, Vienna) in connection with any such dispute or claim.
If you are located in the United States or are using the Software in the United States then this
Agreement will be governed by and construed in accordance with the laws of the
Commonwealth of Massachusetts, USA (excluding its conflict of laws principles and the U.N.
Convention on Contracts for the International Sale of Goods) and you expressly agree that
exclusive jurisdiction for any claim or dispute with Altova or relating in any way to your use of the
Software resides in the federal or state courts of the Commonwealth of Massachusetts and you
further agree and expressly consent to the exercise of personal jurisdiction in the federal or
state courts of the Commonwealth of Massachusetts in connection with any such dispute or
claim.
If you are located outside of the European Union or the United States and are not using the
Software in the United States, then this Agreement will be governed by and construed in
accordance with the laws of the Republic of Austria (excluding its conflict of laws principles and
the U.N. Convention on Contracts for the International Sale of Goods) and you expressly agree
that exclusive jurisdiction for any claim or dispute with Altova or relating in any way to your use
of the Software resides in the Handelsgericht, Wien (Commercial Court, Vienna) and you
further agree and expressly consent to the exercise of personal jurisdiction in the
Handelsgericht Wien (Commercial Court, Vienna) in connection with any such dispute or claim.
This Agreement will not be governed by the conflict of law rules of any jurisdiction or the United
Nations Convention on Contracts for the International Sale of Goods, the application of which is
expressly excluded.
13. TRANSLATIONS
Where Altova has provided you with a foreign translation of the English language version, you
agree that the translation is provided for your convenience only and that the English language
version will control. If there is any contradiction between the English language version and a
translation, then the English language version shall take precedence.
This Agreement contains the entire agreement and understanding of the parties with respect to
the subject matter hereof, and supersedes all prior written and oral understandings of the
parties with respect to the subject matter hereof. Any notice or other communication given
under this Agreement shall be in writing and shall have been properly given by either of us to
the other if sent by certified or registered mail, return receipt requested, or by overnight courier
to the address shown on Altova’s Web site for Altova and the address shown in Altova’s records
for you, or such other address as the parties may designate by notice given in the manner set
forth above. This Agreement will bind and inure to the benefit of the parties and our respective
heirs, personal and legal representatives, affiliates, successors and permitted assigns. The
failure of either of us at any time to require performance of any provision hereof shall in no
manner affect such party’s right at a later time to enforce the same or any other term of this
Agreement. This Agreement may be amended only by a document in writing signed by both of
us. In the event of a breach or threatened breach of this Agreement by either party, the other
shall have all applicable equitable as well as legal remedies. Each party is duly authorized and
empowered to enter into and perform this Agreement. If, for any reason, any provision of this
Agreement is held invalid or otherwise unenforceable, such invalidity or unenforceability shall
not affect the remainder of this Agreement, and this Agreement shall continue in full force and
effect to the fullest extent allowed by law. The parties knowingly and expressly consent to the
foregoing terms and conditions.
Activity,
1 Add,
diagram to package, 20
insert - delete from Model Tree, 67
1.4,
Model link, 96
Java, 59
move - delete - diagram, 85
new project, 112
package to project, 20
5 Application,
external - arguments, 418
5.0, Arguments,
Java, 59 external tools, 418
Artifact,
add to node, 49
manifest, 49
A Assign,
shortcut to a command, 420
Absolute, stereotype, 291
and relative links, 172 Association,
Abstract, aggregate/composite, 28
class, 28 automatic display of, 162
Activation box, between classes, 28
Execution Specification, 238 class memberEnd, 162
B message, 243
Call message,
Background, go to operation, 243
status updates, 341 CallBehavior,
status updates - increase interval, 326 insert, 187
transparent color, 299 CallOperation,
Ball and socket, insert, 187
interface notation, 269 Cascading,
Bank, styles, 76
sample files, 101 Catalog,
Base, file - XMLSpy Catalog file, 424
class, 34 Center,
Base class, elements, 89
Installer,
multi-user, 14
Installing,
version control systems, 334 L
Instance,
Label,
diagram, 39
show / hide text label, 85, 165
multiple class, and display of, 269
Layout, 406
object, 39
Legal information, 453
Integrating,
License, 457
subprojects into main, 320
information about, 453
Intelligent,
License metering,
autocomplete, 28
in Altova products, 455
Interaction operand, 239
Lifeline,
multi-line, 239
attributes, 238
Interaction operator,
General Value, 261
defining, 239
typed property as, 238
Interaction Overview,
Lifelline,
icons, 377
goto, 238
inserting elements, 231
Limit,
Interaction Overview diagram, 231
constrain elements, 67
Interaction use, 242
Line,
Interface,
orthogonal, 44
ball and socket, 269
weight/thickness in diagrams, 85
implementing, 269
Line break,
Introduction, 6
in actor text, 20
Line up,
elements, 89
J Lines,
formatting, 39
Java, snap lines, 424
code, 434 Link,
code and class file names, 134 create hyperlink, 96
code to model correspondence, 137 Model Tree element, 96
exception, 120 Links,
import binary file, 125 relative to documentation, 172
namespace root, 135 List,
versions supported, 59 unused elements, 67
JavaDocs, 82 Local files,
absolute or relative links, 172
Local project, 348
Location,
K move project, 112
go to operation, 243
inserting, 243
moving, 243
M numbering, 243
Timing diagram, 266
Mail,
Messages pane, 84
send project, 389
Method,
Make same,
Add raised exception, 269
height - width - size, 89
generate multiple sequence diagram from, 251
Manifest,
generate sequence diagram from, 248
artifact, 49
generate sequence diagram from getter/setter, 251
Mapping,
Methods,
C# to/from model elements, 138
getter / setter, 269
Java to/from model elements, 137
Minimalist,
[Link] to/from model elements, 140
project - code engineering, 115
XML Schema to/from model elements, 139
Minimum,
Member end,
code generation conditions, 135
stereotype, 291
Missing elements,
MemberEnd,
listing, 67
association, 162
Model,
Menu,
changing class name - effect in Java, 134
Add menu to, 418
link, add, 96
add/delete command, 417
Model from code,
customize, 421
showing associations, 59
Default/XMLSPY, 421
Model Tree,
delete commands from, 421
create hyperlink to element in..., 96
edit, 394
opening packages, 67
file, 389
pane, 67
help, 431
select attribute in, 74
layout, 406
Modeling,
project, 397
enhance performance, 160
tools, 408
Mouse,
view, 407
copy, paste, 91
window, 430
Move,
Merge,
project, 112
2-way project merge, 145
Moving message arrows, 243
3-way manual project merge, 148
MS Visual Source Safe, 326
3-way project merge, 146
MS Visual Studio .Net,
code from model, 53
csproj - csdproj project file, 397
code into model, 397
Multi mode,
create in Activity, 189
autocompletion, 89
ignore directory, 424
Multiline,
model into code, 397
actor text, 20
projects, 144
Multi-line,
Message,
interactionOperand, 239
arrows, 243
use case, 20
call, 243
Multiple elements,
create object, 243
styles display, 76
W
Warning,
messages, 84
syntax check, 53
Web,
hyperlink, 96
Weight,
Line thickness, 85
Window, 430
restore to default, 408
Workflow,
project, 112
Working directory,
source control, 348
X
XML Schema,
annotation, 305