Frequently Asked Questions

Contents

Show Stoppers and Critical Issues
Platform-specific Issues
Diagramming
Basic Functions
Relational Data Modeling
Domain Modeling
Reverse Engineering
Business Process Modeling
Class Modeling


Show Stoppers and Critical Issues

Q: How can I install and run Open ModelSphere?
A: There are several ways to launch Open ModelSphere:
  1. With an auto installer program (setup program with a .exe file extension), for Windows users.
  2. From a batch file (.bat) for Windows users or shell file (.sh) for Linux users.
  3. From the Eclipse or NetBeans IDE (on any machine that runs Eclipse or NetBeans). 
  4. From an Internat browser, using the Java WebStart technology.
 
Q: When I launch Open ModelSphere, I get a "Exception in thread "AWT-EventQueue-4" GC Warning: Out of Memory!".  What can I do to run Open ModelSphere?
A: If you launch Open ModelSphere from a batch file (.bat) on Windows, or fropm a shell file (.sh) on Linux, increase the value of the Java parameters for memory allocation:
  • set the "initial memory allocation" parameter to 32 megs : -ms32m
  • set the "maximum memory" parameter to 1024 megs : -mx1024m
Consult the Java documentation for more details on these parameters.

For OMS 3.0, use a recent virtual machine (Java 1.6) which is more efficient in term of memory than a older virtual machine (Java 1.4).  OMS 3.1 requires Java 1.6 and higher.
 
Q: What is the recommented memory setting for running Open ModelSphere ?
A: We recommend the following:
  • set the "initial memory allocation" parameter to 32 megs : -ms32m
  • set the "maximum memory" parameter to 1024 megs : -mx1024m
We suggest that we set the initial memory to 32 MB.  For many users with normal model this should be OK and this would use less of the system's resources.  The initial memory used by ModelSphere is between 5 MB and 6 MB (without any opened project).  With the previous version, using java 1.4, the initial memory was over 14 MB (probably around 15-16 MB).  They have done a good job reducing the initial memory requirement for java applications.   The use of higher initial memory is to avoid dynamic allocation to be performed when we know for sure that more memory will be needed.  With 32 MB, this should be enough for most cases.

For the maximum memory, it should not be a problem to increase the value to 1024MB.  Java won't reach that number unless it needs that memory.  The variations between 32 (ms) and 1024 (mx) are dynamic and the virtual machine will allocate or free memory depending of the current requirements.  That being said, we should not go higher than 1024 since 32bit windows system probably wont be able to give more anyway (probably this is the limit for a single process).  But 1024 MB is a lot of memory.  To fill up that much memory, a project would needs many big images and tons of objects.  Is there really an existing project that big??  768 MB could be a compromise too.  Or we could make more explicit the possibility to increase that number up to 1024m.  512 MB is probably hard to reach for most users.  But 1024 MB wont crash system with 512 MB, Windows will allocate memory in the virtual memory (hard drives).
 
Q: I am stuck in Open ModelSphere.  Each time I launch the application, the Model Creation wizard opens but it is empty.  There is no way to close the wizard window. If I quit the application and restarts again, the same problem occurs again and again.  How can I restore Open ModelSphere?
A: You could tell Open ModelSphere to not open the wizard when the application starts. To do so (manually):
  1. Go to the user directory (for instance "C:\Users\Admin" on Windows 7, or "C:\Documents and Settings\.." on Windows XP).
  2. Open the ".Open ModelSphere" folder (if you do not see this folder, adjust the Windows Explorer settings to display hidden files).
  3. Open the application.properties.
  4. Replace the line:
org.modelsphere.sms.features.startupwizard.StartupWizardModel.ModelCreationWizardEnabled=true

with:

org.modelsphere.sms.features.startupwizard.StartupWizardModel.ModelCreationWizardEnabled=false

Q: Open ModelSphere was running well when I installed it, but now it has malfunctions. How can I restore the user preferences to the default values?
A: Open ModelSphere stores its settings and user preferences in the ".Open ModelSphere" hidden folder.  If you delete the contents of this folder, Open ModelSphere will "forget" all the settings done after it was installed.
  1. Go to the user directory (for instance "C:\Users\Admin" on Windows 7, or "C:\Documents and Settings\.." on Windows XP).
  2. Delete the ".Open ModelSphere" folder (this will delete all user preferences).
  3. Delete the workspace.xml file (this will delete the current workspace).
When Open ModelSphere quits, the project that is open and the diagrams displayed are saved in the workspace file.  When Open ModelSphere restarts, it will automatically open the project used at the last session. If the project file (.sms) is moved, altered, or corrumpted, then Open ModelSphere could experience problems when it starts and tries to open it. If you see problems at start time, then quitting OMS, deleting the workspace and starting again may solve the problems.

In Open ModelSphere 3.2, when abnormal exit is detected, the application automatically offers to the user to delete user preferences and workspace.   
 
Q: After working in the diagram, the nodes of the explorer cannot be expanded or collapsed. It happens after several minutes of work, in the Java Look and Feel (Steel theme).  How do I solve the problem?
A: The problem only happens in Open ModelSphere 3.0, in the Java Look and Feel.

If you are using Open ModelSphere 3.0, restart the application in the native Look and Feel (Windows Look and Feel for Windows users).

Open ModelSphere 3.1 only works in the native Look and Feel, so the bug never happens in this version.


Platform-specific Issues

Q: Is it possible to run Open ModelSphere on Linux?
A: Because Open ModelSphere (OMS) is implemented in Java, it can run under any platform on which a Java interpreter is implemented.  This includes the Linux operating system and Macintoch computers.

OMS has been successfully tested on Ubuntu 8.10 and Linux Mint (7,8,9 and 10)

To run OMS under Linux, take the .bat installation and re-write the following batch file:

openModelSphere.bat

"<your_path>/javaw.exe" -ms64m -mx512m -ss16m -classpath ".\modelsphere.jar;
.\resources.zip;.\resources;.\targets;.\lib\jakarta-regexp-1.5\jakarta-regexp-1.5.jar;
.\lib\jython-2.2.1\jython.jar"  org.modelsphere.sms.Application \\pause

Into this shell file:

openModelSphere.sh 

#!/bin/bash
java -ms64m -mx512m -ss16m -cp .:./modelsphere.jar:./resources.zip:./resources:
./targets:./lib/jakarta-regexp-1.5/jakarta-regexp-1.5.jar:./lib/jython-2.2.1/jython.jar
org.modelsphere.sms.Application

Alternatively, you can also try:

#!/bin/bash
# Change the path according to your OMS directory.
cd /opt/openmodelsphere
java -ms64m -mx512m -ss16m -classpath  "./modelsphere.jar:./modelsphere.jar:./resources.zip:./resources:
./targets:./lib/jakarta-regexp-1.5/jakarta-regexp-1.5.jar:
./lib/velocity-1.6.1/velocity-1.6.1.jar:
./lib/jazzy-core/jazzy-core.jar:./lib/velocity-1.6.1/lib/commons-collections-3.2.1.jar:

./lib/velocity-1.6.1/lib/commons-lang-2.4.jar:./lib/lablib-checkboxtree-3.0.2.jar:
./lib/jython-2.2.1/jython.jar" org.modelsphere.sms.Application

Take the latest openModelSphere.bat (new libraries (.jar) may be added in the future).

It is also possible to launch OMS from the Eclipse IDE, which runs under Linux.

Bugs reported on Linux: The message about the licence when OMS starts up gives an error: the licence text is not shown. This is possibly due to an error in the path. 

Credits: Renaud Levesque for testing OMS under Linux Ubuntu and writing these notes.  Thanks also to Adam Labranche, Louis-Etienne Beaumont for testing it under Linux Mint.
 

Q: Is it possible to run Open ModelSphere on Macintosh?
A: In theory yes, but never tested.
 

Diagramming

Q: I have used the reverse engineering function and obtained a diagram; I would like to export this diagram in a Open Office or Word document.  How can I do?
A: The simplest way to do so is:
  1. In Open ModelSphere, find the diagram in the explorer, right-click the node and select "Save the diagram as an image".
  2. Check the output folder, and then press Save.
  3. In Windows Explorer, find the image and drag it your text document.
 
Q: I would like to copy only a part of the diagram (just four or five tables).  Is it possible?
A: In this case:

  1. Create a new empty diagram.  In the original diagram, select the tables you want to copy, right-click on them, and select "Duplicate in Diagram".  Then go to the newer diagram, and select "Save the diagram as an image" as explained 
  2. Or, expand the diagram on several pages, and then select "Save the diagram as an image". In the Print Window, generate one .jpeg file per page.  Then choose the right image file, and copy it in your text document.
 

Basic Functions

Q: How can I find an element in my modeling project?
A: By doing EditFind or CTRL-F. 
 
Q: Why Edit→Find is disabled, or why CTRL-F does not respond?
A: Select an element in the explorer or in the diagram.  This will enable EditFind.
 

Relational Data Modeling

Q: How can I define a primary key? 
A: There are several ways to do so:
  1. Click the Key tool, then click the column on which the primary key is based; 
  2. Right-click the table, Add→Primary Key.  Then right-click the Primary Key, open its Properties, click the Columns tab and add a column with the Link button.
  3. Do Tools→Generate Primary Keys to generate all missing primary keys in a batch (Open ModelSphere 3.1 and abore only).

Q: How can I define a key dependency? 
A: There are two ways to do so:
  1. If you're using the Datarun notation, click the Key tool, and then click the 1..1 association end.  1..1 will be underlined to indicate a key dependency.
  2. Right-click the Primary Key, open its Properties, click the Dependencies tab and add a dependency with the Link button. This will work for all notations.  If you are using the Datarun notation, the 1..1 association end will be underlined to indicate a key dependency.  If you are using the Information Engineering+ notation, a black diamond will be placed on the association end to indicate a key dependency.


Q: If a open the properties of a column, I cannot define it as a primary key. Why? 
A: Columns and primary keys are two different concepts.  If you have a column name 'sku' and want to define it as the primary key of your table, create a primary key first, open the primary key's properties, click the Columns tab and then associate it (with the Link button) with the 'sku' column.  

Q: When I generate the foreign keys, the name of the columns that are part of a foreign key are prefixed with the name of the associated table.  Why?
A: It is to prevent generating two foreign columns with the same name. For instance, if I have:

Person
PK id

Company
PK id

It is preferable to have:

Employment
FK1 Person id
FK2 Company id

instead of:

Employment
FK1 Person id
FK2 Company id

Note that OMS 3.1 generates foreign columns prefixes with table name, while OMS 3.0 generates foreign columns without the prefix.
 
Q: Can I have the option to generate the foreign column based on the name of the source column only (without the prefix) ?
A: No, there is no such option.  As an automated command, the "Generate Foreign Keys" must:
  • keep the data integrity; i.e. a valid model before the invocation of this command should stay valid after the invocation.
  • not introduce confusion; if we have two generated columns names 'id', is it unclear that one column is associated to the Person table and the other one is associated to the Company table. 
 
Q: How can I get rid of these tables prefixes ?
A: After executing "Generate Foreign Keys", a user can (and should) give meaningful names to the generated foreign column. For instance, after the automated generation of foreign keys, it is recommended to rename columns

Employment
FK1 Person id
FK2 Company id

to:

Employment
FK1 Employee
FK2 Employer

Q: When I create a new primary key or foreign key, they are named "Primary Key" and "Foreign Key" by default.  Is there a way, when we generate the foreign keys, to choose a name that is more meaningful, such as the name of the connector or the origin table? 
A: There is no such option in OMS 3.1.  It's up to the user to manually give meaningful name to primary and foreign keys.


Q: Is it possible to automatically create the referential rules of a model? 
A: Yes, it is possible in OMS 3.1.  Select ToolsGenerate Referential Rules.  Rules (SET_NULL, PROPAGATE, RESTRICT) are generated based the multiplicities of association ends.


Q: Is it possible to automatically create the triggers of a model? 
A: There is no such feature in OpenModelSphere 3.1.  It would be possible to implement this fonction by plug-ins.

  
Q: It is possible to link a trigger to a constraint, to tell whether a trigger is executed if a given constraint returns true?
A: There is no such feature in OpenModelSphere 3.1. 



Domain Modeling

Q: What is the purpose of a domain in relational modeling?
A: Domains represent an abstract data type, and have many purposes.

The most common way to use domains is as an indirection between the physical type and the column,  For instance, I could define a SHORT_NAME domain that has VARCHAR(32) as type.  Then I use the SHORT_NAME domain to type several columns in my data model.  If I decide later to change the length of my short names from 32 to 64 characters, then I make the change in one place (the type of SHORT_NAME domain), instead of having to change the length in each column typed SHORT_NAME.  

In this case, the category field of SHORT_NAME is DOMAIN. The fields of a domain are here useless (and ignored when we generate SQL code for a DBMS such as Oracle). 

Q: For each domain, it is possible to create "fields". What is the purpose of those domain fields?
A:  As explained below, if the category of a domain is DOMAIN, its fields are useless and ignored for SQL code generation.

If the category of a domain is DISTINCT, then this abstract data type can take a distinct value among a predefinite set of possible values. For instance a distinct type named CARDINAL_DIRECTION would have as possible values the set {NORTH, SOUTH, EAST, WEST}.  Each possible value corresponds to a "allowable value" under the CARDINAL_DIRECTION distinct type.

This is equivalent to an enumeration in object-oriented languages.  Some object-relational DBMS such as Oracle supports this concept (this will generate the CREATE DISTINCT TYPE clause).

Finally, if the category of a domain is STRUCTURED, then the fields are the elements of the structure.  For instance, I could define a structured domain named ADDRESS, with the fields CIVIC_NUMBER, STREET, CITY, etc. and then type several columns with this structured domain. This corresponds to a ROW TYPE in Oracle.

Reverse Engineering

Q: used the reverse engineering function to create a diagram of my database.  I spent a long time to re-organize my diagram.   If my database changes, how can I obtain latest databases changes without losing all my diagram layout?
A: If there are a lot of changes in the database since the last reverse engineering, it is probably a good idea to delete the old diagram, to reverse engineering the database in a new diagram and re-organize the whole diagram manually.

If there are just a few modifications in the database, you could perform a reverse engineering in a separate data model, and using the "Compare and Integrate" function, integrate changes into the original data model: the diagram of the original data model will change accordingly, and you won't lose the overrall organization of the diagram.



Business Process Modeling

Q: Is it possible to decorate business processes with small icons, to categorize them?  For instance, some of my business processus are related to forms, other are related to data generators, and I would like to differentiate them graphically.
A: Yes, qualifiers are used to decorate processes, and qualifier icons are placed below the process box.    
 
Q: Is it possible to put qualifier icons elsewhere than below process boxes?
A: No, they cannot appear within boxes, and on the top of boxes. They can only appear below boxes.    
 
Q: A business process is associated to a qualifier, but there is no icon under the process box in the diagram. Why? 
A: If you forgot the specify the icon of a qualifier, then no icons will appear under the process box.
 
Q:  Besides qualifier icons, how can I categorize business processes?
A: You can create your own UML stereotypes for business processes (one named "Form", another named "Data Generator"), and then associate them with specific processes.  Note that a process (or any other concept) may not have more than one stereotype.  

Resources are primarily used to represent human and artefacts that have time and cost constraints, but you can create category ressources and associate them to processes.  Ressources can be shown graphically, depending of the definition of a given notation.  
 

Class Modeling

Q: I am using the tool to generate the source code for the C # language from a class model.  I get the following error:

org.apache.velocity.exception.MethodInvocationException: Invocation of method 'getQualifiedName' in class com.neosapiens.plugins.codegen.wrappers.DbPackageWrapper threw exception java.lang.NullPointerException at com/neosapiens/plugins/codegen/simplecsharp/SimpleCSharp.vm[line 1, column 26]

What can I do to generate C# code?
A: The problem (NullPointerException on getQualifiedName()) occurs when you have classes at the class model level (instead of within a package), and you
invoke "Code Generation.." from the class model node in the explorer.

Create a package under your class model; move all your top-level classes into this package, then right-click the package node in the explorer and choose "Code Generation.." again.  It works for Open ModelSphere 3.1.

 In Open ModelSphere 3.2, this problem is fixed and you can generate code from a package or from the class model, at your preference.