Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Geert Bellekens

Pages: [1] 2 3 ... 23
I have a version controlled package containing source, target and association class.
The package is checked-in, so it should be read-only.
But I can delete the association class from a diagram that is in another (writable) package.

Steps to Reproduce:
- Create a version controlled package
- Add two classes and an association class between them
- Check the package in
- Put the two classes on a diagram that is not read-only
- Try to delete the association class (from the connector)
- Notice that EA doesn't stop you from deleting the association class.



Schema's in the schema composer can be stored in artifact elements.
When that artifact element is in a version controlled package that is checked-in, the artifact is supposed to be read-only. Unfortunately EA doesn't stop you from changing the (read-only) schema.

Steps to Reproduce:
- Create a version controlled package
- Create a new schema and save it on an artifact in the version controlled package
- Check-in the version controlled package
- Open the schema in the schema composer
- Change the schema in the schema composer, and notice that EA doesn't stop you.



If I have an element in a checked in package (so the element should be read-only) I can still delete tagged value using a script.
If the element is read-only, EA should prevent any change to it's tagged values.

Steps to Reproduce:
- Create a package that is controlled by version control
- Add an element with tagged values to the version controlled package
- Check the version controlled package in
- Delete the tagged values using a script
- Notice that EA doesn't stop you from deleting tagged values even though the owning element should be read-only.



General Board / SQLite is way faster than SQL Server
« on: June 16, 2022, 05:35:33 pm »
I've been doing some performance tuning on one of my add-ins (EA Message Composer) and I noticed that a model in SQLite is a lot faster than a model in SQL Server (running on my local machine)

For one testcase I have a process that takes somewhere between 250 and 300 seconds in SQL Server, and only 100 seconds in SQLite.

Other things like applying user locks on a big part of the model also seem to be much much faster.

Anyone seeing the same results? Any ideas of what I could do to speed up my SQL Server?
Because of this, having a central database such as SQL Server comes with a serious performance penalty, making it a lot less attractive.


Bugs and Issues / Documentation is not updated for SQLite database
« on: June 16, 2022, 05:25:44 pm »
In the documentation the fact that SQLite is now also an option as database is not reflected.
There are a few places where this is missing. One of them is:



Since v16, when a package contains both packages and diagrams, the packages are ordered above the diagrams in the project browser.
This means that, if I open some of my subpackages, the diagram that corresponds to my packages level, becomes further and further away from my package.
See example here:
Diagrams should be on top of the rest of the content in the project browser


With these kind of things I really wonder sometimes who decided to change it this way and what could have been their reasons. ???


When building a schema in the schema you can select an association and it will automatically add the target of the association to the schema.
When however the association has an association class, this association class is not automatically added to the schema.
The user has to search for the association class in the model and drag it to the schema composer manually, if he is even aware there is an association class to be considered in the first place.

Steps to Reproduce:
- Create a model with an association class
- Drag the source of the association into a schema in the schema composer
- Select the association in the schema composer
- Notice that the target of the association is automatically added to the schema
- Notice that the association class is not automatically added to the schema.



When adding a new technology to a strict model based perspective set, nothing in that new technology is selected by default.
You have to manually select all the elements, diagrams etc... before they can be used.

The default should be that everything is selected, so you can uncheck what you don't need.



I've been using the <<redefines>> mechanism for a while now to add tagged values to existing ArchiMate 3 stereotypes without interupting the users too much.
Everything looks the same on the surface, but my redefined stereotype is being used instead of the standard ArchiMate stereotype.

This works just fine for elements. Today I got a request to add a tagged value to a number of ArchiMate relations, so I did exactly the same.

I added my redefined stereotypes to the profile and expected it to work; but it didn't.

When adding an ArchiMate_Serving relation for example, I get a vanilla ArchiMate_Serving, and not my redefined one.

When comparing the resulting UML profile XML I can't see any differences between the element redefine, and the connector redefine.
the one for ArchiMate_Serving that doesn't work:
Code: [Select]
<Stereotype name="ArchiMate_Serving" notes="" bgcolor="-1" fontcolor="-1" bordercolor="-1" borderwidth="-1" hideicon="0" generalizes="ArchiMate3::ArchiMate_Serving" baseStereotypes="ArchiMate3::ArchiMate_Serving" redefines="ArchiMate3::ArchiMate_Serving">
<Tag name="Lifecycle" type="enumeration" description="" unit="" values="TBD,Planned,Phase In,Live,Phase Out,End of Life" default="TBD"/>
The one for ArchiMate Node that does work:

Code: [Select]
<Stereotype name="ArchiMate_Node" notes="" bgcolor="12648384" fontcolor="-1" bordercolor="-1" borderwidth="1" hideicon="0" generalizes="ArchiMate3::ArchiMate_Node" baseStereotypes="ArchiMate3::ArchiMate_Node" redefines="ArchiMate3::ArchiMate_Node">
<Tag name="Lifecycle" type="enumeration" description="" unit="" values="TBD,Planned,Phase In,Live,Phase Out,End of Life" default="TBD"/>

Has anyone successfully redefined a connector stereotype before? Any secret magical sauce I'm missing?


I was trying to figure out if a SchemaType element was redefined, so I took to the documentation hoping to find a helpful clue.
Unfortunately there is no "IsRedefined" property, but there is an operation called GetFacet that accepts a parameter of type BSTR with the name name

The documentation says:

Returns the value of the named facet. 'Root', for example' returns a value indicating whether a type is a root element

Using it to figure out if this element is a root seems a bit pointless since we do have a poperty IsRoot, but I'm wondering what other "Facets" I can use it for.

I have a lot of questions when reading the documentation:
- Can it be used to figure out if an element is redefined?
- What are the other facets we can use it for?
- What is a BSTR? Is that just another name for a string? (that's what Visual Studio tells me anyway)
- What will the "value indicating whether...." be? The string "True", or "true", or "1" or "yes"

Does anyone have more experience with this GetFacet operation?

@Sparx: please update the documentation to actually say something useful


We us a model based perspective to limit the number of diagrams people see.
This seems to work just fine, until we use the "restrict" button on the perpective to further restrict the possible diagrams. When we actually uncheck any of the diagrams, certain diagrams such as the requirements diagram are no longer available.
This might be related to the built-in technologies as you cannot select those diagrams when restricting.

Steps to Reproduce:
- Create a perspective with BPMN 2.0, Core Extenstions, EA Requirements
- Select this new perspective in EA
- use Add Diagram and notice that you can choose the Requirements diagram from the Extended header
- Go back to the perspectives window and set it to strict.
- Click on the "Restrict" button and uncheck any of the BPMN diagrams
- Save the perspective
- Try to add a diagram and notice that the Requirements diagram is no longer available.


This has been noticed on both v15.2 as v16


General Board / Limit diagrams within a technology
« on: December 17, 2021, 07:52:28 pm »
Since v15 we have been using the perspectives, and perspective sets/groups configuration to limit the number of different diagrams the users are exposed to.

This has worked great so far; we went from a few hundred diagram types to only a dozen or so.
But now we want to go even further. We use BPMN, but only use one of the diagram types offered by BPMN.

Is there a way to configure my perspective to exclude the other BPMN diagram types?

I know I can probably roll my own (and I might do that one day), but being able to remove the unwanted diagram types from BPMN looks like it could be a quick win. (if possible)


Bugs and Issues / Checkout offline leaves users stranded
« on: November 17, 2021, 08:53:43 pm »
We use version control on some parts of our model that are extra sensitive (generate code) or that are shared by different repositories.

Only a limited set of users needs to edit these packages, and thus only those users have access to the version control system. (Azure Devops in our case)

The other users get a popup regarding uncompleted version control settings, but when they check the checkbox "don't bother me again", this popup doesn't appear again, and all is well.

BUT,... from time to time we get a user that is too nosy, too "I'll figure it out myself" and that does a check-out despite not having configured version control.
EA then helpfully proposes to do a "Checkout Offline". The user ofcourse ignores all warnings and goes ahead to with it, ending up with a checked-out offline package.

Usually by now the users discovers he has done something wrong, and calls for help.
The problem is that there is no way to rectify this situation (that I know of) using the GUI.
The only way I know to solve that problem is to remove the "checkedOutOffline=1" flag from the t_package.PackageFlags

Is there a better way of solving this that I don't know?
Should we consider this behavior, where a user can paint himself in a corner, a bug?

For those coming across the same problem, I wrote a little script to fix the problem:

Code: [Select]
'[path=\Projects\Project A\Model Management]
'[group=Model Management]
option explicit

!INC Local Scripts.EAConstants-VBScript

' Script Name: Remove Checkout-offline
' Author: Geert Bellekens
' Purpose: Removes the flag "Checkeout offline" from the selected package
' Date: 2019-04-03
const outPutName = "Remove Checkout Offline"

sub main
'create output tab
Repository.CreateOutputTab outPutName
Repository.ClearOutput outPutName
Repository.EnsureOutputVisible outPutName
'get selected package
dim selectedPackage as EA.Package
set selectedPackage = Repository.GetTreeSelectedPackage
if not selectedPackage is nothing then
'ask for confirmation
dim userIsSure
userIsSure = Msgbox("Are you sure you want to remove the checkout-offline from the package '" &selectedPackage.Name & "' '", vbYesNo+vbExclamation, "Remove Checkout-offline" )
if userIsSure = vbYes then
'Repository.WriteOutput outPutName, now() & " Starting delete package tree for package '"& selectedPackage.Name &"'", 0
'delete the package using it's parent
removeCheckoutOffline selectedPackage
' 'refresh
' Repository.RefreshModelView 0
'let user know
Repository.WriteOutput outPutName, now() & " Removed checkout-offline from '"& selectedPackage.Name &"'", 0
end if
end if
end sub

function removeCheckoutOffline(package)
dim sqlUpdate
sqlUpdate = "update p set p.PackageFlags = LEFT (p.PackageFlags, patindex('%CheckedOutOffline=1%',p.PackageFlags)-1)    " & vbNewLine & _
" from t_package p                                                                                          " & vbNewLine & _
" where p.PackageFlags like '%CheckedOutOffline=1%'                                                         " & vbNewLine & _
" and p.ea_guid = '" & package.PackageGUID & "'                                                             "
Repository.Execute sqlUpdate
'Reload package
Repository.ReloadPackage package.PackageID
end function



Can someone please explain to me the reasoning behind the choice "none" as the default selection for the Link to Element Feature dialog?

One would assume that the default option should be the one that is most often used. I personally think the option "attribute" is used in more than 99% of the cases, but yet "none" has been choses as the default value.
I'm pretty sure the actual usage of "none" is 0%. Nobody chooses the option "Link to Element Feature" in order to not link it to an element feature.

This type of thing is very hard to explain when giving a demo or explaining a this feature. I usually resort to something like "yeah, weird choice, you know Aussies and all"


A feature that I didn't notice in the readme.txt is the fact that classically invisible elements such are notes and boundaries are now visible in the project browser, in a separate, blue package.

I find that a great improvement.


Pages: [1] 2 3 ... 23