Category Archives: All

Information that is interest to all visitors – typically it will be of a general nature and not hold too many gems of knowledge

Your use of EA – feedback from survey

Thank you to all those who have taken the time to complete my survey.

I have now closed the survey (see my previous post) which was completed by nearly 20 people.  To some extent the level of response is no surprise as anybody looking at the forums and blogs will tend to see the same interested people.  I had hoped to get a few more to improve the statistical integrity but trust it will paint a useful, if rough picture.  In this post when I’ve added my own comments I put them in italics, so hopefully they are clear.

I found the results have been very interesting and personally I was surprised to see how much use was made of EA other than want I tend to call the front end stuff – “requirements and modelling”.  If we start by looking at the roles of the respondants, we do it is skewed towards the front end with no users who I would describe in the more downstream roles, although that may only be a reflection of their job name rather than their true role.  I guess there are many “Jack of all trades

Respondants roles

Respondants roles

Then we looked at use of EA within the organisation.

Use of EA within our team and organisation

Use of EA within our team and organisation

What we see is that it is usually more than a single person using EA and where used, its use is moderate.  My interpretation is that in those organisations who have committed to use EA, we see some use beyond the team although this is not the case for all and it is purely just for the team.

When we look at the key deliverables, this started to surprise me as not only did it include those expected:

  • Requirements
  • Business and functional analysis
  • Architecture
  • Designs
  • Reporting  – both HTML and Word

But some interesting items that implied serious technical use downstream

  • Database design
  • Desktop applications
  • Embedded software

When we look at our level of EA expertise we see that it is higher than those within their teams and organisation.  No surpise as I guess those reading the blogs and seeing this survery are those most interested EA.

EA Expertise

EA Expertise

Now the survey gets in a more specific.  The next question related to learning EA and getting information.

How do we learn about EA?

How do we learn about EA?

The responses were interesting in that indicate that stuff is OK, but from the comments there is clearly scope for improvement.  One problem I see is that EA is big, really big, and it’s potential use is so great it is a hard nut to crack.  To gain valuable use of EA requires either true committment from one or more users in a team, or well designed training and guidance – or probably both.    The comments also highlighted a lack of resources.  I know if you look around the forums it is the same few individuals (probably you) who contribute (which I trust you enjoy doing!). In fact, EXploringEA probably wouldn’t exist if EA was well documented with tutorials, examples, and other readily available training material covering all topics of potential interest.

When we look at the most important features  of EA we see that at the top of the list are the front end stuff reflecting the roles of the respondants.

Most important feature

Most important feature

Then if we look at allthe features that are used.

Use of EA features

Use of EA features

If we look at those areas that are only sometimes or never used we would start to take out:

  • Team management tools
  • Model simulation
  • Execution analyser
  • QA
  • Maintenance

Now if this was a true reflection of EA usage it would be a concern.  The ability to have a single repository of information throughout the project, tracking from the requirements and design to the implementation and testing is highly desirable.  Furthermore, having accurate information downstream to support ongoing maintenance is essential.  I can only guess that a some stage of the project information is moved to other tools which are then used moving forward to support the product during it’s lifecycle – let’s hope!

What I can gather from comments is that there are some really useful features of EA.  There were comments for most areas, especially those in the areas where there is not a high use. Here is a subset:

  • Database – “Great for quick re-engineering “
  • Automation  – – “deploying and operating something in addition to EA is something they usually do not want.” Reflecting the challenge associated with using AddIns.
  • Project management – “I think it can be a good alternative to never-updated projects created in Microsoft Project, but its UI is too technical for the minds of PMs, and therefore may never gain popularity”.    No surpise that PM’s don’t want to change.  I developed an EA addin for MS Project but found that project managers weren’t really interested in using EA, so a I then produced an addIn for MS Project that accesses EA but still not much interest.  If I was in their shoes why would I change, what more am can I gain. One further point is that the project management capabilities within EA look great for managing say a development team but do not cater for the broader business project management, planning and reporting; nor should they!
  • Team management – “I haven’t or hardly found any well-developed use case and user story scenarios models at my clients. Because of this, testing features are of no value for them, until they understand why an up-to-date model with detailed requirements and scenarios are important” Interesting in that I think a lack of real detailed examples really is a limiter.  If there were real world examples which were well crafted and could be mapped to current working practices it would be great.  I guess that the problem here is that this would be valuable intellectual property and hence nobody is able to provided… Anybody have ideas on what could be done?
  • Maintenance – “Roadmapping works well. Trick is to have as-is and to be changes at the start end end of change dependency diagram.” It was great to see this comment as it really implies somebody is doing the right thing and managing the work from requirements to deployment and ongoing maintenance.

What is missing from EA?

The comments included:

  • Better Excel support – I will start with this as I have a personal investment in eaXL and see that this can do a lot – perhaps we haven’t communicated enough detail (!), so let us know what is needed and you never known.  And, now Sparx have their own Excel tools.
  • Intergration with other tools – notably publishing tools to make information available to a wider audience.  Although HTML is available organisations how their own preferred tools.
  • “Stop changing the UI in every release”
  • “A streamlined report/template editing facility, which enables manual editing, with a great UI, such as those you can find in visual query builders.”

Final feedback

I think I can summarise a sense of the feedback from one of the final comments:

“Great tool – but I think it tries to expand its scope too much”

Also in trying to do so much “some features need to be sharpened” – which apparently comes from a domain expert indicating that in adding some features they were not accurate in meeting the real need.

So there we have it.  For me, I’ve had some interesting reading which has generated some ideas for furture exploring and posts.  In the meantime, I’d like to thank those who took the time to contribute to the survey, and trust that you find this feedback useful.




Let me know about your use of EA

In EXploringEA I’m always keen to look into stuff that may be useful.  I have a view that there is so much in EA that I really don’t know about or fully understand (and this could be the same for you).  Of course, it is difficult to document such a powerful tool in a way that makes the product fully accessible to all (I have some ideas, but not the mandate or resource!). I know I’ve suffered many times from some small detail being missed, or inferred from a previous topic that I may have skipped, in my eagerness to play and subsequently spend hours trying to get something working!

There is plenty to discover, for example from the various forums, however there must be people out there doing some interesting stuff that is never reported and could go well beyond my expectations. Of course, the problem for anybody,especially under time pressures, is getting to know about stuff that may be useful to them when it is needed.

Having focused on scripting for a few months (not finished as I’m still exploring a few areas) I’ve been thinking about some other areas that I don’t fully understand, with a view to putting together some experiments to look into more stuff that I hope is potentially useful. I have my candidates list but, following a couple of recent posts I’ve had some useful feedback which has pointed me into some interesting, but not conclusive, directions.

In thinking about some of the areas to explore I get a sense that I am missing something.  Much of my experience of using EA has been with the front end tasks – requirements capture, modelling, analysis and design; if I look at user guide I’ve not even  got half way through!

So I am curious to get a fuller understanding of what and how EA is really used.  And, with this in mind, there is no better way than to ask you, EA users.  So my idea is to conduct a short survey, where you can help let me know how you use EA, what you think it does well, and probably most importantly areas that you would expect it to do better.

I’ve tried to make it easy with tick boxes.  I am not asking for detail,  but have provided space if you wish to add any comments that you think would highlight the value or issues with EA, so that I can just get a better understanding of what is being achieved with EA – what it does as doesn’t do this could be a help to me and others.

This anonymous survey is now available at How to use EA survey.   I’ll leave it there for about a few weeks, to give an opportunity to as many as possible.  Then I’ll consolidate the data and share a summary of the result in a future post, so you can see what our little world is doing with this great tool.

I am sorry that I cannot offer any incentives other than I will share a summary of the results in a future post, and the hope that I will continue to post information that may be useful to somebody.

And, of course, hopefully be inspired by you to explore other areas and application of EA.

Thanks for your help.


What are the hot EA topics?

I’m taking a few weeks off, so I’m in holiday mode enjoying the sun and reducing my time in a dark room of computers, but although I won’t be doing many experiments I had it in mind that one job I should do is to review my list of candidate experiments ready for me return.

Every time I look at my list (infrequently), I get a sense that there is so much in EA and however much I explore there will always be more.  I guess this is no surprise as the tool evolves to meet users needs faster than I can explore, so my candidate list is just a guide to some of the areas I could explore when I next get idle.

Hot topics

I would guess that there are 3 hot topics:

  • Scripting _ If I look back over the last 6 months I’ve spend at lot of time looking at scripting. And judging by what seems to me an increasing number of queries on scripting on the Sparx automation forum I guess this could be considered a hot topic.
  • AddIns – There continues to be a steady stream of issues with AddIns and from the questions raised indicate more people are developing their own AddIns (my advert – we can help with AddIn developments!) as well as more being added to Sparx own list.
  • Documentation and reporting –  I have noted an increasing number of questions relating to producing documentation/reports in a variety of formats.

How accurate my observations is unclear so I may have missed a major topic; it would be interesting if there were statistics available (Sparx are there?).  What do you think I have missed?

Some of the topics that I don’t see much (or I’ve just missed) that were on my list are:

  • Application development
  • Model transformations

Perhaps that’s because those using fully understand.

What else for my list?

In starting to review my candidate list what came to mind was a post on the Sparx forum on testing AddIns last week.  It prompted me to think about what we use EA for?

We know that EA could be used throughout the development cycle whether modelling, analysis, design, coding, testing and maintenance. (I could possibly add project management but I guess that this will be a small number of users, not least based on the level of interest we have received for our MS Project and TeamPulse AddIns!)

From my experience the majority of users fall into the first 3 categories – modelling, analysis and design.  I think this observation is further supported by the topics covered at EA user Group meetings I have attended. Yes, there are a few well documented exceptions such as embedded code development but not much else.

Does this mean that like other tools I can think of such as Microsoft Word, EA is positioned by a few key features, and even though it continues to evolve the major use remains the same.  If we think about Word most users only use a small number of the product features; there are power users who can demonstrate some amazing stuff that can be done, however this requires awareness and knowledge of how to perform the task, and all too often users don’t go looking. It was this thinking that was part of the reasoning behind EXploringEA, the opportunity to go where others have not gone before…

So are there parts of EA that we are failing to use that could make our developments easier? better? quicker? cleaner? more maintainable? ….

It was the post on testing AddIns that reminded me that one of my goals with EXploringEA was to be able to fully understand the viability of managing the whole software lifecycle from product concept to its ongoing maintenance within EA. I had a vision that one tool containing the “knowledge” would help the overall process and its management.

Yes, there will be a need to call other tools – compilers, linkers, database tools, documentation tools … but no major distraction and if EA could truly be the kingpin to manage our world, would our developments be better?  or am I just trying to push all into a “box” which is just not the right size for the problem in hand?  And if there are too many other tools with which we need to interact are we just complicating the process?

So is my desire to manage and orchestrate the development in a clear and clean way getting in the way of a realistic development process? I hold my hand up and say I don’t use EA for the majority of my coding but somehow wish I could, and maintenance that’s another story.

So imagine that EA were the primary tool for our developments, with a few associated specialist programmes to do the detail, how would each of us feel whether we be business analysts, project managers, developers, coders, testers, supporters?

This approach raises a lot of issues, but for the moment here are a few questions:

  • Is EA only suitable for the modelling, analysis, design?
    • Is it sufficient and able to perform these tasks?
    • Is it viable to use EA in other areas such coding, testing, maintenance and if so what reliance is there on other tools? (Just seen the draft agenda for the EA User group meeting in London – with a talk on using EA for Full Project Lifecycle,  which could shed some more light on this)
    • Can we use it to produce all the documentation that we need, not only for our up front design activities but documents that meet the needs of testers, supporters and maintainers?
  • In  what areas are there are good case studies? (I need to look out for some, and if you have one let me know if I can add a link to it to help others?)
  • What additional tools are needed to support general purpose windows development?
  • And always – what questions should I be asking and I haven’t?

I also mustn’t forget to ask again – what are the hot EA topics?

I hope that is thought provoking – it has got me thinking – but then with the sun on the terrace …

I’ll be back soon.




eaForms – is there a need for a simple EA client to help get people on board?

You may have seen, if you’ve reviewed information about our eaForms product, that one of the key reasons for the AddIn was to help overcome some of the issues we have experienced when trying to get people to use EA.  We have found that there are a set of people that I refer to as “reluctant users”, and from whom you may want them to contribute to the project by:

  • Providing Information – adding new packages/elements
  • Reviewing, editing or generally providing feedback
  • Approving items in the project

Needless to say, some of these people are just not be interested, whilst some may be willing to provide this information in a document or spreadsheet.  The former is the biggest challenge whilst the second will involve potentially time consuming, error prone work in harvesting the required content. Furthermore, if I’m the person doing the work, and not gaining any real insights into the project, I really don’t feel it’s good use of my time.  Yes there are tools to help (here’s a plug for eaDocX – it can readily import information from Excel; I wrote the Excel part following years of using VBA to get Excel content into EA – and it really does help!), but although a great help wouldn’t it be better if the creator of the information was able to work directly with EA?

When trying to introduce EA into a project I am sure we have all witnessed a mixed range of responses from those who:

  • see it, understand what EA offers and just can’t wait to get started

to those who:

  • aren’t interested, don’t understand why “another tool” and certainly don’t want to have to learn a new tool, and don’t have the time and will find any excuse to avoid meetings/trainings – the worst of the “reluctant users”. And unless remaining in their job depends explicitly on using EA they won’t, and it’s yours truly who will be picking up the pieces to ensure the completeness of the project.

So with eaForms we aim to help by reducing the perceived complexity of using EA, making it easier for users to get on board by reducing barriers to entry, and importantly, with the help of the local project experts, ensure that the editing forms meet the specific needs for the project and its users.

For an example Use Case form we only included the information our BA required using simple controls to help with the data input.  Also in hiding tagged values and using dropdown lists to limit input values to a pre-defined list we made it clearer what information was needed and any choice restrictions that should be applied.

eaForms AddIn Use Case form for our Business Analyst

eaForms AddIn Use Case form for our Business Analyst

We were thinking about our reluctant user’s and wondered whether it was possible to use the same form definitions we create with eaForms, but instead of within an AddIn use them within a simple standalone client that would.  In taking this approach, we could remove the need for the user to open EA and potentially, further reduce the barriers to using EA.

To test the idea we have produced a simple prototype client (illustrated below), with minimal menu options; we only offer – open and close an EA project, edit an existing element selected from a project browser and add/delete elements using editing forms defined to meet your project needs.

eaForms prototype client with same Use Case form

eaForms prototype client with same Use Case form

Using this client the user sees a much simplified interface and no longer needs to open EA and potential be confused or intimidated by the great range of options.  Remember our aim is to get users on-board quickly, so we hope that our eaForms client will provide either the new or reluctant user with a means to be included directly in the project work within minutes.  To be clear this is not a substitute for most EA users and is certainly not a powerful feature rich client but provides a simple means to capture important information into our EA projects without the existing EA users having to convert documents (Yippee!).

With the flexibility of eaForms the element editing forms can be tailored to meet users needs by project users.  They may include simple or complex controls, richer “gadgets” and action buttons to perform project specific task plus the ability to drive consistency of data input through value selection rather than free data text.

NB: Before I continue, there will be many, including myself, who feel users need to overcome their resistance to learning some UML and get to grips with EA.  But as we all know we don’t live in an ideal world, and have to adapt. So if our client provides a means to ensure that those that should be involved with our projects are, then we must surely increase the likelihood that we will have better projects.

Now it is my turn to ask you a question. We have a very small sample set of customers and hence we are interested your views. As a reader of this post it is more than likely that you are a committed EA user, so no need for this client, you are not the target audience (although eaForms may be of interest), however you may work with people that you would like to be users.

  • Who are they? What are their roles?  What tools do they use when they should be using EA?
  • What would they need for a tool?
  • Would providing them with a simpler client help them better understand the value of EA and hopefully lead them down the path to becoming a real committed EA user? Would having a simple client help you, if only to reduce all the harvesting that you may have to do!
  • Does the concept of a simple client make sense?

These are just some of the questions we are asking ourselves, there are many more we should probably be looking at and with that in mind are keen to get your feedback on this idea.  Please add a comment to this post or send us an email at eaforms(at)

I look forward to hearing from you.

Many thanks



eaForms – using lists to access element and related information

Each EA element has a range of collections which contains information about the element or related “things”.  Just a quick look and you will see a range of collections associated with each element, for example:

  • Attributes
  • Methods
  • Connectors
  • Diagrams
  • Elements
  • EmbeddedElements
  • Requirements
  • TaggedValues
  • Files
  • Metrics
  • Realizes
  • Resources
  • Efforts
  • Risks
  • Issues
  • Tests

Depending on your role and/or stage in a project you may be interested in some or none of these bits of information.  But as a collection of relevant information it can be useful to have a view of them during your work.  To access most of these items with EA you will often need to make a menu selection.   However, as we may use some of them frequently wouldn’t it be useful if we could see them without this need for additional user input.  When developing eaForms it was our view that having visibility of the required information at the same time would be useful when adding or editing elements;   the ability to see the information at a glance plus the ability to add a new item using an action button was our vision.

So with eaForms we have provided a list control whose data source can be set to display a wide range of collections.  Furthermore, within these lists we have added the ability to select and open the related item for example with Use Cases (Actors, Pre/Post conditions), Classes(Attributes and operations) as well as requirements and other related items for which we can interpret the target item (at present we have added what we see as the useful stuff).  This allows the user to work within the context of the current opened element to view and edit the related information.

As an example, let us start with a look at a simple requirements form were we have included a list of linked items:

Simple requirements form list related items

Simple requirements form list related items

We can double click on an item in this list to open the relevant  item – in our example another requirement (we can drop down into other elements as required)

Opening a related item

Opening a related item

As a more complex example let us look at the Use Case form below – which includes linked actors, pre-/post-conditions, tagged values and linked items

Use Case example with several lists

Use Case example with several lists

To this form we can add action buttons to this form – as modified below – where we also illustrate adding on a new post condition within the current element editing context

Use case example with action button - to add a new post-condition

Use case example with action button – to add a new post-condition

Of course, what you place on your eaForms is up to you, that was the core idea behind eaForms. The ability to adapt the editing forms to match both the needs of your project and the users working on the project is key.  With eaForms you not only select the content but also define the layout and its presentation (look and feel) to meet your specific needs.  Having lists is one of those features that can help present the information in a better way for you.

I hope they provide you with the information you need.  Feel free to let us have your wish lists of additions.



More exploring scripts – running EA Scripts from your code

I promised it wouldn’t be too long before I returned to provide the results from my experiments into running EA scripts from an external application (or if you wish from an EA Add-In).  If you missed the previous post on scripting may be worth reading first so that the current post is read in context.

Moving forward within exploring scripting capabilities let me start by providing some background information I discovered that will be relevant to the task in hand with the focus on user scripts.  You will see below I have skipped stuff that I didn’t see necessary for the current experiments.

1. EA stores its scripts in t_script

When we want to run an EA script we need to know where they can be found.  If you look into the EA database, and my suggestion would be to open a local EAP file using Access, you can find a table called t_script as illustrated below.

t_script - contains a range of scripts

t_script – contains a range of scripts including user scripts

If you look through that table you see the following columns which as I interpret have the following meanings:

  • ScriptID – a unique integer
  • ScriptCategory – there are several categories with normal human readable names and some GUID looking numbers (!) which including user scripts(indicated by the category with the value 605A62F7-BCD0-4845-A8D0-7DC45B4D2E3F).  You can also see other scripts such as those used when building code
  • ScriptName – once again either a human string or a GUID looking number
  • ScriptAuthor – another GUID looking number – not sure where this points to yet.  I’ll have to add this in when I find it but didn’t seem important at the time.
  • Notes – specifies the script name, type and language e.g.”<Script Name=”myScript” Type=”Internal” Language=”VBScript”/>”
  • Script – contains the script code in plain text form for user scripts.  When necessary I’ll have to check out the use of this for other types of scripts.

2. Extracting the script

If we want to run any of the user scripts we need to read the t_scripts table and extract the required script.  The method I have used was to:

  • Read the rows from the table, filtering on script category
  • Get the script name
  • For the selected script, extract the text from the Script column

3. Checks before running scripts

INCLUDES – If you look at scripts in EA you will see that some will include other scripts (e.g. INC). If we are running scripts within EA this is not a problem provided they exist within the EA context, however as we will see below, if we are running them elsewhere we need to ensure that we include ALL the relevant code.

RUN TIME OBJECTS – when running scripts within EA use is often made of the following run time objects:

  • Repository – current EA repository
  • Maths – the Cephes maths library
  • Session – which provides functions to interact with the user through the EA UI

If you are executing your scripts in another environment then you will need to supply the relevant references if required; note that the session object is purely for use within the EA script running environment.

Running scripts from the outside

With that bit of background we are now ready to look at running an EA script under the control of our “external” application.  Why is this an issue?  Can we not just ask EA to run the script for us?  Well so far I cannot see a way to interact with the EA script engine via the automation interface.  Hence,  the solution I have used (and I believe used by many others) is to provide my own instance of the script engine, extract the relevant script code and execute.

This isn’t as difficult as it sounds, although my voyage of discovery was interesting – and as seen from various posts on the Sparx Forum and Stack Overflow shared!

Script engine

As far as I can determine EA uses the Microsoft windows scripting engine.  Which I believe is MSScriptControl – which means that VB Script and JScript scripts written for EA can be run by using this control.

To run a script, we can use an instance of this class,  set the relevant attributes and call the run or execute function. So within our application we can:

  • Create an instance of MSScriptControl e.g. myScriptControl
  • Specify the script language e.g. myScriptControl.Language = “VBScript”
  • Set the script code using the relevant text (note: this will need to be complete with any includes expanded. e.g. myScriptControl.AddCode(ScriptCodeText)
  • If required pass objects that will be available to the script using the AddObject method e.g. myScriptControl.AddObject(“myObjectName”, myObjectValue, True) adds a name/value pair and sets this as a global value
  • If required pass parameters to the script.  This is done by setting up an object array containing the relevant arguments e.g. ArgumentObjects.  Remember that the scripting languages are loosely typed so they have no explicit knowledge of typing
  • We can then run the script and for functions capture the result e.g. myResult =“myScriptName”, ArgumentObjects)

Pulling it all together

So with that background I put together a simple program to run a script.  The application provided a means to enter a script and run it.  This allowed me to verify that the mechanism worked fine without any interactions with EA.  However, I need to remember to do things link reset the scriptcontrol if I reuse it (myScriptControl.reset)!

It is also worth noting that I recently saw that there are some observed issues, for example – adding code will automatically execute code – I have only seen this issue when executing the script control within an EA Addin, it seemed to work fine when operating in a standalone program but that doesn’t mean there aren’t instances where this is not the case (the joys of software), hence I need to explore further!

But in the meantime, onto testing with EA – which involves the following steps:

  • Open an EA Repository
  • Get a list of user scripts
  • Select and run a script
  • View the result report

As it turned out I skipped writing a simple windows application as I was confident that would work, so went straight to writing a small Add-In that would perform these tasks. So no need to open the repository just the steps that followed.

My simple Add-In basically lists the available user scripts and provides a means to inspect and run the script.

Script Tester Menu

Script Tester Menu

The form that presents me with a list of scripts (as well as providing a option to refresh the list) is illustrated below.

Script tester list of scripts

Script tester addin displays a list of scripts that can be selected

The user can select a script from the list, and inspect the details:

Script Details

Details of selected script – script can be run by pressing run script button

And if they wish run the script, for example as below.

Results from running the simple script

Results from running the simple script

I am pleased to say that it presented the same result as when running the script natively within EA.

So using this approach there is a a means to run EA scripts under our control, demonstrated with this EA Add-In, and I’m confident it will work from the outside with a windows application, albeit with care regarding the objects that are being expected.

Points to note

Just to recap on the some points for running scripts using the script control.  You need to:

  • Ensure that the code provided is complete
  • Reset the script control before use
  • Pass any required object to the script – note that session is not available and if libraries are required you are responsible for ensuring that they are accessible
  • Provide any required arguments as objects – NOT typed
  • Capture the results

Nearly there or not!

If I refer back to my diagram in the last post (repeated here for reference), that illustrated all the tests I wanted to explore.

Overview of scripting scenarios to explore

Overview of scripting scenarios to explore

We have covered all cases 1 to 6 – albeit that there is ongoing work in checking some potential issues with case 6.

Case 7 – calling our Add-In from a script when working within EA

So what about the EA script control (not our own script control) calling an EA Add In. Just to be clear this is a normal EA script running within EA.  Is there a way?  Well I’m still working on this. I’ve posted and had some interesting observations which I have posted on the Sparx Forum.

This case has presented some interesting windows programming issue which has forced me to spend more time that planned looking into windows processes, but then that is the fun of exploring.

Overall for the most likely use cases all works as one would hope.  It is the edge cases that I thought I needed to explore that have raised some issues and I’ll be looking into:

  • Feedback I’ve received on how to resolve case 5
  • Unwanted code execution issues in case 6
  • Finding the correct reference for case 7

I hope to report back soon with my findings for these cases.

In the meantime, if you have some answers do join the dialogue here or on the forums.  For those happy with other scenarios I hope you have found this useful.



Accessing your favourite tool from within EA

I’m not sure if this is just me, but there are a few things that frustrate me when working within a tool such as EA.

  1. Firstly, there is often more information I want to view at the same time than is possible because I just don’t have enough screens! There is a potential solution to this.
  2. Secondly, is when I want to do a related task using a different tool, so need to switch context. This is frustrating especially when I have my head down producing stuff and I just want to press a button.  This may be unique to me but the need to switch to another tool, which is more about the need to go back to windows and select the program, open it and establish context etc

So is there a way to improve the situation by having the tools I want operate within the context of EA?  Let’s do a little exploration to check out what EA provides and see if it can help me.

1. EA Tool menu

First up, in looking at the tools menu there are shortcuts which start an external application, albeit in it’s own window but at least it is just a single click.

I think the standard installation comes pre-configured with a few tools:

  • MS Paint
  • ODBC sources
  • System information

And you can add any application to the EA tools menu.

EA tool menu - add your own tool

EA tool menu – add your own tool

To add an application you use the “Tools | Customize | Tools tab” to configure the application. You need to provide:

  • A command – the application you want to run
  • Arguments – and EA supplies a range of parameters that can be set and passed to the external application
  • Initial directory – this can be set but doesn’t appear to have any dynamic options.

As an example I use IrfanView for doing a lot of image manipulations. So I can add a new tool item to support my access to this tool within my working context.

Configure EA tool menu item to open IrfanView with clipboard

Configure EA tool menu item to open IrfanView with clipboard

You see I have set the application, however there are no parameters available from EA that make sense within the context of the IrfanView arguments. However, the reason I want to open IrfanView from within EA is usually to manipulate an image, hence if I assume that I have saved my desired image to the clipboard with EA (ctrl+B) and then add an IfranView argument “/clippaste” it will open with the current clipboard contents all ready for editing.

Although this is no major advance it does improve productivity when producing help documentation!

2. Using the EA parameters

So what applications could benefit from the arguments that are available from EA.  I needed to think about this as it wasn’t clear what applications other than something specifically written to work with EA would attribute meaning to the arguments – initial and final thought was that this is only useful for applications you write.  I am sure there are some really good examples, however none come to mind so I’ll just illustrate a simple application to demonstrate the use.

Below is the code for a simple console application which takes EA arguments, opens an instance of EA with the project file name provided and prints the name of the current package.

==== Code starts =====

class Program
public static void Main(string[] args)
// the arguments from EA will be the project name – which may have spaces so need to be wrapped in “‘s
// command line input
// arg 1 – EA project full path filename ($f)
// arg 2 – name of calling application ($F)
// arg 3 – current package ID ($p)
// arg 4 – current package GUID ($P)
// arg 5 – ID of associated diagram  ($d)
// arg 6 – GUID for associated diagram ($D)
// arg 7 – CSV of ID’s for all selected elements in current diagram ($e)
// arg 8 – CSV of GUID’s for all selected elements in current diagram ($E)

Console.WriteLine(“Number of command line parameters = {0}”, args.Length);
foreach( string a in args)
//            Console.Write(“Press any key to continue . . . “);
//            Console.ReadKey(true);

// open EA

Console.WriteLine(“\r\nProject file = ” + args[0]);
Console.WriteLine(“Openning EA, please be patient!”);
EA.Repository EAR = new EA.RepositoryClass();
EAR.OpenFile(args[0]); // open EA

// now just use one of the arguments to do some processing
int packID = Convert.ToInt32(args[2]);
if (packID != 0)
Console.WriteLine(“Package ID = {0}”, packID);
EA.Package p = EAR.GetPackageByID(packID);
Console.WriteLine(“Name of current package = {0}”, p.Name);
Console.Write(“Press any key to continue and close EA “);

===== code ends =====

So with the application written I use the EA customise to add my application to the tools menu.

EA Console Tool - example of an application that can handle EA arguments

EA Console Tool – example of an application that can handle EA arguments

And when run from my tools menu the output is as shown below.

Example output from the EA Console Tool test application

Example output from the EA Console Tool test application

As such this is an example that doesn’t do a lot other than illustrated that the mechanism works.  It is possible to call an external application and pass it information within the current user context – I repeat the current user context – as this is where the value will come.

A brief recap

In looking at accessing external tools I have reviewed how to existing tools as well as a custom tool.

In the case of the existing 3rd party tools, unless they are written specifically for EA, it is unlikely they can do much, although the ability to open my graphics application with the clipboard presented is really useful, and I am sure with some creativity there are some excellent use cases.

In the case that we have a custom application then we have a greater degree of freedom limited only by the application.  It provides the user with the ability to initiate some action within their current context.  I know I need to think about potentially other applications for this use case.


But can we bring our application closer?

In both these instances the access to out application is a manual process.  The user initiates the application.

In our custom application example we saw how the information provided to open a new instance of EA can be used to perform some operations.  Of course, our application could be used stand alone, i.e. without being called by EA, but in that instance we wouldn’t have the contextual information which was my starting point.

One downside is that our application runs as a separate entity and to access EA requires us to create a new instance, with the inherent start up time lag.  So is there a better way of adding functionality to EA as well as integrating with 3rd party tools.  The simple answer is yes – EA provides an AddIn framework which can address the shortfalls of working at “arms length” and I’ll come back to that in a future post.

In the meantime, I hope that this post has been interesting and at least made you think about how you use other tools with EA.  If you have any specific use cases that haven’t been covered please feel free to share your requests, ideas..



TeamPulse agile project management

Are you using Teleriks TeamPulse agile project management tool and EA?

Well, until recently I wasn’t aware of TeamPulse and I am sure there are many more tools out there that I’ve never heard of (and could benefit from!!).  It was through a request for help that I became aware of TeamPulse. As a server based system ,TeamPulse provides the features that a project manager needs to manage the full scope of any agile project.

The initial requirement from the user was for a means to seed their TeamPulse project with information derived from their initial analysis of a project which they performed in EA.

Although this could be done manually,  and if this were a one-off then why do anything else?! However, when the full scope of this simple requirement is considered, the need for automation is obvious.  For instance, you may wish to:

  • output single items and/or whole package trees – so this could end up being a lot of information
  • output linked items, so the output of a single item may result in the export of many items – even more information and what’s more, the need to verify all the relationships are handled; this can be a bit of an auditing minefield if done manually!!
  • output attachments as well as linked diagrams – in what format etc
  • perform subsequent exports adding new items whilst only making updates to items that have previously been exported and avoid duplication

All whilst:

  • avoiding potentially time consuming manual process


  • minimising the risk of making errors in the process.

Having produced quite a few EA AddIns the export of information is usually not a problem provided there is a well documented API.  And, if there is a requirement to maintain future relationship or awareness of EA elements, a place to store information (usually the EA GUID) in the target tool.  With the excellent support received from Telerik I was able to gain access to the relevant information to address these issues, and when there were questions regarding some of the detail very help support.


  • provides a suitable REST based API, and we were able to wrap this in a API that provided all the functionality we needed within our AddIn
  • supports additional custom fields to be added to its workitems and we were able to use this to store the GUID of our related EA element. This meant we could match EA elements with TeamPulse items.

So with the relevant capabilities in place we have been able to produce an EA AddIn (eaTP) that addresses the basic use case to support the export of information from EA to TeamPulse throughout the life of the project.

Export options

Example of eaTP export options

This means that EA users can continue to do their work in EA, whilst providing the project manager with the information they need to perform their tasks. And although the focus of eaTP is very much on exporting the information into TeamPulse, it also provides a means to inspect individual TeamPulse items within EA so the EA user can have a quick look at information that may be relevant to their work.

Work item information

Example work item information as seen in EA

So if you are a TeamPulse user (or looking for a project management system to work alongside EA then perhaps TeamPulse is a tool to review) and using EA you may wish to try eaTP.  If why not give eaTP a try and importantly provide us with feedback on its functionality and usefulness.

For  more information on eaTP click here

I’m off back to do some more exploring of EA – but just want to point out that there was a really interesting webinar this morning from Sparx on “Creating Charts in Enterprise Architect to Aid Decision Making ” – if you missed this event keep an eye out on the webinar section of Sparx as I’m sure they will make it available soon.


Launch of eaForms @ EA Workplace

When I looked at my last post I was surprised that it was so long ago – time flies.  During the summer months I’ve been focused on some very important topics:

  1. Finishing off our eaForms product, getting it ready for users and ensuring that there was a place from which users could buy it (see later)
  2. The wedding of my youngest daughter, whose grand plan involved me in making lots of stuff – all great fun but once again time consuming

Plus having a few days off over what was a very successful summer.

So with that done I’m pleased to let you know that eaForms has been launched and is ready for download from EA Workplace

I’m using EA Workplace to do the stuff that I don’t have the time, energies or skills to do myself. The guys behind EA Workplace (Ability Engineering) have a lot of experience with EA and producing their own EA related products.  And in their own words they saw the need for a “one-stop shop for all Sparx Enterprise Architect tools, services and talent” and in doing this provide a marketplace for products such as my eaForms AddIn.

Whether a developer or user it’s probably worth checking out their site both to find out more about my products, such as eaForms, as well as the other resources they list.

So with eaForms launch – what next?

Well I hope many of you visit EA Workplace and download eaForms, have a play, and even if you don’t purchase, provide us with feedback. As with all products it starts from an idea which a few people discuss, requirements are defined and a product developed.  Users then have a look and decide that it looks interesting but it doesn’t quite do what they need – well if that’s you please make sure you tell us; you never know what features we might add.

We’ve got some ideas for more features and related products but there is nothing like hearing from you, not least as I’ve no firm plans yet.

Other developments

I’ve also been developing some other AddIns which I plan on making available as early access products – keep an eye on our Early Access Site where we provide information and links through to product sites as they develop.  For example:

  • eaTP ( EA To Teampulse)
  • eaProject (EA and MS project)

Hopefully with not too many other distractions these should both appear during September, but don’t hold me to that!

So off to get some of this done and don’t forget to check out EA workplace


Adding a Learning Centre to your MDG

A little warning relating to V11:

The information in this post relates was produced using EA V10 – as can be seen from the posts on the EA forum Sparx have changed the way Learning Centers operate in V11 which means that anything produced for V10 and, I assume before, will not work.  I hope to produce an update in due course.

Start of original post

This is something that I have had on my list of things to do for a long time and was finally sparked into action by a question on the sparx forum.  However, my expectation of going to the user guide and following instructions didn’t quite work.

As I will detail below I couldn’t have created an MDG learning center without looking in the XML files (and at times editing them), however with the information contained in this post I hope you don’t have to do much(if any).  In fact, it’s not that the documentation that Sparx provide that is wrong but the little details that are useful are not included, and I suspect some of my findings could be considered a bug!

Getting started

I will assume that you are happy in creating a simple MDG (in addition to the user guide, and the excellent wizard in EA, there are several tutorials around).  For my experiment I used the EA profile wizard ( add new model using wizard and select MDG Technology Builder | Basic Template) to create a simple profile for the elements and a toolbox.

I then created the profiles for the element and toolbox. Then be following the user guide instructions created the MDG (Tools | Generate MDG Technology File…)

Do this first just to check you create a working MDG.  Remember to import the MDG file (Tools | MDG Technology Import) – you can also set the path in (Settings | MDG Technologies | Advanced) which allows you to specify a location where your MDG will be located (great when testing).

And of course when you reload EA (you must if changes are made to your MDG) – also remember to enable in Settings | MDG Technologies”

Assuming you used the default “Animal” example and you select the relevant toolbox you will see:

Default example MDG toolbox

Default example MDG toolbox

Creating the learning center profile

So we have a working MDG and now want to add the learning pages.

This simplest way I’ve found to add a profile is to use the profile toolbox.

So to create your learning center profile start by using the profile helpers and add a profile to your top-level MDG technology diagram.  In doing this select Automatically add new diagram making it a Class diagram as ell as select open new diagram as we are about to use it.

Adding your new profile

Adding your new profile

Then on your new diagram (open if not done automatically) used the profile toolbox to Add Toolbox Page – you will be asked to give your toolbox a meaningful name (this is the name that will appear in the learning center)

Use the Profile Helper to add toolbox page

Use the Profile Helper to add toolbox page

Then on your new class diagram “My Help center” if you have followed my example you will see

My new Toolbox profile

My new Toolbox profile

Before adding any content I did a check in creating this new profile and adding/recreating the MDG.  Ensure that your load this MDG if not done via the advance path method and restart EA.  If all has gone to plan then “My Help Center” is in the list – it was as shown below.

My Help Center in the list

My Help Center in the list

We have the some success.

Some Gotchas

If it all worked then you may skip to the next section, however if you haven’t succeeded in creating your learning center then here are a few gotchas I found.

1. If the profile file you created doesn’t appear in the list of available profiles when creating the MDG!!

I have found that in some instances when you save UML profile  the XML file created generate the correct headers.

In a “good” profile file lines 1 and 2 are as shown below.

A Good UML Profile

A Good UML Profile

In an example “bad” profile I have found then generated as below:

A Bad UML Profile

A Bad UML Profile

where you can see that lines 1 and 2 differ both the encoding and profiletype.

When testing I edited the generated XML profile (Cut and paste lines 1/2 from a good file) and it works.  What is strange is that I haven’t found a pattern to this AND even worse once corrected subsequent re-generation seems fine!

2. Incorrect naming 

I have noticed in some instances that the name of the profile in the XML file includes the stereotype – as shown below.  As all of the name appears this is not required so should be removed

Incorrect naming

Icorrect naming

In both this and the previous case I’m not sure if I have done anything when saving the profile that could cause these error generation but unclear to me.  At least the workarounds weren’t too difficult to find.

Defining the content

Hopefully we are over the first hurdles and I can assume that we have a working learning center profile.  We now need to add the content that is appropriate to our MDG.

Before starting a word of warning – ensure that any of the text in your definitions does not have any trailing spaces, tabs etc – if they do you may see some funnies – I certainly fell foal of this!

General mechanism for adding content

EA uses the attributes of the “learning center” profile stereotype to define the content sources that are available as illustrated below:

Content defined by attributes

Content defined by attributes

The Name of the attribute is the command including the content specific parameter that will be executed.

The Initial value defines the text that is displayed in the Learning Center menu.

There are a rich set of commands available to define different types of content that could be useful in helping your users:

  • EASystem::ShowDoc(folder\filename) – to display a text file
  • EASystem::ShowURL(<URL>) – to display a web page in the EA Web Browser
  • EASystem::ShowHelp(<Help Topic filename>) – to access content in the EA help file
  • EASystem::ShowMovie(<Video URL>) – to display a video clip
  • EASystem::ShowView(<Command>) – to open the specified EA window
  • EASystem::MenuCmd(<Command name>) – to execute an EA menu command

So taking each of these in turn we will illustrate examples:

Text documents

To display a text file, which could include RTF and possibly other file types that EA can handle.

Content defined by attributes

Add in a text file

The key point to remember with accessing a text document is that EA looks for the document relative to the EA installation directory (e.g. C:\Program Files (x86)\Sparx Systems\EA) – so if you are using an installer you probably need to be careful with this to ensure that the files get placed in the correct location.  For testing and if in doubt you can use my EA Installation Inspector which lists the EA install path.

Link to Web Page

EA will display a web page in its Web Browser using the command – EASystem::ShowURL(<URL>) e.g. EASystem::ShowURL(

Adding URL content

Adding URL content – linking to a web page in EA’s Web Browser

Access EA Help page

EA will display the specified help page.  The one issue with this is finding the relevant page name.

To find out the page name for a specific help page:

  • Open help
  • Select the required page in the help file
  • On the right click (context menu) and open the page properties
  • Look at the address and go to the end of the line (much of the page name is not displayed) and get the page name “****.htm”, as illustrated below.
Getting the help file page name

Getting the help file page name

Then use the command EASystem::ShowHelp(url)  with the specified page name as the command parameter and a suitable menu name as the Initial Value.

Adding a help page reference

Adding a help page reference

Link to a movie

EA uses the command EASystem::ShowMovie(<Video URL>)  to access a movie

In my case I tested accessing one of my YouTube tutorials (

Adding a movie link

Adding a movie link

EA Built-In Learning Center Commands

EA has a set of Built-In learning center commands that provide support either:

  • Displaying information in a window
  • Invoking an EA function

Adding a show View menu item

Using the command EASystem::ShowView(<Command>)  you can display a wide range of information. In my example I selected the view element list e.g. EASystem::ShowView(ViewElementList)

Add menu to view information in a display window

Add menu to view information in a display window

Adding a menu command item

Using the command EASystem::MenuCmd(<Command name>)  we can invoke any of the functions displayed in the Built-In learning center commands list.  In  my example I chose to Add a new element e.g. EASystem::MenuCmd(AddElement)

Add menu item to invoke Add New Element function

Add menu item to invoke Add New Element function

With that all done I saved the modified profile and recreated my MDG technology (ensure you import if needed).

On restarting EA my learning center menu now contains the menu items defined above and displayed below:

My final learning center menu

My final learning center menu

Each command type has a different icon.

I have tested each functions covered so far and it works fine.

There is also a command to execute a function provided by an Add-In (<Add-In>::<Function()>) – I’ll started to check and it appears in my menus but so far it’s not talking to my add-in so more to check!!  If I get around to it and find the solution I’ll provide an example.

In the meantime I hope that results of my little experiment are useful and you succeed if you are tempted to add a learning center to your MDG.

Any questions / feedback welcome.