Sparx Systems Forum

Enterprise Architect => General Board => Topic started by: bholtzman on March 25, 2020, 12:11:37 am

Title: Use of Tagged Values for version notes
Post by: bholtzman on March 25, 2020, 12:11:37 am
Does anyone use Tagged Values as a way for the modeler to annotate changes to the model? I was thinking of a Tagged Value called "Change Description" that the modeler would use to describe what changed. There might be other Tagged Values identifying the reason and/or source of the change. You could then run a script or query to extract all of the changes into a neat report, publish the new version with the change information embedded in the model for reference along with the change report, clear out all of the same Tagged Values in the master and start over for the next version.

Thanks.

Bill
Title: Re: Use of Tagged Values for version notes
Post by: Geert Bellekens on March 25, 2020, 12:23:05 am
Yeah, we do. I have a script that creates a tagged value CR on selected elemnets.
This tagged value links to a change object in the model.

We use the tagged value notes to store more info

user, date, comments.

see here: https://github.com/GeertBellekens/Enterprise-Architect-VBScript-Library/blob/8ffb8a04ccc9a09d1c701ea7fb966dceaf640045/Projects/Project%20A/A%20Scripts/LinkToCRMain.vbs (https://github.com/GeertBellekens/Enterprise-Architect-VBScript-Library/blob/8ffb8a04ccc9a09d1c701ea7fb966dceaf640045/Projects/Project%20A/A%20Scripts/LinkToCRMain.vbs)

For the script we use to link elements to a change object.

Geert
Title: Re: Use of Tagged Values for version notes
Post by: bholtzman on March 25, 2020, 01:55:14 am
This is cool, thanks Geert! I have some dumb questions:
-What does CR stand for?
-When you say "change object" what are you referring to exactly?
-How are these functions triggered to run and when? It looks like maybe linkItemToCR runs while the user is making changes to the model?
-Can you confirm that linktoCR actually adds a row in one of the tagged value tables in the database?
-If so, why does linktoCR not use the input variable selectedItemType? Don't you need to know the item type to know which table to use?

Thanks very much and I hope the epidemic is not affecting your area of the country.

Bill
Title: Re: Use of Tagged Values for version notes
Post by: Geert Bellekens on March 25, 2020, 02:11:17 am
This is cool, thanks Geert! I have some dumb questions:
-What does CR stand for?
Change Request
Quote
-When you say "change object" what are you referring to exactly?
We use EA's Change object from EA's maintenance toolbox (looks a bit similar to a requirement)
Quote
-How are these functions triggered to run and when? It looks like maybe linkItemToCR runs while the user is making changes to the model?
We have scripts in project browser and diagram groups. User right click on a number of items and then run the script from the context menu.
Quote
-Can you confirm that linktoCR actually adds a row in one of the tagged value tables in the database?
It creates a tagged value. Depending on the item that is in t_objectproperties, t_attribute_tag or t_connectorTag (we don't use t_operationTag or t_taggedValue for this purpose)
Quote
-If so, why does linktoCR not use the input variable selectedItemType? Don't you need to know the item type to know which table to use?
Each object we use has a property named TaggedValue, so the function doesn't need to know which type it is dealing with. Each TaggedValue has the same properties and can be dealt with the same way.
This is an advantage of using a non-strong typed language such as VBScript.
Quote
Thanks very much and I hope the epidemic is not affecting your area of the country.

Bill
Hope you and you family are spared as well.
Belgium is so small you could consider it as having only one area, but we have been in lockdown for a week and a half now.
Up till now we haven not gotten sick, so we have good hope to escape it.

Geert


[/quote]
Title: Re: Use of Tagged Values for version notes
Post by: bholtzman on March 25, 2020, 06:23:11 am

>>Each object we use has a property named TaggedValue, so the function doesn't need to know which type it is dealing with.<<


Are you saying that every row in t_attribute has a corresponding row in t_attributetag in which the property is TaggedValue and the value is "attribute"?


Also, what is the relationship between your method and an MDG? Is your code part of an MDG?


Thanks again.


Bill
Title: Re: Use of Tagged Values for version notes
Post by: Geert Bellekens on March 25, 2020, 03:36:51 pm

>>Each object we use has a property named TaggedValue, so the function doesn't need to know which type it is dealing with.<<


Are you saying that every row in t_attribute has a corresponding row in t_attributetag in which the property is TaggedValue and the value is "attribute"?
No, each attribute corresponds to a single record in t_attribute. Each tagged value on an attribute is a record in t_attributeTag.
What I'm trying to say is that, if you use the API, you can write the exact same code for to handle tagged values for elements, attributes and connectors. No need to know anything about the actual tables here.
Quote

Also, what is the relationship between your method and an MDG? Is your code part of an MDG?
No, just a script and a tagged value definition. Scripts and tagged values (that are not part of a UML profile) I usually transfer with reference data export.
I don't like the way MDG's modify them. Scripts all get put into the same group, and tagged values get the MDG name added like (myMDG::TagName)

Geert
Title: Re: Use of Tagged Values for version notes
Post by: bholtzman on March 25, 2020, 11:53:05 pm
OK so you're saying that I can just follow the instructions here and then use your code as-is?
https://bellekens.com/2015/12/27/how-to-use-the-enterprise-architect-vbscript-library/

You're saying I should download the entire Library or just the LinkToCRMain.vbs?

Is there code in there to generate reports of the changes as well? This would really be great if it's as easy as it sounds.

Bill
Title: Re: Use of Tagged Values for version notes
Post by: Geert Bellekens on March 26, 2020, 12:13:45 am
In this particular case I don't think you need the whole library

The main script is used by
https://github.com/GeertBellekens/Enterprise-Architect-VBScript-Library/blob/master/Projects/Project%20A/Diagram%20Group/Link%20To%20CR.vbs (https://github.com/GeertBellekens/Enterprise-Architect-VBScript-Library/blob/master/Projects/Project%20A/Diagram%20Group/Link%20To%20CR.vbs)
and
https://github.com/GeertBellekens/Enterprise-Architect-VBScript-Library/blob/master/Projects/Project%20A/Project%20Browser%20Group/Link%20To%20CR.vbs (https://github.com/GeertBellekens/Enterprise-Architect-VBScript-Library/blob/master/Projects/Project%20A/Project%20Browser%20Group/Link%20To%20CR.vbs)

It uses also
https://github.com/GeertBellekens/Enterprise-Architect-VBScript-Library/blob/master/Projects/Project%20A/A%20Scripts/Util.vbs (https://github.com/GeertBellekens/Enterprise-Architect-VBScript-Library/blob/master/Projects/Project%20A/A%20Scripts/Util.vbs)

I do have some searches as well that we use to get the details out
Object by CR:
Code: [Select]
SELECT o.ea_guid AS CLASSGUID, o.Object_Type AS CLASSTYPE,
re.Name AS Release, cr.StereoType AS ChangeType, cr.Name AS ChangeRequest, o.name AS ChangedItem,
substring(op.Notes, charindex('date=',op.[Notes]) + len('date='),10) as ChangeDate,
substring(op.Notes,charindex('user=',op.[Notes]) + len('user='),charindex(';date=', op.[Notes]) - (charindex('user=',op.[Notes]) + len('user='))) as UserName,
substring(op.Notes,charindex('comments=',op.[Notes]) + len('comments='),500) as ChangeComments,
package.name AS PackageName, package_p1.name AS Package_level1, package_p2.name AS Package_level2, package_p3.name AS Package_level3
FROM ((((((((t_object o
INNER JOIN t_objectproperties op ON o.Object_ID = op.Object_ID)
INNER JOIN t_object cr ON cr.ea_guid = op.value)
LEFT JOIN t_connector crre ON crre.Start_Object_ID = cr.Object_Id)
LEFT JOIN t_object re ON (re.Object_Id = crre.End_Object_Id AND re.StereoType = 'Release'))
INNER JOIN t_package package ON o.package_id = package.package_id)
LEFT JOIN t_package package_p1 ON package_p1.package_id = package.parent_id)
LEFT JOIN t_package package_p2 ON package_p2.package_id = package_p1.parent_id)
LEFT JOIN t_package package_p3 ON package_p3.package_id = package_p2.parent_id)
WHERE op.Property = 'CR'
and cr.Name like '#WC#<Search Term>#WC#'
AND o.Package_ID IN (#Branch#)

UNION

SELECT a.ea_guid AS CLASSGUID, 'Attribute' AS CLASSTYPE,
re.Name AS Release, cr.StereoType AS ChangeType, cr.Name AS ChangeRequest, o.name +'.'+ a.Name AS ChangedItem,
substring(atv.Notes, charindex('date=',atv.[Notes]) + len('date='),10) as ChangeDate,
substring(atv.Notes,charindex('user=',atv.[Notes]) + len('user='),charindex(';date=', atv.[Notes]) - (charindex('user=',atv.[Notes]) + len('user='))) as UserName,
substring(atv.Notes,charindex('comments=',atv.[Notes]) + len('comments='),500) as ChangeComments,
package.name AS PackageName, package_p1.name AS Package_level1, package_p2.name AS Package_level2, package_p3.name AS Package_level3
FROM (((((((((t_attribute a
INNER JOIN t_attributetag atv ON a.ID = atv.ElementID)
INNER JOIN t_object cr ON cr.ea_guid = atv.value)
LEFT JOIN t_connector crre ON crre.Start_Object_ID = cr.Object_Id)
LEFT JOIN t_object re ON (re.Object_Id = crre.End_Object_Id AND re.StereoType = 'Release'))
INNER JOIN t_object o ON a.Object_ID = o.Object_ID)
INNER JOIN t_package package ON o.package_id = package.package_id)
LEFT JOIN t_package package_p1 ON package_p1.package_id = package.parent_id)
LEFT JOIN t_package package_p2 ON package_p2.package_id = package_p1.parent_id)
LEFT JOIN t_package package_p3 ON package_p3.package_id = package_p2.parent_id)
WHERE atv.Property = 'CR'
and cr.Name like '#WC#<Search Term>#WC#'
AND o.Package_ID IN (#Branch#)
ORDER BY Release, ChangeType, ChangeRequest, ChangedItem

Objects by release:
Code: [Select]
SELECT o.ea_guid AS CLASSGUID, o.Object_Type AS CLASSTYPE,
re.Name AS Release, cr.StereoType AS ChangeType, cr.Name AS ChangeRequest, o.name AS ChangedItem,
substring(op.Notes, charindex('date=',op.[Notes]) + len('date='),10) as ChangeDate,
substring(op.Notes,charindex('user=',op.[Notes]) + len('user='),charindex(';date=', op.[Notes]) - (charindex('user=',op.[Notes]) + len('user='))) as UserName,
substring(op.Notes,charindex('comments=',op.[Notes]) + len('comments='),500) as ChangeComments,
package.name AS PackageName, package_p1.name AS Package_level1, package_p2.name AS Package_level2, package_p3.name AS Package_level3
FROM ((((((((t_object o
INNER JOIN t_objectproperties op ON o.Object_ID = op.Object_ID)
INNER JOIN t_object cr ON cr.ea_guid = op.value)
INNER JOIN t_connector crre ON crre.Start_Object_ID = cr.Object_Id)
INNER JOIN t_object re ON (re.Object_Id = crre.End_Object_Id AND re.StereoType = 'Release'))
INNER JOIN t_package package ON o.package_id = package.package_id)
LEFT JOIN t_package package_p1 ON package_p1.package_id = package.parent_id)
LEFT JOIN t_package package_p2 ON package_p2.package_id = package_p1.parent_id)
LEFT JOIN t_package package_p3 ON package_p3.package_id = package_p2.parent_id)
WHERE op.Property = 'CR'
AND re.Name LIKE '<Search Term>'
AND o.Package_ID IN (#Branch#)

UNION ALL

SELECT a.ea_guid AS CLASSGUID, 'Attribute' AS CLASSTYPE,
re.Name AS Release, cr.StereoType AS ChangeType, cr.Name AS ChangeRequest, o.name +'.'+ a.Name AS ChangedItem,
substring(atv.Notes, charindex('date=',atv.[Notes]) + len('date='),10) as ChangeDate,
substring(atv.Notes,charindex('user=',atv.[Notes]) + len('user='),charindex(';date=', atv.[Notes]) - (charindex('user=',atv.[Notes]) + len('user='))) as UserName,
substring(atv.Notes,charindex('comments=',atv.[Notes]) + len('comments='),500) as ChangeComments,
package.name AS PackageName, package_p1.name AS Package_level1, package_p2.name AS Package_level2, package_p3.name AS Package_level3
FROM (((((((((t_attribute a
INNER JOIN t_attributetag atv ON a.ID = atv.ElementID)
INNER JOIN t_object cr ON cr.ea_guid = atv.value)
INNER JOIN t_connector crre ON crre.Start_Object_ID = cr.Object_Id)
INNER JOIN t_object re ON (re.Object_Id = crre.End_Object_Id AND re.StereoType = 'Release'))
INNER JOIN t_object o ON a.Object_ID = o.Object_ID)
INNER JOIN t_package package ON o.package_id = package.package_id)
LEFT JOIN t_package package_p1 ON package_p1.package_id = package.parent_id)
LEFT JOIN t_package package_p2 ON package_p2.package_id = package_p1.parent_id)
LEFT JOIN t_package package_p3 ON package_p3.package_id = package_p2.parent_id)
WHERE atv.Property = 'CR'
AND re.Name LIKE '<Search Term>'
AND o.Package_ID IN (#Branch#)
ORDER BY Release, ChangeType, ChangeRequest, ChangedItem

These searches have been developed for SQL Server and might not work for .eap files.

Geert
Title: Re: Use of Tagged Values for version notes
Post by: bholtzman on March 26, 2020, 12:46:09 am
Thanks Geert!  :D
Title: Re: Use of Tagged Values for version notes
Post by: bholtzman on June 18, 2020, 02:48:25 am
Hi Geert,
I am finally getting around to trying this out (Link to CR.vbs). I imported this script (and Util.vbs and LinkToCRMain.vbs) into my EAP file. I can run the script by right-clicking on an object in a diagram (Specialize -> Scripts). But nothing seems to happen. What am I missing?

Hope you're well. Thanks.

Bill
Title: Re: Use of Tagged Values for version notes
Post by: Geert Bellekens on June 18, 2020, 03:14:34 am
Hi Bill,


Not sure what is happening there. Have you tried to debug it and step through?

Geert
Title: Re: Use of Tagged Values for version notes
Post by: bholtzman on June 18, 2020, 03:42:37 am
I think I might need to take a few steps back:
- I noticed the code includes getUserLogin. Right now my file is unsecured. Do I need to add security and require a login?
- The purpose of this is to link elements to CRs, right? How do I enter a CR? What does EA recognize as a CR? I see the below in your code. Can you explain?

Bill

   sqlGetString = "select top 1 o.Object_id " & _
               " from (t_objectproperties tv " & _
               " inner join t_object o on o.ea_guid = tv.VALUE) " & _
               " where tv.[Notes] like 'user=" & userLogin & ";" & wildcard & "' " & _
               " order by  " & sqlDateString & " desc, tv.PropertyID desc "
Title: Re: Use of Tagged Values for version notes
Post by: Geert Bellekens on June 18, 2020, 04:00:43 am
I don't think you need to enable security to get something from getUserLogin. IIRC it returns the windows username if you haven't enabled security.
The element we link in the CR tag is an EA Change element from the maintenance toolbox.

I store the userID, the date, and the comment in the notes of the tagged value.

With this query I get the element with the most recent CR tag done by the current user.
This allows the script to propose to link to the same CR (as often we link multiple things to the same CR)

Geert



Geert
Title: Re: Use of Tagged Values for version notes
Post by: bholtzman on June 18, 2020, 04:57:36 am
Here's what shows up in the debug window.

Bill

[512023404]      Stack recording threshold set to 3 frames
[512023470]      Default Directory is C:\Program Files (x86)\Sparx Systems\EA
[512023471]      Agent dll found: C:\Program Files (x86)\Sparx Systems\EA\SScript.DLL
[512023471]      Default Directory is C:\Program Files (x86)\Sparx Systems\EA
[512023471]      Agent: Started
[512023491]      Microsoft Process Debug Manager creation Failed: 0x80040154
[512023491]      This is included as part of various Microsoft products.
[512023492]      Download the Microsoft Script Debugger to install it.
[512023492]      Failed to initialize VBScript engine
[512023492]      Warning, all breakpoints failed to bind, check binaries built with debug information and source files synchronized with Model
[512023492]      Debug Session Ended
Title: Re: Use of Tagged Values for version notes
Post by: bholtzman on June 18, 2020, 05:39:25 am
Stepping through the code it looks like it bombs at the CreateObject call.

function getSelectedElements(diagram)
   dim selectedElements
   set selectedElements = CreateObject("System.Collections.ArrayList")
Title: Re: Use of Tagged Values for version notes
Post by: Geert Bellekens on June 18, 2020, 02:24:59 pm
In order to be able to debug vbscript, you need the Microsoft script debugger.
This used to be available on a Microsoft website bu they removed that download a few years ago.

I still have a copy of the installer here: https://drive.google.com/file/d/0B5YX31GyMA64NUJsQnJiaVhLWlk/view?usp=sharing (https://drive.google.com/file/d/0B5YX31GyMA64NUJsQnJiaVhLWlk/view?usp=sharing)

The ArrayList needs .Net 3.5. In windows 10 you can add that from the control panel

Geert
Title: Re: Use of Tagged Values for version notes
Post by: bholtzman on June 18, 2020, 10:34:32 pm
Thanks, Geert. It worked! I am now seeing tagged values with the property "CR" and the value a GUID. Awesome!

I am not using SQL Server and just an EAP file, so I need to convert those two queries you provided to something Access can process, right?

Bill
Title: Re: Use of Tagged Values for version notes
Post by: Geert Bellekens on June 19, 2020, 01:32:51 am
Yeah, they are already using the parentheses for the joins (not needed in SQL Server, only for MS Access), but you might need to adjust things such as substring()

Geert
Title: Re: Use of Tagged Values for version notes
Post by: bholtzman on June 19, 2020, 02:32:04 am
The below worked in case anyone needs it. One odd thing was if I used the alias CLASSTYPE, I got an odd column containing symbols. Now that I have the query, how can I provide less skilled users with a way to run it and export the data? Can I put it into a script?

Geert this is really good stuff - I appreciate your attention to my posts.

Bill

SELECT o.ea_guid AS CLASSGUID, o.Object_Type AS CLASS_TYPE,
re.Name AS Release, cr.StereoType AS ChangeType, cr.Name AS ChangeRequest, o.name AS ChangedItem,
mid(op.notes, instr(op.notes, "date=")+5, 10) AS ChangeDate,
mid(op.notes, instr(op.notes, "comments=")+9, 500) AS ChangeComments,
mid(op.notes, instr(op.notes, "user=")+5, instr(op.notes, ";date") - instr(op.notes, "user=")-5) AS ChangeUser,
package.name AS PackageName, package_p1.name AS Package_level1, package_p2.name AS Package_level2, package_p3.name AS Package_level3
FROM ((((((((t_object o
INNER JOIN t_objectproperties op ON o.Object_ID = op.Object_ID)
INNER JOIN t_object cr ON cr.ea_guid = op.value)
LEFT JOIN t_connector crre ON crre.Start_Object_ID = cr.Object_Id)
LEFT JOIN t_object re ON (re.Object_Id = crre.End_Object_Id AND re.StereoType = 'Release'))
INNER JOIN t_package package ON o.package_id = package.package_id)
LEFT JOIN t_package package_p1 ON package_p1.package_id = package.parent_id)
LEFT JOIN t_package package_p2 ON package_p2.package_id = package_p1.parent_id)
LEFT JOIN t_package package_p3 ON package_p3.package_id = package_p2.parent_id)
WHERE op.Property = 'CR'

UNION

SELECT a.ea_guid AS CLASSGUID, 'Attribute' AS CLASS_TYPE,
re.Name AS Release, cr.StereoType AS ChangeType, cr.Name AS ChangeRequest, o.name +'.'+ a.Name AS ChangedItem,
mid(atv.notes, instr(atv.notes, "date=")+5, 10) AS ChangeDate,
mid(atv.notes, instr(atv.notes, "comments=")+9, 500) AS ChangeComments,
mid(atv.notes, instr(atv.notes, "user=")+5, instr(atv.notes, ";date") - instr(atv.notes, "user=")-5) AS ChangeUser,
package.name AS PackageName, package_p1.name AS Package_level1, package_p2.name AS Package_level2, package_p3.name AS Package_level3
FROM (((((((((t_attribute a
INNER JOIN t_attributetag atv ON a.ID = atv.ElementID)
INNER JOIN t_object cr ON cr.ea_guid = atv.value)
LEFT JOIN t_connector crre ON crre.Start_Object_ID = cr.Object_Id)
LEFT JOIN t_object re ON (re.Object_Id = crre.End_Object_Id AND re.StereoType = 'Release'))
INNER JOIN t_object o ON a.Object_ID = o.Object_ID)
INNER JOIN t_package package ON o.package_id = package.package_id)
LEFT JOIN t_package package_p1 ON package_p1.package_id = package.parent_id)
LEFT JOIN t_package package_p2 ON package_p2.package_id = package_p1.parent_id)
LEFT JOIN t_package package_p3 ON package_p3.package_id = package_p2.parent_id)
WHERE atv.Property = 'CR'

ORDER BY Release, ChangeType, ChangeRequest, ChangedItem
Title: Re: Use of Tagged Values for version notes
Post by: bholtzman on June 19, 2020, 06:56:34 am
Geert,
Reference my previous question, I found you had touched on it here:
https://www.sparxsystems.com/forums/smf/index.php?topic=41323.0

You said: Another option is to write a small script that automates that. In such a script you could also directly export to Excel if you wanted to.


Do you have any examples of that?

Bill
Title: Re: Use of Tagged Values for version notes
Post by: Geert Bellekens on June 19, 2020, 01:58:28 pm
You can either export your query, and have each user import it individually, or you can make an MDG technology file and add the search to it.
You can then deploy the MDG in the model (or on a fileshare) and all users can use the search without needing to import the search.

I have a couple of examples of excel export scripts here: https://github.com/GeertBellekens/Enterprise-Architect-VBScript-Library/search?q=excel&unscoped_q=excel (https://github.com/GeertBellekens/Enterprise-Architect-VBScript-Library/search?q=excel&unscoped_q=excel)

Geert
Title: Re: Use of Tagged Values for version notes
Post by: bholtzman on June 24, 2020, 12:20:57 am
Geert,
In Project A I tried running both test.vbs and TestKristof.vbs and same error:

DAO.Database [0x000000c03]
Syntax error (missing operator) in query expression '(uc1.Object_ID = con.Start_Object_ID)    INNER JOIN t_object uc2 ON (con.End_Object_ID = uc2.Object_ID)'

Any ideas?

Bill
Title: Re: Use of Tagged Values for version notes
Post by: Geert Bellekens on June 24, 2020, 01:42:19 am
Probably because the query wasn't written for .eap file
I mostly work with SQL Server, so a lot of scripts work only on an SQL server repository.

If you check the file DBerror.txt in the %appdata%\Sparx Systems\EA folder, you can see the whole query that failed, and try it on the database you are on.

Geert
Title: Re: Use of Tagged Values for version notes
Post by: bholtzman on June 25, 2020, 02:04:50 am
Of course you're right...I need to edit the queries...thanks!

Bill
Title: Re: Use of Tagged Values for version notes
Post by: bholtzman on July 01, 2020, 04:09:56 am
Hi Geert,
I've got it all working now and am able to export the results of my query to Excel using a script in the Project Browser Group. It's pretty awesome!

I did have to work through a lot of errors with my query that were resolved when I removed the continuation character and just put it all on one line. I'm not sure what the issue was as I kept getting invalid character. After I put it on one line, I was able to then reinsert the continuation character and it worked, so I am thinking there were some invisible formatting characters present. Have you seen that?

One question I do have is, I am getting an extra column in my Excel output called Column1 with no content. I assumed this was because I had somehow specified another column in my query but I do not see how. Any ideas? My query is below.

Bill

   sqlGetContent = "select p.name AS Package, o1.name AS TargetClass, c.destrole AS ConnectorTag " & _
   "FROM (t_object o INNER JOIN (t_connector c INNER JOIN t_object AS o1 ON c.End_Object_ID = o1.Object_ID) " & _
   "ON o.Object_ID = c.Start_Object_ID) INNER JOIN t_package p ON o1.Package_ID = p.Package_ID " & _
   "WHERE not isnull(c.destrole) and lcase(o1.name) <> lcase(c.destrole)" & _
   "ORDER BY p.name, o1.name"
Title: Re: Use of Tagged Values for version notes
Post by: Geert Bellekens on July 01, 2020, 01:55:05 pm
Bill,

Looks like the array you are sending to excel as contents has one (empty) column to many.

Geert
Title: Re: Use of Tagged Values for version notes
Post by: bholtzman on August 02, 2020, 12:42:48 am
Hi Geert,
Hope you're well. I have deployed your LinkToCR code and given a couple of demonstrations to team members. It works well. One thing they'd like to see is for the code to be triggered by a change to their model. So if they were to add a new attribute for instance, is there a way to then start the code so that a user cannot make changes without being reminded (or even forced) to associate the update with a CR? Thanks.

OK, I just saw this video:
https://www.youtube.com/watch?v=-BKJxCilD6c

So I can use EAMatic to trigger off user events, correct?

EAMatic looks like something the user has to download and set up. Is there another way to trigger your code from user events?

Bill
Title: Re: Use of Tagged Values for version notes
Post by: Geert Bellekens on August 04, 2020, 08:29:56 pm
Yes, EA-Matic is an add-in that can execute scripts and needs to be installed at EA installation.

You can do the same thing by

- writing your own add-in
- using a "model-addin" script (new since v15?)

Workflow scripts also somehow do stuff like that, but I've never really used those, so I'm not that sure what they can be used for.

Geert