Archi Forum

Archi => General Archi Discussion => Topic started by: Jean-Baptiste Sarrodie on January 03, 2018, 10:08:35 AM

Title: Request For Comments - Using concepts from another model in a view
Post by: Jean-Baptiste Sarrodie on January 03, 2018, 10:08:35 AM
Hi All,

For several reasons, I'm trying to figure out what the best solution is regarding concept/model sharing, ie: using concepts from another model in a view. I'd like to discuss the ideal feature set before going into the technical solution itself.

I know that Herve's DB plugin allow this in different ways, so feedback from people using his plugin is welcome.

FWIW, I personally see several, slightly different use-cases. Let's say that MyModel is the model in which I want to create a new view, and RefModel is a model that contains concepts (and maybe views too) that I'd like to reference in my new view:

Regards,

JB

Edited to add use-case comming from this post (http://forum.archimatetool.com/index.php?topic=438.0)
Title: Re: Request For Comments - Using concepts from another model in a view
Post by: Hervé on January 03, 2018, 10:51:37 AM
Hi JB,

First of all, all my best wishes for this new year 2018.

At work, I use the concept sharing for 2 main purposes:

Of course, this is needed when people from my teamwork inside Archi during modeling, but when I communicate through the website generated by Archi where I do not want to have separate concepts even when used in several projects (thus in several models).

And you're right when you talk about versions. My database plugin does work with versioned concepts. When importing a model, it is therefore possible to import linked concepts:
   - as it was when modeling the model (version stored in the database)
   - as it is now (the latest version stored in the database)
   - or whatever version in the past.

Hope this helps.

Best regards
Hervé
Title: Re: Request For Comments - Using concepts from another model in a view
Post by: Jean-Baptiste Sarrodie on January 03, 2018, 13:16:42 PM
Hi Herve,

In turn, I wish you an happy new year!

Your point #1 is the typical use-case I had in mind. From your experience, how often do you face "conflicting" changes (deleted concepts used in other models) ?

Re point #2: why did you choose this solution instead of on "big" model that would contain all applications ?

Re your DB plugin: from your experience which of the 3 options (old version, latest version, other version) is the most frequent, and why?

To provide a little bit more background: I'd like to find a nice and elegant way to manage this by default in Archi (independently of DB or Collaboration plugins). So I'm trying to find the minimal but best feature set (KISS principle).

Regards,

JB
Title: Re: Request For Comments - Using concepts from another model in a view
Post by: Hervé on January 03, 2018, 16:46:59 PM
I do not need this feature at the moment as shared concepts model infrastructure components that may change are not removed.

So my plugin does not manage (yet) deleted concepts. I planned to never physically delete a concept in the database, but to manage logical delete (the "deleted" column is present in the database but not yet used).

What I planned to do in a future version is that when the plugin imports a model that contains deleted concepts (i.e. concepts that have a non empty "deleted" column) is to open a popup that lists the deleted concepts and give the user a choice:
   1. show up the model as it was before the concepts were deleted, so import the model with the deleted concepts
   2. import the model without the deleted concepts

Of course, deleting an element would also delete in cascade all the relationships to and from this element. This is the easy part.

I am facing 2 issues here:
   - If the user choose to import the deleted concepts, I then would like o be able to see in Archi that the concepts are deleted (like a trash icon or a red font)
   - I need to provide an "undelete" feature: undelete for the current model only (i.e. just changing the concept ID so this would become a new concept as far as the database is concerned) or undelete for all models (i.e. remove the "undelete" flag in the database"


I preferred this solution (one model per project with shared concepts) because it is easier for people to manage their own model and pickup what they need from a common repository.

But I know another company that did the opposite choice: they all work on a single repository. Each architect has got its own sets of folders and they've got their common concepts in a common folder.

At the moment, this situation is not comfortable for them because my plugin is an export/import plugin, not a collaboration plugin. I mean that when several people work on the same model at the same time. my plugin raises too many conflicts. I am working on an update that will mix export and import. I mean that when user A will export its changes to the database, the plugin will automatically import changes done by user B and conflicts will be raised only when the same concept is changed by both users (not sure I make myself clear here).



#2: From the REX I've got from some users, the latest version is used most of the time. Personally, I use old version of models for reference (see the evolution of an application for instance). I only used once the replacement of a concept by an older version from the database.



You are right when you state that it may be very simple. I humbly admit that my plugin is quite complex, because it is an export/import plugin and because of my lack of knowledge about the Eclipse framework.

To hide this complexity, I started to work on the version 3.0 of my database plugin that will not be an export/import plugin but a a real time collaboration plugin. Of course, it will require some network bandwidth but every change done on a concept will be seen real time by all other people having the same concept in there model.

Of course, from a technical point of view, all concepts will continue to be versioned but I was thinking to hide the version behind a timeline so users won't need to compare the concept to version x but compare with how it was x days/weeks/month ago.

I had a look to the CDO Eclipse framework but it is far too complicated for my little knowledge (and I cannot find working tutorial) and is not real time. So I will develop my own framework.

Please do not hesitate to tell me if you wish that we discuss this by phone or we may have lunch together one day as we did once :)

Best regards
Hervé
Title: Re: Request For Comments - Using concepts from another model in a view
Post by: MarcF88 on January 10, 2018, 14:58:46 PM
It appears there are several people on this forum requesting the same thing - being able to re-use concepts from other, external models in their own models. If I understand the RfC correctly, it is not as much a question of IF this should be done, but rather HOW it should be done, true?

If so, at first there's the matter of which way to go about it. It seems that there's a lot of demand for 're-use from another model', but we should also consider the possibility of 'one big model', wherethere are authorizations on different parts of the model. In the end, I think both methods are equivalent in support for functionality. Archi however has no notion of 'user', let alone user authorization, let alone authorization on a part of a model, so I think this would be quite a challenge to create.

So concentrating on 're-use from another model', there's also two ways to go about it, this can be seen in the two bullets in the first post and also in the database plugin by Hervé: copy-by-reference and copy-by-value. These behave in a different way and both have their merits, and I think the user should be presented with the choice (as is done in the database plugin). The challenge now is to make Archi behave predictably for the user: what will the model containing re-used concepts look like in different circumstances.

My proposal for this behaviour:


For both types of re-used concepts, I think it is ok if they are flattened to regular concepts upon export to Open Exchange format.

Incidentally, I would argue that re-used concepts in MyModel always get their own GUIDs, if only to keep supporting the notion that a GUID is unique. For example, we publish all our models to a single wiki; if two models contain an element with the samen GUID one of them will surely be a victim...

Kind regards,
Marc
[/list]
Title: Re: Request For Comments - Using concepts from another model in a view
Post by: jvdongen17@gmail.com on January 11, 2018, 13:19:29 PM
Hi JB,

From my experience in the past. This kind of functionality needs an repository to avoid indeed multiple open models or copying objects.

Other advantage of an repository is check-out, check-in, status management, etc becomes much easier.

The use case you describes are clear. You can also have External reference models(model from other companies, organizations) where you want to link to.



Jurgen
Title: Re: Request For Comments - Using concepts from another model in a view
Post by: ErikR on July 16, 2018, 07:31:42 AM
Hi,

I am in general a friend of non-online-repository tools. Living on the country side and with a significant part of my focus time during commuting I'd like to have things working offline.

Therefore; For the mechanism I would suggest a cached reference.

When the element is linked from the source model to the target model a reference is made with cached copy. This is used for proper display if the source mode is not available. If the source is available the cache will be updated. If the source is opened and the element is lost, one might have the option to recreate it from the cache or at least know what is missing to find another element to use instead. Perhaps there shall be a function to list all cached objects and when they where last updated.

In general there is then no need to have the source models open during general work. The cached copy works and can be used.

Before a model with links to other models is frozen/set in sharp revision/sent to management or what ever, all linked source models need to be opened to get things synchronized. I recall this is (or used to be) how Excel solves it; if a Excel sheet uses information from another that is unavailable it screams and uses the last know information.

// Erik








Title: Re: Request For Comments - Using concepts from another model in a view
Post by: Manj75 on September 26, 2019, 13:11:44 PM
I just found this thread and would like to add my vote for this capability.  The last update was July 2018 and I was wondering if this is being actively looked at.

I won't repeat much of what has already been stated other than to support it - I have rolled out Archi in my current client orgranisation's Architecture Practice fully using the Collab' and ServiceNow plugin, and the model has quickly grown.  The latest v4.5 has provided great performance improvements for large models, however there is still a need to segment the model into separate domains specific models, with the ability to cross-reference elements.

The ideal setup would be to have the following models:


As you can images a single model for all above is not sustainable and there is a real need to cross-reference models.

I hope this can be realised sooner rather than later.

Kind Regards,

Manjit
Title: Referencing concepts in other models or supporting nested models
Post by: Manj75 on October 25, 2019, 09:32:33 AM
Hi Phil,

I was wondering if this request is even being looked at and on the roadmap.  If so any indicative timeline of it's availability?

Reason for wanting an update is that I need to know how to take forward the architecture modelling for my client.  Currently, we have the core model where Architects are collaborating on project based designs as well as maintaining the as-is views.  This model will is sizeable and will continue to grow.

A separate model in GIT was created for the ServiceNow import, which is of considerable size (32611 elements and 16100 relationships) and these numbers are a subset of what is in CMDB based on import config.  Ideally, we want to be able to link logical project views to the physical elements brought in from ServiceNow and would benefit from being able to externally reference another model.

I want to avoid importing the SN into the core model as this will make it a significant sized model and will suffer from performance issues, in Search, GIT operations, general scrolling of the Models tree, etc.  This has been evident in the current core model - I know that v4.6 looks to fix performance issues, but still would be good to understand if this capability will be realised.  Nesting another model will at least keep models separate but won't address performance issues when combined, but still worthwhile if this is a smaller implementation.

Thanks,
Manjit
Title: Re: Request For Comments - Using concepts from another model in a view
Post by: Phil Beauvoir on October 25, 2019, 09:48:35 AM
Hi Manjit, no need to start another thread so I merged your post here.

Short quick answer - no I haven't looked at this issue, I've been busy with preparations for Archi 4.6 and other work. A lot of my time now is spent on simply making Archi work at all on latest OSs and Eclipse versions.

I guess we'll have to review this in the coming months.

Phil
Title: Re: Request For Comments - Using concepts from another model in a view
Post by: Manj75 on October 25, 2019, 09:58:47 AM
Oic - I thought I had updated accidentally on this thread hence why I then modified my text.  A review in coming months sounds great to me.  In terms of you comment of working on 4.6 does Archi Linus installation work on ChromeOS - just a question from my organisation as they are looking to switch the G-Suite and replace Surface devices to Chromebooks (I know I should ask this on the Archi thread).
Title: Re: Request For Comments - Using concepts from another model in a view
Post by: Phil Beauvoir on October 25, 2019, 10:26:20 AM
I don't know about Chromeboooks, but I suspect it won't work. See https://www.quora.com/Is-there-any-way-I-can-run-Java-Eclipse-on-my-Chromebook-so-that-it-s-just-like-the-Eclipse-environment-on-the-Windows-system-we-use-in-my-programming-class
Title: Re: Request For Comments - Using concepts from another model in a view
Post by: chdessus on November 08, 2019, 09:12:05 AM
Hello,

Currently, we have the issue. We chose your second solution :
- Copy/paste the concepts, objects needed (or CSV copy) then update the model with data from  the reference model.
The difficulty is that models are static and when the reference model changes, we have to update all models impacted, when needed. In fact, there is no automatic change required all the time: sometimes, it's good to have it, but sometimes no, because some models represent the "enterprise history", the legacy.
So if you develop a feature to support changes between a reference model (core model) and some local/operationnal model, please allow to disconnect some models from the core model.
In my opinion, it should not be mandatory to always stick to the core model.

Another use case :
- we model application component changes from business layer to technical layer. These models can become some core model for other models using the applications.

In my opinion, you can have 2 types of core model :
- a global core model with gobal concepts applicable by all modelers
- some limited core model used to model some concepts in detail: an application component, a business function, a technology (network, identity access management, azure or aws technical services....)

Thank you for sharing your thoughts.
Christine

Regards