Recent posts

#1
General Archi Discussion / Re: How I cope with model of 4...
Last post by Alberto - May 28, 2024, 18:03:27 PM
This is the stuff I've been dreaming about ever since I discovered Archimate.  Of course, in my dreams, every vendor would support Archimate as a native export so that you could have multiple sources and not have to recreate the wheel for every component of the enterprise. Alas, dreams can become reality, I just hope to be in a position again to do this kind of work. Congrats!
#2
Bonus 2: Advanced analysis of the model
Same tooling also lets me perform more advanced analysis of the application.

What if I want to know whether the data processing setup moves data between two AWS regions?

Before explaining how I easily answer questions like this, I need to explain what is in the system's architecture model. The model's elements of "logical type" NiFi Root Processor Group have no direct relation to the AWS region. In the model the processor group is associated with an EC2 instance which the group runs on. In its turn, the EC2 instance gets aggregated by the AWS region.
NiFi Root Processor Groups can be in different relations to different types of external services depending on the kind of those relations in "reality". As the following diagram says about one of the NiFi elements, viewed in isolation, the processor group emits data to the AWS SQS queue in the AWS region. (And the SQS's region is different from the EC2 instance's one.)



So, let's try to find all similar cross-region data paths.

I use archi-powertools-verifier with its interactive mode feature. I make the tool import my model to Neo4j absolutely the same way model verification does. In interactive mode the tool leaves Neo4j to run in the background and enables Neo4j Browser, a tool that allows you to execute CQL queries and visualise the results.

First, I need to enrich the original relationship graph with a new direct relation between NiFi processor groups and their AWS regions. (All that terminology used in the query below, e.g. elements of type Grouping of given specialization, or relations of Aggregation type, came from ArchiMate. MERGE clause of the query makes the query create a new relation in the graph while merging possible duplicates.)

MATCH
  (r:Grouping{specialization:"AWS Region"})-[:Aggregation]->
  (:TechnologyService{specialization:"EC2 Instance"})
  <-[:Association]-(n:ApplicationService{specialization:"NiFi"})
MERGE (n)-[:IN_REGION]->(r)


Another enrichment I want to make is to create a "generic" INTERACT_WITH relation between NiFi processor group and its data source or data sink regardless of type and direction of the original relation. (In my situation all data sources and sinks get represented as ArchiMate elements of type TechnologyService, TechnologyInterface or Artifact.)

MATCH
  (n:ApplicationService{specialization:"NiFi"})--
  (s:TechnologyService|TechnologyInterface|Artifact)
MERGE (n)-[:INTERACTS_WITH]->(s)


After I kind of "normalised" the model by introducing those two new "artificial" types of relations, I can use following fairly simple CQL query to find all NiFi processor groups (n) that INTERACTS_WITH any external service (s) and n's and s's regions are different.

MATCH
  (r1)<-[r_n:IN_REGION]-(n)-[n_s:INTERACTS_WITH]->(s)
  <-[s_r:Aggregation]-(r2:Grouping{specialization:"AWS Region"})
WHERE r1<>r2
RETURN r1, r_n, n, n_s, s, s_r, r2


Neo4j Browser does a beautiful job (in literal sense) of graphically presenting the sub-graph my query returns.
#3
jArchi / Re: Single View 2 Single HTML ...
Last post by JoCriSem - May 27, 2024, 09:40:38 AM
A script I was looking for for a while now.  Thanks.
#4
Hi Phil, thank you very much for your explanations! :)

Thanks to these I was able to solve this problem.
#5
General Archi Discussion / Re: Seeking Guidance on How to...
Last post by Phil Beauvoir - May 24, 2024, 11:43:33 AM
Hi, you can use the "Paste Special" command instead of "Paste".

First, change the default behaviour of "Paste Special" in Archi's Preferences under "Diagram -> Paste Special Behaviour" and select "Always paste a duplicate of copied element".

Now when you copy an object select "Paste Special".

To duplicate a view with copies:

1. Create a new blank view
2. Select all the elements from the view you want to duplicate and Copy them
3. Select "Paste Special" in the new view

For more information about copying and pasting behaviour please consult the Archi User Guide.

Hope that helps!
#6
Hello Archi Community!  :)

I am currently facing a challenge while using the Archi software and I'm hoping to find some assistance here.

My goal is to create specializations of elements that could be used between different views while preserving some characteristics such as name-value properties and graphical aspects.

With "Specializations Manager" alone it is not possibie to satisfy this need. So I attempted to realize a "template view" and created the elements of interest there, with the intention of copying and pasting them into other views. However, I noticed that the first paste operation results in copying an instance of the same object, which also modifies the properties of the "template elements" in the corresponding view. To obtain a copy of the same object, I need to perform the paste operation twice.

Similarly, when I use the "Duplicate" option for a view, the instances of the same elements are retained, leading to changes in the properties of the elements in both views.

For this reason, I would like to ask you if there is a way to:
  • Generate a "template" of a desired element starting from a specialization, while preserving the graphic and key-value properties of the object.
  • Copy and paste the desired element into another view without needing to perform the operation twice to obtain a copy.
  • Duplicate a view, creating copies of the objects rather than retaining the same instances.

I am using Archi 5.3 with ArchiMate 3.2.

Thank you in advance for your time and consideration.
#7
I love Archi! Incredible tool! This is why I invested quite a portion of my free time to develop archi-powertools. The tools pay off! Today, as business-as-usual, archi-powertools-verifier notified me that a new connection to yet another Kafka had just been added by the developers to that setup I'm describing in the topic. It took me five minutes to think carefully which of the views on the model best represent the new stuff, do all beauty work, write commit message, and click "OK". (The HTML report gets generated and published automatically.) Including two minutes wasted as I initially made the Flow relation go wrong direction (oops!). The verifier spotted the problem. +1 element and +1 relation in the model, 100% guarantee that the model is in perfect shape.
#8
jArchi / Re: error adding existing elem...
Last post by Mate - May 21, 2024, 19:46:24 PM
Thank you, Phil. I now know my mistake and the distinction between diagram objects and model concepts. Thank you for the explanation.

Also grateful for the tips on JS programming. I only occasionally dabble in programming, and this is my first foray into JS and jArchi. So am most thankful for all the guidance that can help me improve :).
#9
General Archi Discussion / Re: How I cope with model of 4...
Last post by Phil Beauvoir - May 21, 2024, 18:48:35 PM
Hi,

thanks for sharing this with the Archi and ArchiMate community! I'm sure everyone will find this very useful. :-)

Phil
#10
Bonus #1: Model linting
I can use the same technique and same instruments to validate internal properties of architecture models against a set of rules expressed in SQL and CQL queries. For example, my automation checks that if a NiFi processor group is presented on a ArchiMate view, the view also contains all model elements which are data source or data sink for this processor group. Otherwise, the view would mislead me and others about ins and outs of this processor group. Check out this example of SQL queries which implement such sort of verifications.