How the Harmonized Model Repository Works, And How to Work With It The purpose of this note is the inform members of ISO TC 211 how to build a editing environment for the Harmonized model. A slightly different but related note is available at: https://www.seegrid.csiro.au/wiki/bin/view/AppSchemas/ConfiguringUMLToolForHollowWorld Description of an Editing Environment A working client (UML editor) for the Harmonized Model repository has 3 components involved, as follows: 1. The SVN (Subversion) Server at JRC, in Italy. 2. An SVN Client on the editor's machine. 3. A working copy of Enterprise Architect (EA, almost any recent version, 8 or later is preferred). The same setup could act as a viewer, but the overhead for SVN would need to be balanced against the need for the “absolutely latest model.” If ‘timeliness” is not an issue, the HMMG files on the ISO TC 211 web will still be available for viewing. The SVN Server maintains an organized structure of text files. For EA purposes, each one of them is an XMI file for a version of one of the controlled packages. For the Harmonized model, these packages include: 1. 2. 3. 4. one dated package per document per edition at FDIS or above, one package for each ISO number containing all dated versions, a drafts package for project documents and one package (usually in Drafts) per active project or editing committee. The Server also maintains a complete copy and history of every controlled package check-in, or check-out operations by user. Given justification, a maintenance person with the proper privileges can restore the data or any part of the data to any state at any prior check-in operation. Anyone can copy a state to their machine for a particular date or version. Because of the information subversion maintains, who changed what in any part of the HM is discoverable. Using functions in EA, the precise nature of those changes can be listed. The SVN client allows the user to keep a 'current-state' copy of any part of the repository local to the client machine. The EA application (UML editor) is the only program that actually interacts with the data; the client and server just move files around. All interactions by the editors with the model should be through the EA application and not any other direct SVN application. Most of the EA editor works the same whether or not the packages are controlled. The differences are the package control operations, most of which are available in the context menu for packages. The Client at the request of the EA application interacts with the SVN Server at the repository, mostly through SVN-specific XMI exports and imports. During set-up, the client records username and password for the repository and uses it whenever called upon by the EA application to interact with the server (usually either writing a newly edited package in XMI that is passed to the server, or checking dates on the server and client and importing updated XMI into the EA file). When the user checks out a package, the client locks the package on the server, gets a most recent copy of the XMI and EA loads it and allows the editor to modify that package. When the user checks that same package in, the client cascades the current copy of the XMI to the Server and unlocks it. EA locks any package not currently checked-out by the user in the client application’s view of the model. The final working state of these three software components and the repository is: Repository ↔ Server ↔ Client (local XMI copy) ↔ EA (file) At any given time, there are 3 copies of the current data, the official files in the repository (with all backups), a local copy of the most recent files synchronized by the client, and the current working copy in the EA editor's file. When the editor does a check-in for all locked controlled packages or does a "get all latest," all 3 copies of the model are identical. NOTE: When doing a “get all latest” you are offered to read-all regardless of date. This will take some time and normally if you do “get all latest” on a regular basis, only a few packages will have been changed recently. If you select the “import changed files only” the update will be quicker. Getting a command prompt in Windows If you know how to do this, skip to the next section. You can get a command window by: Using the start menu, and run ‘cmd’ (in Win7 use the search box on the start menu) or Using a browser context menu for the directory to “open command prompt here” (XP and earlier). You can also create a shortcut to C:\Windows\system32\cmd.exe (may be slightly different depending on your Windows version and how it was built). Most versions of Windows will recognize a shortcut target of “%windir%\system32\cmd.exe”. Clicking on it should open the ‘dos-like’ command window with a ‘command-line’ interface while clicking on the cmd.exe file will open up the window in the wrong directory (probably \system32) for what you want to do, but you can change directories with a ‘cd’ command once in the window. In the window “help <command-name>” brings up ‘dos’ help text. For the shortcut options in the property dialog from the context menu, I’d suggest: o Start in: %HOMEDRIVE%%HOMEPATH% o Run: “Normal Window” o Under “Advanced” you may need to “run as administrator” depending on your machine setup. “exit” closes a command window. SETTING UP THE SYSTEM ON THE CLIENT MACHINE This section describes how to create an EA editing environment for the harmonized model repository at JRC. You will need: a. A user-name and password for the repository [only you edit the model], b. A Subversion client installed on the machine and c. A reasonable recent edition of Enterprise Architect. 1. If you do not already have a SVN client, download and install the CollabNet Subversion Command-Line Client from http://www.collab.net/downloads/subversion. Other clients are available, but I've never use them. SVN is a 'standard' and most all clients should work - but you have no guarantees. 2. If you do not already have a user-name and password, contact the HMMG convenor for one. It may take a few days to get. If you are only looking for read access, use the ISO TC 211 Document Registry and password (as of Feb. 2011, pass = T***). If you do not like the password you get, change it immediately since it will be stored in the setup. If you change it latter you will have to redo part of the set-up 3. If do not have an EA editor, acquire one from SPARX (http://www.sparxsystems.com.au/). If your current copy is older than version 8, you probably should download the latest build and install it (there have been very useful user interface improvements for 8 that are helpful in editing [or dealing with] the HM). Because you need to construct files during set-up, you need an editor, the viewer will not suffice. 4. In the directory you've chosen for a local copy of the repository, in a command window (see above for how) using your user-name <username> run: svn checkout https://inspire-twg.jrc.it/svn/iso/ --username <username> --password <password> [You can now leave the <username> out. It will not ask for password. The JRC repository assumes that all new SVN connections are read-only. It will skip steps 5 and 6. The resulting document is read only and you can stop at this unless you need to edit part of the Harmonized Model. If you need a password to edit (and are an official editor of a draft ISO TC 211doucment), contact the Convenor of the HMMG.] 5. When you run the ‘svn’ by hitting ‘enter’, you'll get a long error/informational message, ending in "accept permanently?" Accept by entering the single letter: p 6. It will ask for a password. Give it the one that goes with the username. ] 7. It will then load a copy of the isotc211 model repository in your current directory. It will be called "iso" and have a special icon for ‘svn.’ At this point, you've got the bottom of the final structure in place except that the local copy is as yet blank: repository ↔ server ↔ client (local copy) 8. Type exit at the prompt to quite the ‘cmd’ window. You’ll populate the local copy in the next step. To complete the system and read in the data, when the previous step is done: 9. Open EA and create an empty EA model file. 10. Use the main menu to open a Version Control Dialog: Project → Version Control → Version Control Settings 11. Set the following in the dialog: Don't click private, Unique ID: Type: Working Copy Path: your working copy is a shared model isotc211 Subversion (the path to 'iso' from SVN step, i.e. where svn’s ‘iso’ directory is) Subversion Exe Path: (location of svn.exe for the client – probably like C:\Program Files\CollabNet Subversion Client\svn.exe) Click save and wait for it to finish. 12. Once that it done, go to the model browser (usually on the right) and use the context menu: Package Control → Get Package. 13. The dialog will ask for the repository (from step 8), and you pick from a drop down menu (should be only one choice at this time). 14. It then shows you a list of XMI files in the repository, pick iso/isotc211 15. When that is done, there should be a new package in the model called "ISO TC211.' It is really an empty shell at this time. 16. Using the same context menu as before: Package Control → Get All Latest. 17. There is an option to load only changed models. Since you're just starting it won't make a difference, since all of them are 'new.' The import should take a while and load all the sub-packages of the model; the model browser is a good indication of what is happening and how far it has gotten, since it is update when each XMI mentioned in the isotc211 root is loaded. 18. At this point, all packages are locked, but you can browse. The full structure is now in place: Repository ↔ Server ↔ Client (local XMI copy) ↔ EA (file) 19. When editing you need to check-out (don’t use branch, it is incompatible with pessimistic locking, and the way the HM is maintained). 20. If you need to create a package for an entire document; during the dialog box to give it a name, be sure that you indicate that the package is to be controlled. That will lead to another dialog to give a place for the new XMI of the package to do within the SVN repository. Most drafts will go in iso/isotc211/drafts/trunk and should be given a mnemonic name, usually something to fit this pattern: ISO <project-number>[-<part-number>][:date][document short name] 21. The final position and name of the IS model will be determined by the HMMG, probably through a then-current policy. Each time you begin, it is probably wise to repeat the "Get All Latest." Only the packages not currently checked-out will be refreshed. Before you can edit anything you will need to do a 'check out' for the controlled package where your edits will be most directly contained. Packages higher up the hierarchy need not be checked out. When you're done editing, check it back in. In special circumstances it is reasonable to keep something checked out between sessions - but if you always have a net connection, it is not worth the risk. SVN can roll back to (recover) any ‘check-in’ point. If you try to edit that which you have not checked out, EA will not let you. If you try to check out things you do not have write access to, EA and SVN will not let you. Both the CollabNet and SPARX have additional information in both help and web documents. Getting SVN to ask for your password. (just in case) This will allow you write access to the parts your user has access to using the EA editor. If you do not read write access, skip this. Since the JRC assumes read-only, you have to trick it in to asking for your user name. If you want to use the command line interface, use the EA suggestion: Open EA Help, search for the “Verify the SVN Workspace” topic Follow the directions completely. Delete any file you created If you have Tortoise SVN installed, you can do a similar thing using its context menu. In your respository, if you have access to Drafts, go to …\iso\isotc211\Drafts\trunk and use SVN to check-out, and then to check-in “Temporary.txt.” ] ADDITIONAL POSSIBLITIES AND CAVEATS This system uses a "pessimistic lock" and so if a user checks out a common resource (such as the "Drafts" package where new drafts are created), while it is checked out no one else can change it. For this reason, common resource packages should always be checked in once edits have moved to a controlled sub-package of the common package or elsewhere. SVN client-server interaction does not work across some firewalls. Home network firewalls are not usually a problem. If your company firewall blocks SVN, you may look into the "guest" network most companies use for visitors. They are usually more open. Public networks do not seem to be a problem. Any user can be used on multiple machines. If you commonly use more than one machine, you can repeat the above setup on each. Just make sure to check in everything on a machine before you move to another, since the machines are probably not sharing the same local files.
© Copyright 2026 Paperzz