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.

Messages - Uffe

Pages: 1 2 3 [4] 5 6 ... 70
But there's no way to check for the element's 'direction' in a shape script -- it doesn't have its own property for retrieval, and it's not a tagged value.
This works...

Ah! So it's not that the property isn't available for retrieval, it's just that it isn't documented.

I can create stereotypes with shape scripts which set different colours -- but how do I specify that when using my «outpar» ActivityParameter stereotype toolbox item, an 'out' ActivityParameter should be created as opposed to an 'in' one which is the default?
In your profile, give your "ActivityParameter" metaclass element an attribute named "direction" with initial value "out". This appears to work, but it's possible it only works for properties named "direction".

OK. But now that you showed me how to get the shape script to work I can make a single stereotype «actpar» rather than four different ones, which is better because it means a modeller can't set the direction to conflict with the stereotype.

Cheers, KP!


Bugs and Issues / Re: IPv6 support in license server
« on: October 03, 2017, 07:44:05 pm »
OK. Thanks, Simon.


I'll tell you what I want, what I really really want:

I want the different directions of ActivityParameters (in, out, inout, return) to be displayed differently in diagrams.

I can create stereotypes with shape scripts which set different colours -- but how do I specify that when using my «outpar» ActivityParameter stereotype toolbox item, an 'out' ActivityParameter should be created as opposed to an 'in' one which is the default?

I realize that this is slightly incorrect use of stereotypes. But there's no way to check for the element's 'direction' in a shape script -- it doesn't have its own property for retrieval, and it's not a tagged value.



Bugs and Issues / IPv6 support in license server
« on: October 02, 2017, 09:12:25 pm »
Hi all,

This question was last asked before the 13 beta came out.

Is there support for IPv6 in the license server?

Authoritative answers only, please. I don't need suggestions for workarounds.



Have you tried setting the background colour  in a RelatedElement subshape?


Bugs and Issues / Hyperlink - EA Command - FindInProjectBrowser
« on: September 29, 2017, 08:57:55 pm »
Hej alla!

If you create a hyperlink from the Common toolbox, you can specify its type as EA Command, which gives you a dropdown list of commands to choose from. One of these is FindInProjectBrowser.

This is pretty useless, because all it does is locate the diagram in the browser. If you make a copy of it and place that in a different diagram, then that hyperlink locates the diagram it's in, not the one the original hyperlink is in. So there doesn't seem to be any deeper magic going on.

But intriguingly, if you look at the hyperlink's name in the properties window, it's $uicmd=MenuCmd;param1=FindInProjectBrowser;param2=

This certainly smells like there's an option to locate something else by specifying this other thing as the second parameter.

Is there?

If so, what is the correct format?

I've tried an element GUID, with and without quotation marks, but no joy. Am I close? Or am I chasing wild geese again?


General Board / Re: Stupid Version Control Question
« on: September 29, 2017, 05:04:48 pm »
That won't work (if I got you right). A package is either version controlled or it isn't.

That's not quite right. With user security, you can allow some users, but not others, access to the version control facilities.

But that's a moot point, really. I discourage the use of external version control (edit: it's called manual version control these days) in EA because it just doesn't work all that well. Mainly due to the fundamental nature of version control. :)

I am a great fan of the Reusable Asset Service, which can be used to good effect in scenarios similar to the one you describe. With this, you store reusable models in a "storage", from which they can be retrieved to different projects. This way, there is a published approved version of a model which doesn't change (until users with the right level of access decide it should), while other modellers (such as your business users) have access to local copies which they can use and even make changes to without breaking anything in the published version.

The trick there is not to limit yourself to a single project. If that's your thinking, you're missing a large piece of the EA deployment puzzle.

Finally, I wouldn't go down the EALite route. I have no inside information, but my feeling is that Sparx considers that a bit of an ugly stepchild. They won't drop it because they don't drop anything, but I'm pretty sure they'll be allocating far more resources to the webby side of things than to EALite.



General Board / Re: Shape script on profile
« on: September 28, 2017, 11:50:25 pm »

There's not a lot you can do with fonts in shape scripts. You can set the colour, but not the size or typeface.

For the others, take a look at SetFillColor() and SetPenWidth().


General Board / Re: What is Sparx and for what purposes it should be used
« on: September 28, 2017, 02:44:27 am »
... What EA does not provide, however, is a set of this-is-how-you-model-for-purpose-X templates.

It does support various modelling languages (UML, SysML, BPMN) and frameworks (TOGAF, UPDM). But it assumes that you already know how to use them, including tailoring them to your specific needs. It's not a turnkey enterprise architecture solution where you just need to plug in your company logo and it'll do everything for you.

But then, having seen time and again the devastation caused by supposedly turnkey solutions from IBM and their ilk, I rather think that's just as well.


Bugs and Issues / Re: Glossary: mismatch of multi-word term over line breaks
« on: September 27, 2017, 08:17:54 pm »
OK, thanks. Reported.


General Board / Re: What is Sparx and for what purposes it should be used
« on: September 27, 2017, 07:36:37 pm »
Could you please tell me, what type of an instrument Sparx is?

What types have you got?

Fundamentally, EA is a UML tool, and fundamentally, UML is a documentation method. If your enterprise architecture (which I assume is what you meant) is suitable for documenting this way, which in a large part depends on the level of UML skill in your organization, then it will work well; if not, it won't.


General Board / Re: Versionhandling?
« on: September 27, 2017, 07:32:04 pm »
Hej igen,

You can't merge changes into a reusable asset. When you download a reusable asset from RAS you can selectively merge changes into the target project, but not the other way around. The storage is not a project (although it is backed by one) and it does not have a merge feature.

What you can do is upload the new, approved version. This will hide, but not overwrite, the older version in the storage, so subsequent downloaders can only retrieve the updated version.


Bugs and Issues / Glossary: mismatch of multi-word term over line breaks
« on: September 27, 2017, 07:23:29 pm »
Hi all,

It seems the glossary term highlighting feature doesn't work correctly for multi-word terms over line breaks.

If there are two multi-word glossary terms where one is a prefix of the other (as in "Some property" and "Some property type"), and you use the longer one in a notes field somewhere, if a line break should appear between "property" and "type", EA will highlight only "Some property" on the first line and pop up its meaning. If you resize the window to fit the whole phrase on one line, it instead highlights "Some property type" and pops up that meaning.

This is the case in 11.1, but that's so old now I don't want to report bugs on it. Can someone check this in the current version?



OK, thanks guys. I'll give it a try -- in a separate, throw-away EAP project.
On an air-gapped computer.
Inside a bank vault.
In Siberia.
That's within the purview of the FSB!  Are you sure they haven't interfered with your code?
Absolutely positive.

Now myove alonk. Thyere is nothink to see hyere.

PS: Nice code!  We've extended Generalization Sets to other forms of sets and so this will form the basis of common code to handle those!

Cool bananas! :)

Please fix the spelling error in the comment. :-[


I have returned from the untamed steppe, bearing a VBScript.

P.S. The integrity check did not moan upon a scrap value I inserted in t_xref and left it as it was.
Yeah, if you don't get it right when putting stuff in t_xref EA doesn't know when it should be deleted, but it doesn't seem to care. However, generalization sets created with the enclosed code work properly in that the t_xref rows are deleted when the corresponding connectors are. They also show up correctly in a diagram. I haven't tested anything else, but nothing's obviously broken so it seems to work just fine.

A few things.

Each generalization that is part of any generalization set has its own Xref.

There are four GUIDs to keep track of: the Xref GUID, the generalization set GUID, the connector GUID and the power type GUID (optional).

The Xref GUID has to be unique of course. The generalization set GUID has to be reused if you want to add more than one generalization to a set (which in all likelihood you do, otherwise why bother with the set at all). It is stored, fairly anonymously, in t_xref.Description (the field called 'GUID'). In my case I will be creating all my generalizations top-down in one go, so I won't need to look for existing generalization set GUIDs and pull them out of the Description. For a proper implementation, this would need to be addressed.

The connector GUID goes in t_xref.Client. A generalization set has no supplier; specify '<none>'.

The power type GUID also goes in Description, in a field called 'PowerTypeGUID'.

Namespace, Requirement, Constraint and Link are left empty.

Thanks again, fellas.


Code: (VBScript) [Select]
' Creates a GUID with {}'s and strips zero string terminator.
function CreateGUID
CreateGUID = Left(CreateObject("Scriptlet.TypeLib").Guid, 38)
end function

' Inserts a generalization set row into t_xref.
sub InsertGeneralizationSetXref(xrefGuid, genSetGuid, genSetName, isCovering, isDisjoint, powerTypeGuid, connectorGuid)
Repository.Execute("insert into t_xref " & _
"(XRefID, Name, Type, Visibility, Behavior, Partition, Description, Client, Supplier) values (" & _
"'" & xrefGuid & "', " & _
"'MOFProps', 'connector property', 'Public', 'generalizationSet', '0', " & _
"'GUID=" & genSetGuid & ";Name=" & genSetName & ";IsCovering=" & isCovering &";IsDisjoint=" & isDisjoint & _
";PowerTypeGUID=" & powerTypeGuid & ";', " & "'" & connectorGuid & "', " & _
end sub

' Creates a generalization set with the specified power type, and adds the specified connector to the set.
' Returns the GUID of the newly created generalization set.
function CreateGeneralizationSet(genSetName, isCovering, isDisjoint, powerType, connector)
dim genSetGuid

genSetGuid = CreateGUID()
InsertGeneralizationSetXref CreateGUID(), genSetGuid, genSetName, isCovering, isDisjoint, powerType.ElementGUID, connector.ConnectorGUID
CreateGeneralizationSet = genSetGuid
end function

' Adds a connector to an exidsting generalization set.
' If the generalization set attributes don't match what's in the database already, I've no idea what happens.
sub AddToGeneralizationSet(genSetGuid, genSetName, isCovering, isDisjoint, powerType, connector)
InsertGeneralizationSetXref CreateGUID(), genSetGuid, genSetName, isCovering, isDisjoint, powerType.ElementGUID, connector.ConnectorGUID
end sub

' Creates a simple class hierarchy with a generalization set.
sub FlyBySeatOfPants(package)
dim parent as EA.Element
dim child1 as EA.Element
dim child2 as EA.Element
dim powerType as EA.Element
dim connector as EA.Connector
dim genSetGuid
dim xrefGuid
dim stmt

set parent = package.Elements.AddNew("Parent", "Class")
set child1 = package.Elements.AddNew("Child 1", "Class")
set child2 = package.Elements.AddNew("Child 2", "Class")
set powerType = package.Elements.AddNew("Power Type", "Class")

set connector = child1.Connectors.AddNew("", "Generalization")
connector.SupplierID = parent.ElementID

genSetGuid = CreateGeneralizationSet(powerType.Name, "0", "0", powerType, connector)

set connector = child2.Connectors.AddNew("", "Generalization")
connector.SupplierID = parent.ElementID
AddToGeneralizationSet genSetGuid, powerType.Name, "0", "0", powerType, connector
end sub

Pages: 1 2 3 [4] 5 6 ... 70