Archi Forum

Discussion Boards => General Archi Discussion => Topic started by: barrel on October 03, 2016, 07:59:39 AM

Title: Plugin for Archi - CarTool (EIRA oriented)
Post by: barrel on October 03, 2016, 07:59:39 AM
Hello Archi enthousiasts,

This might be interesting for some of you.

The "European Interoperability Reference Architecture (EIRA)" has been using ArchiMate as its underlying language and we have been
using Archi as our main tool for development since more than 1 year.
Last week, we have released a plugin for Archi called the 'CarTool' (short for "Cartography Tool").

From our documentation:
The CarTool is a tool built by the European Commission's ISA unit designed to provide support in
using the European Interoperability Reference Architecture (EIRA) and accessing a portfolio
(Cartography) of solutions that are documented using the EIRA. It is built as a plug-in for the
popular open source ArchiMate® modelling tool Archi®, building upon its modelling capabilities
and providing higher level EIRA support. The CarTool itself is open-source  and distributed under
the "ISA Product Non-Commercial Licence v1.1 for CarTool" licence.

The CarTool can be downloaded from the following location:
https://joinup.ec.europa.eu/asset/eia/asset_release/cartography-tool-v100

Here is a shortcut to the documentation: https://joinup.ec.europa.eu/anonymous_validation/155768/31034
The sources can be downloaded right here: https://webgate.ec.europa.eu/CITnet/stash/projects/CARTOOL/repos/cartoolplugin/browse

We are looking forward to hearing your feedback!

Barry Nauta
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: Phil Beauvoir on October 03, 2016, 09:50:57 AM
Hi Barry,

thanks for sharing this with the community. This is very interesting...I shall take a closer look at it...

Regards,

Phil
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: Jean-Baptiste Sarrodie on October 03, 2016, 19:18:29 PM
Hi,

This seems very interresting and could well be used outside EIRA (in fact this seems a good option for anyone that has a reference architecture).

I've just tested (on Linux) but I can't get it to work. The update seems ok but when trying to "Activate EIRA support" a view pane open with the following messages: "Failed to create the part's controls". In addition, here is what comes in the "Details":


java.lang.ArrayIndexOutOfBoundsException: 0
   at eu.europa.ec.eira.cartool.views.tree.EiraTreeModelView.doCreatePartControl(EiraTreeModelView.java:138)
   at com.archimatetool.editor.views.AbstractModelView.createPartControl(AbstractModelView.java:67)
   at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:141)
   at org.eclipse.ui.internal.e4.compatibility.CompatibilityView.createPartControl(CompatibilityView.java:155)
   at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:327)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55)
   at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:888)
   at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:869)
   at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:120)
   at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:337)
   at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:258)
   at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162)
   at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:104)
   at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:73)
   at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:55)
   at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:127)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:983)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:662)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$6.run(PartRenderingEngine.java:547)
   at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:531)
   at org.eclipse.e4.ui.workbench.renderers.swt.ElementReferenceRenderer.createWidget(ElementReferenceRenderer.java:69)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:983)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:662)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:766)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$2(PartRenderingEngine.java:737)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:731)
   at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:715)
   at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1250)
   at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer$1.handleEvent(LazyStackRenderer.java:68)
   at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:40)
   at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:187)
   at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:156)
   at org.eclipse.swt.widgets.Display.syncExec(Display.java:4590)
   at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:218)
   at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:36)
   at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197)
   at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)
   at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
   at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
   at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
   at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)
   at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
   at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
   at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:81)
   at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:59)
   at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
   at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:171)
   at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:105)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:678)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:766)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$2(PartRenderingEngine.java:737)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:731)
   at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:715)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$1.handleEvent(PartRenderingEngine.java:141)
   at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:40)
   at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:187)
   at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:156)
   at org.eclipse.swt.widgets.Display.syncExec(Display.java:4590)
   at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:218)
   at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:36)
   at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197)
   at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)
   at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
   at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
   at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
   at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)
   at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
   at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
   at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:81)
   at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:59)
   at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
   at org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl.setToBeRendered(UIElementImpl.java:303)
   at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.createElement(PartServiceImpl.java:1165)
   at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1138)
   at org.eclipse.ui.internal.WorkbenchPage.showPart(WorkbenchPage.java:1311)
   at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1283)
   at org.eclipse.ui.internal.WorkbenchPage$14.run(WorkbenchPage.java:4208)
   at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
   at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:4204)
   at com.archimatetool.editor.ui.services.ViewManager.showViewPart(ViewManager.java:38)
   at eu.europa.ec.eira.cartool.views.EiraViewManager.showView(EiraViewManager.java:29)
   at eu.europa.ec.eira.cartool.command.EiraViewHandler.execute(EiraViewHandler.java:24)
   at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:294)
   at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:90)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55)
   at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:247)
   at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:229)
   at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)
   at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:149)
   at org.eclipse.core.commands.Command.executeWithChecks(Command.java:499)
   at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
   at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:210)
   at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:825)
   at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.handleWidgetSelection(HandledContributionItem.java:701)
   at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.access$6(HandledContributionItem.java:685)
   at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem$4.handleEvent(HandledContributionItem.java:613)
   at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
   at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4454)
   at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1388)
   at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3799)
   at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3409)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
   at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
   at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
   at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
   at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636)
   at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
   at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579)
   at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
   at com.archimatetool.editor.Application.start(Application.java:87)
   at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
   at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
   at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
   at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
   at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
   at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
   at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
   at org.eclipse.equinox.launcher.Main.main(Main.java:1438)


Any idea about this issue?

Regards,

JB
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: Hervé on October 03, 2016, 19:59:04 PM
Hi Barry,

Thanks a lot for sharing it with us. I'll definitively have a look.

On my desktop (Windows 10), I did not experienced the same error than Jean-Baptiste, but the link to download the user guide gives me an "unable to open" message. I could get it through the ZIP file though.

Best regards
Hervé
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: barrel on October 03, 2016, 21:13:08 PM
We are currently using the plugin for
* EIRA as reference architecture, this should be easy to replace with any reference architecture (indeed like you mention, Jean-Baptiste!)
* Solution Architecture Templates; some sort of reference for a specific problem domain (we currently have two available, one for open data, one for human interfaces within the EC)
* Cartography!!! Many solutions that have been built with your reference architecture can be located here and be queried/searched for to promote reusability and or sunsetting existing applications where mutliple implementations exist that serve the same purpose. The query tool of the plugin is quite powerful (if I may say so myself)

@JB: we have tested it on Windows and Mac, never on Linux, I see if we can come up with something
@Hervé, thanks for the notification, we will look into that!
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: Jean-Baptiste Sarrodie on October 04, 2016, 09:31:01 AM
Hi,

I've just tested on Windows and it works. I'll try to find some time to see why it fails on Linux (elementary OS freya).

Regards,

JB
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: Phil Beauvoir on October 04, 2016, 09:53:44 AM
Regarding the possible bug. I would not do this at line 138:

eiraTreeModelViewer.getTree().setSelection(eiraTreeModelViewer.getTree().getItems()[0]);

You should really select a model object wrapped in an ISelection on the tree viewer:

eiraTreeModelViewer.setSelection(ISelection)

Phil
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: barrel on October 04, 2016, 12:59:46 PM
Thanks for the fast replies!

We will try to setup a Linux environment and see how we can fix this, thanks @Phil for the code correction.
In anyway, we expect a new release in a short period (we aim within two weeks, but cannot promise anything).

Needless to say, if we can reproduce and fix the bug, we will post our findings here as well!

Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: barrel on October 04, 2016, 13:01:42 PM
For those who are interested to work with templates (we call them Solution Architecture Templates) and how the CarTool uses them, I have modelled some views of TOGAF, ITIL, IT4IT in ArchiMate, I could share them for others to have a look. This work is totally independant of the work that is done for the EIRA/CarTool and is my own production.

I have modelled them while studying for the certifications, but I think they can be useful, just let me know and I can guide you through the process (fairly simple to do)
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: Jean-Baptiste Sarrodie on October 04, 2016, 13:18:58 PM
Quote from: barrel on October 04, 2016, 13:01:42 PM
For those who are interested to work with templates (we call them Solution Architecture Templates) and how the CarTool uses them, I have modelled some views of TOGAF, ITIL, IT4IT in ArchiMate, I could share them for others to have a look. This work is totally independant of the work that is done for the EIRA/CarTool and is my own production.

I have modelled them while studying for the certifications, but I think they can be useful, just let me know and I can guide you through the process (fairly simple to do)

I'm definitely intesserted !

Regards,

JB
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: barrel on October 04, 2016, 13:47:39 PM
The information below is a bit of a workaround, undocumented, so I might have missed one or two steps, let's give it a try though.
Ok, here are a few models (let's see if the attachments work).

* Copy the attached models to your home/.cartool/resources/archimate/SATs folder (note; this folder will be purged on a plugin update, so place a copy here, not the original!)
* restart Archi
* When the EIRA option is activate, you have a pane containing the EIRA itself and a folder called SATs. Your models (the ones you just added to the SAT folder) should be in there (in the user guide on page 10/45, we call this pane the "CarTool model overview")
* Open one of the SATs
* Your template will open somewhere, in the user guide on page 10/45, we call this pane the "CarTool model details"
* Create a solution or an SAT (right-click on the EIRA in the CarTool model overview) based on the EIRA, works even if you don't want to model using the EIRA. The difference between a solution and an template is that a solution will only contain Solution Building Blocks (refering to the TOGAF Enterprise Continuum), while an SAT will contain a mix containing Architecture Building Blocks (ABBs) and Solution Building Blocks (SBBs), the SBBs will be annotated if they refer to the EIRA, which is irrelevant for  this case.
* Each SAT has potentially many views, when looking at the user documentation on page 13/45, you will see a small button bar, one of the buttons here will allow you to switch between the views of an SAT
* Rightclick on any building block in the view you have opened in the "CarTool model details" pane and you can add that specific BB to you solution effectively using the template as template to build your solution.

Models below are incomplete, but remember, this is just to play with the possibilities of the tool!!!
* TOGAF
* ITIL
* IT4IT

Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: barrel on October 05, 2016, 12:21:18 PM
@JB, we have installed the tool and the plugin on an Ubuntu 16.04.1 TLS (Freya is based on Ubuntu, hence the choice), and everything works just fine, so we cannot reproduce the error.... Any suggestions?

We will try on Freya, but the answer will not be very conclusive in order to say that it will work on any Linux distribution and we do not have the resources to test all distributions....

By the way, java version is: openjdk version 1.8.0_91
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: Jean-Baptiste Sarrodie on October 05, 2016, 12:38:45 PM
Hi,

Thank you for this test. Freya is based on an older version of Ubuntu, so I guess this is linked to my openjdk version. I'm going to upgrade to the latest elementary OS version soon, so I will re-test at that time.

Regards,

JB
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: barrel on October 05, 2016, 12:41:09 PM
Great, then we will wait to see if that brings anything!  :)
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: barrel on October 05, 2016, 14:28:22 PM
@JB; latest Freya installation worked as well, no problems using the plugin
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: Jean-Baptiste Sarrodie on November 15, 2016, 15:38:44 PM
Hi,

Quote from: barrel on October 04, 2016, 13:47:39 PM
The information below is a bit of a workaround, undocumented, so I might have missed one or two steps, let's give it a try though.
Ok, here are a few models (let's see if the attachments work).
[...]

I've played a bit with the CarTool plugin (versy good!) and I really would like to use it for other purposes, which means that I have to create my own SATs. I've tested the examples you provided but I've not been able to see the dialog that should appear when adding an element to my model (I tried to add properties in my SAT but this doesn't work).

Do you have some documentation explaining how to create such SAT (what are mandatory properties, where to store properties documentation...) ?

Regards

JB
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: barrel on November 15, 2016, 16:43:55 PM
Hello,

Great to hear that you have taken a more indepth look at the plugin. We do have some user information available, but none yet on how to integrate an SAT into the tool once it is finished. We will have to do with some ad-hoc guidance.

Let me get back to you on Friday!

Cheers,
Barry
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: Jean-Baptiste Sarrodie on November 15, 2016, 17:06:41 PM
Hi,

This doesn't has to be integrated once it is finished, if it's simplier to compile my own version I can do it.

But in the online readme (https://webgate.ec.europa.eu/CITnet/stash/projects/CARTOOL/repos/cartoolplugin/browse), I can read that:
QuoteEnsure that you have the latest DB structure SQL script bundled in the sources, as well as the latest version of the EIRA and SATs. Regarding the SQL script this is produced using the tool in the cartography-data-tool repository.

This makes me think that in fact I need this "tool in the cartography-data-tool repository"... that I cannot find...

Regards,

JB
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: barrel on November 18, 2016, 09:53:46 AM
Hello JB,

The CarTool offers multiple functionalities; there is the EIRA as base reference architecture; there is an (conditional) cartography of existing solutions and there is the SAT section.


Your question related to the database structure is probably related to the cartography, the solutions that are based on the EIRA. The cartography can be queried (on european level, this is important; we can see which solutions are already available, or which solutions offer similar functionalities, perhasps we can rationalise them), hence the internal DB


Now... Some questions to try to understand what you see and what you perhaps do not see but should be there

When you install the plugin (or compile/run); do you see an EIRA menu item at the top of Archi?
When activated, do you see an EIRA panel appearing?
In the EIRA panel; do you see the EIRA (v1.1.0) and an additional folder called SATs?

Concerning the SATs, these are simply downloaded as par of the plugin and reside in your .cartool folder (in your home directory). This folder has three subfolders, one of the subdirectories is .cartool/resources/archimate/SATs

A simple check to see if your SATs work in the way that you expect is to copy your SATs (or some files I provided earlier will do as well) in this folder, this should do the trick (attention, on updates of the tool, this folder will be overwritten, make sure to use a copy and not the original!)

Looking forward to your reply!

Barry
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: Jean-Baptiste Sarrodie on November 18, 2016, 12:57:19 PM
Hi,

Quote from: barrel on November 18, 2016, 09:53:46 AM
Now... Some questions to try to understand what you see and what you perhaps do not see but should be there

When you install the plugin (or compile/run); do you see an EIRA menu item at the top of Archi?
When activated, do you see an EIRA panel appearing?
In the EIRA panel; do you see the EIRA (v1.1.0) and an additional folder called SATs?

All this works. My point that I want to use the CarTool itself, not in the context of EIRA. This means that I want to replace the EIRA reference architecture .archimate model by my own reference architecture and then have people from my team to use the CarTool to create solution architecture models that reuse my ABBs. I succeeded in having what I want except for the popup dialog that allows user to key in information that will be added as properties (dialog raised when you select a concept from the reference architecture and select "Add to my model"). Recently I succeeded in having this dialog but only if in my model, the ID property of the concept I want to reuse is one of the already defined IDs in EIRA. This seems to be checked against the internal DB of the CarTool plugin, DB that is populated using the SQL file included in the plugin. It seems that this SQL file is generated using a tool that (I think) parses the reference architecture model for such ID properties on all elements.

So I'm now able to do what I want except that I can't define my own ABB IDs. So I need this tool or script that create the SQL file from the reference architecture model.

Is it clearer?

Regards,

JB
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: barrel on November 21, 2016, 11:05:41 AM
Hello JB;

There might be a few assumptions in the code that are very EIRA oriented. Most of this is in property files (we have too many of them, we are aware of that). You need at least a model with an ID property, some DCAT properties like dct:modified and dct:published might be 'hardcoded' as well, those kind of things. ABBs are not annotated, SBBs are annotated with '<<' and '>>' and recognised by these indicators in the name. And yes, the database structure is EIRA oriented.

You need to get your hammer and chisel and rework quite a few things, I am afraid.

When you look at the following file
eu.europa.ec.eira.cartool/resources/db-scripts/data.sql

You will see the EIRA structure in there, each table is mapped to an EIRA ABB (ABB60 for instance is mapped to the EIRA ABB called 'IES" in the technical view). We tried a more generic structure at the start, but this added a lot of complexity on the query part.

The package
eu.europa.ec.eira.cartool.views.action
will probably be your best starting point.

Also know that the update process is way too agressive at the moment. It installs new versions and deletes previous versions afterwards. If your new version has the same name as the old one, the new file gets installed, the old one will be erased, but since this file has the same name as the new file, your new version will be erased. That is why timestamps in the names are important.... We are working on that.
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: Jean-Baptiste Sarrodie on November 21, 2016, 13:11:14 PM
Hi,

Thank you for these comments.

Asof now my only question remaining is how do you create  the eu.europa.ec.eira.cartool/resources/db-scripts/data.sql file ? Is it created by hand or through some scripting (jasper reports?) from the main EIRA.archimate model ?

Regards,

JB
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: barrel on November 21, 2016, 13:33:44 PM
Hello JB,

It is done via a small converter application. This application is really quick-and-dirty and combines the generation of the database files (paring the EIRA.archimate file) as well as the cartography. I can send you the code, if you would like to have a look, but it is not yet ready to be published as open source.

To give you an idea; here is the (minimal) documentation on the tool:

Purpose of the tool

The purpose of this tool is twofold:


The tool packages:

Cheers,
Barry

Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: Jean-Baptiste Sarrodie on November 21, 2016, 13:37:06 PM
Hi,

Ok, thank you.

I'd be happy to have access to this code  and see how I can reuse it in my context ;-)

I'm sharing my email in a private message....

Regards,

JB
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: barrel on November 29, 2016, 10:18:33 AM
Hello JB,

I don't know if you have been able to/have had the courage to look at the files I sent you.
In any case, if there is anything we can do to help, let us know.

For information; the models I use as base, I simply copy them to the '.cartool/resources/architmate/SATs' folder and as such I can use them as reference architecture. A not so good looking workaround, but it serves my needs.

For this, you need to fix one small bug though:

CarToolPluginActivator linke 198:

return versionFromFileSystem.getInfo().getDataVersionInfo().getTimestamp().compareTo(versionFromJar.getInfo().getDataVersionInfo().getTimestamp()) <= 0;

should be

return versionFromFileSystem.getInfo().getDataVersionInfo().getTimestamp().compareTo(versionFromJar.getInfo().getDataVersionInfo().getTimestamp()) < 0;

If not, your .cartool/resources directory will be erased on each startup
Title: Re: Plugin for Archi - CarTool (EIRA oriented)
Post by: ErikR on July 19, 2018, 05:56:48 AM
Seems like the links above if dead. I found the material on this link instead:
https://joinup.ec.europa.eu/solution/eira

// Erik