Search code examples
optimizationumlenterprise-architectxmi

Efficient Way to do batch import XMI in Enterprise Architect


Our team are using Enterprise Architect version 10 and SVN for the repository. Because the EAP file size is quite big (e.g. 80 MB), we exports each packages into separate XMI and stored it into SVN. The EAP file itself is committed after some milestone. The problem is to synchronize the EAP file with work from co worker during development, we need to import lots of XMI (e.g. total can be 500 files).

I know that once the EAP file is updated, we can use Package Control -> Get All Latest. Therefore this problem occurs only during parallel development.

We have used keyboard shorcuts to do the import as follow:

  1. Ctrl+Alt+I (Import package from XMI file)
  2. Select the file name to import
  3. Alt+I (Import)
  4. Enter (Yes)
  5. Repeat step number 2 to 4 until module finished

But still, importing hundreds of file is inefficient.

I've checked that the Control Package has Batch Import/Export. The batch import/export are working when I explicitly hard-coded the XMI Filename, but the options are not available if using version control (batch import/export options are greyed).

Is there any better ways to synchronize EAP and XMI files?


Solution

  • There is a scripting interface in EA. You might be able to automate the import using that. I've not used it but its probably quite good.

    I'm not sure I fully understand your working environment, but I have some general points that may be of interest. It might be that if you use EA in a different way (especially my first point below), the need to batch import might go away.

    Multiworker

    First, multiple people can work on the same EAP file at a time. The EAP file is nothing more than an Access database file, and EA uses locking to stop multiple people editing the same package at the same time. But you can comfortably have multiple people editing different packages in one EAP file at the same time. Putting the EAP file on a file share somewhere is a good way of doing it.

    Inbuilt Revision Control

    Secondly, EA can interact directly with SVN (and other revision control systems). See this. In short, you can setup your EAP file so that individual packages (and everything below them) is SVN controlled. You can then check out an individual package, edit it, check it back in. Or indeed you can check out the whole branch below a package (including sub packages that are themselves SVN controlled).

    Underneath the hood EA is importing and exporting XMI files and checking them in and out of SVN, whilst the EAP file is always the head revision. Just like what you're doing by hand, but automated. It makes sense given that you can all use the one single EAP file. You do have to be a bit careful rolling back - links originating from objects in older versions of one package might be pointing at objects that no longer exist (but you can look at the import log errors to see if this is the case). It takes a bit of getting used to, but it works pretty well.

    There's also the built in package baselining functionality - that might be all you need anyway, and works quite well especially if you're all using the same EAP file.

    Bigger Database Engine

    Thirdly, you don't have to have an EAP file at all. The model's database can be in any suitable database system (MySQL, SQL Server, Oracle, etc). So that gives you all sorts of options for scaling up how its used, what its like over a WAN/Internet, etc.

    In short Sparx have been quite sensible about how EA can be used in a multi-worker environment, and its worth exploiting that.