Author Archives: adrianlincoln

eaForms Community Edition – alpha release

eaForms(tm) has been around for some time, and although not a major commercial success in its own right, it has proved useful to me and others.  For budding AddIn developers my experience is that you only make money from AddIns when somebody else pays for the development(!), although they can be really useful in supporting your projects.

Since the demand for new features has stopped, we haven’t been doing much development, and have no plans for further development on the commercial product.  However, I felt that it may be useful to make available a version that may be of use to a wider audience – hence this Community Edition of eaForms.

This version is similar to the existing commercial product, a few functions have been removed, there are significant changes in the Form Designers’ user interface, and there are some underlying changes which provide greater flexibility when making enhancements and using some of the components in isolation.  And most importantly, we have removed all license menus/options have been removed – it’s free to download and use!

Interested? – you can download an early access version on the eaForms(TM) Community Edition download page. This is not a production release but provided to allow users to test and gives us some feedback; keep an eye on the download page for further updates.

Other changes

For those customers familiar with the existing product the following changes should be noted:

  • There is now only a single version with no difference between the designer and user versions; just an additional menu option
  • The format of the Form Definition files has changed to make it easier to add new control types – we have produced a Form Definition convertor to help.
  • Editing of controls has moved from individual dialogs to a common approach using property grids dialogs
  • Some menu options have been removed, specifically those where we no longer see a need for the function (please let us know if there is something you really need!)

One of the areas we are keen to get feedback relates to the multiple windows i.e. the FormDesigner, control properties window, trace window; at present they exist as windows forms outside of EA but would it be preferred if one or all were EA tabs/addin windows?

Open source / toolkit?

When deciding to release this version of eaForms I thought about how much I have learnt from  its development.  There were odds and ends with EA, but more significant and challenging was Windows; I’ve always found that writing AddIns has always been more about Windows programming than EA!!

With the learnings in mind I am toying with the idea of making this version (or parts) availanle as open source.  This would allow me to share my learnings, and it may be that others would wish to enhance the product or use some its components in their work.  However, I see little point in doing this unless there is real interest as it will no doubt involve me with some work and potentially lots of questions!

What next?

Give it a go and provide me with your feedback so that I can review options for the next step.

In the meantime, have fun, and if your project requires EA support drop me an email!

Adrian

 

 

Advertisements

Non-admin installation of AddIns

Further to a query in the EA forum on how to install an EA addin without admin rights here is an outline of the way I do it – it is probably not perfect and for somebody with greater knowledge than me about windows installers there are probably some slicker or better ways.  However, it has been working reliably with some of our customers for some time.

Create an installer project

Our installers are created using Wix. Hence, the steps involved are to:

  1. Create a wix project adding the wxs file to the project.  We use a graphical UI so the project will need to include references to the relevant Wix libraries (WixUIExtension, WixUtilExtension, WixNetFxExtension)
  2. Create a wxs file defining the installer requirements; an example wxs file is provided below
  3. You may optionally use heat to havest information from projects to be included in the installation (the example wxs file provides an illustration)

Points to note

It is important to note that a non-admin installation will install the addin for the current user only.  Registry entries are placed in the current user area (HKCU) and not the local machine (HKLM) need to make it generally available.

When running the installer, for somebody without admin rights, the target directory must be set to a location in current user area where they have write access.

When doing an update of a non-admin installation we recommend that your do an uninstall AND then ensure that you delete any installing dll’s as we have seen instances where the sequent install has not updated dll’s!  Perhaps an installer expert will explain why to me someday!

I wouldn’t say that sorting our installers was all plain sailing.  A useful tool that is supplied with windows SDK is orca – a tool that allows you to inspect install files (msi).  Really useful for checking information.  You can edit installers files with orca but I wouldn’t recommend it but solve issues at source, otherwise I feel you could get into a real mess.

I hope this short post provides sufficient information and you can get you non-admin installer working.

Adrian


Example WXS file

The example WXS file below will need to be adapted to your requirements by setting:

  • GUIDs for the relevant items.
  • File locations for project files
  • Files for images and any included files

<?xml version=”1.0″ encoding=”UTF-8″?>
<Wix xmlns=”http://schemas.microsoft.com/wix/2006/wi”&gt;

<!– Set as required –>
<?define MajorVersion=”0″ ?>
<?define MinorVersion=”1″ ?>
<?define BuildVersion=”2″ ?>
<?define Revision=”3″ ?>

<!– Full version number to display –>
<?define VersionNumber=”$(var.MajorVersion).$(var.MinorVersion).$(var.BuildVersion).$(var.Revision)” ?>
<!–
Upgrade code HAS to be the same for all updates.
Once you’ve chosen it don’t change it.
–>
<?define UpgradeCode=”YOUR UPGRADE GUID” ?>
<!–
Path to the resources directory. resources don’t really need to be included
in the project structure but I like to include them for for clarity
–>
<?define ResourcesDir=”$(var.ProjectDir)\Resources” ?>
<!–
The name of your application exe file. This will be used to kill the process when updating
and creating the desktop shortcut
–>
<?define ExeProcessName=”SuperForm.MainApp.exe” ?>
<!– defines include the version number –>
<Product Id=”*”
Name=”!(loc.ProductName) $(var.VersionNumber)”
Language=”!(loc.LANG)”
Version=”$(var.VersionNumber)”
Manufacturer=”!(loc.ManufacturerName)”
UpgradeCode=”$(var.UpgradeCode)”>
<!– added Install scope to install for the machine rather than per user –>
<Package Keywords=”Installer”
InstallerVersion=”300″
Description =”Your product name”
Compressed=”yes”
InstallScope =”perUser”/>
<Media Id=”1″ Cabinet=”media1.cab” EmbedCab=”yes” />
<UIRef Id=”WixUI_FeatureTree”/>
<UI>
<!–  These dialog references are needed for CloseApplication above to work correctly    –>
<DialogRef Id=”FilesInUse” />
<DialogRef Id=”MsiRMFilesInUse” />
</UI>

<!– Set the icon to show next to the program name in Add/Remove programs –>
<!– need to set $(var.????.ProjectDir) in lines below to reflect the your source project directory e.g. $(var.myaddin.ProjectDir) –>
<!– You don’t have to have icons or background images, or a licence agreement – these are optional so read the Wix documentation –>
<!– also note that the images MUST BE of an exact size otherwise they may not be clear –>
<!– banner.bmp must be 493 x 58 –>
<!– backgroud.bmp must be 493 x 312 –>
<Icon Id=”AppIcon.ico” SourceFile=”$(var.????.ProjectDir)\images\EX.ico” />
<Property Id=”ARPPRODUCTICON” Value=”AppIcon.ico” />
<WixVariable Id=”WixUIBannerBmp” Value=”$(var.????.ProjectDir)\Images\InstallBanner.bmp”/>
<WixVariable Id=”WixUIDialogBmp” Value=”$(var.????.ProjectDir)\Images\InstallBackground.bmp”/>
<WixVariable Id=”WixUILicenseRtf” Value=”$(var.????.ProjectDir)\Legal\Our Licence Agreement.rtf”/>
<CustomAction Id=’NoDowngrade’ Error=’A later version of [ProductName] is already installed.’ />
<!–     Set the default install location to the value of INSTALLLOCATION (usually c:\Program Files\YourProductName)  –>
<Property Id=”WIXUI_INSTALLDIR” Value=”INSTALLLOCATION” />
<!– Feature to build the installer file –>
<Directory Id=”TARGETDIR” Name=”SourceDir”>
<Directory Id=”ProgramFilesFolder”>
<Directory Id=”INSTALLLOCATION” Name=”!(loc.ProductName)”>
<!– this component defines the files that are to be installed DLL’s, help file and the sample eafd –>
<Component Id=”YOURDLLs” Guid=”A COMPONENT GUID” KeyPath=”yes”>
<File Id=”Interop.EA.dll” Source=”$(var.????.TargetDir)/Interop.EA.dll” Vital=”yes”  />
<!– ADD entries for all DLL’s and other files that need to be installed –>
</Component>
</Directory>
</Directory>

<!– this section creates the keys for the add in –>
<!– YOURCOMPANY and YOURPRODUCT are defined by you are are where the installer will place the keys –>
<Directory Id=”Keys”>
<Component Id=”ProgramKeys”  Guid=”ANOTHER COMPONENT GUID”>
<RegistryKey Root=”HKCU” Key=”Software\YOURCOMPANY\YOURPRODUCT”>
<RegistryValue Type=”string” Value=”Default Value” />
<RegistryValue Type=’string’ Name=’ProgramDir’ Value='[INSTALLLOCATION]’ KeyPath =”yes”/>
</RegistryKey>

<!– ADDINNAME – is a key that will be created in the registry, which EA will check on load. –>
<!– ASSEMBLY.CLASS – is the class that EA will attempt to load so needs to be registered–>
<RegistryKey Root=”HKCU” Key=”Software\Sparx Systems\EAAddins\ADDINNAME” ForceCreateOnInstall=”yes” ForceDeleteOnUninstall=”yes”>
<RegistryValue Type=”string” Value=”ASSEMBLY.CLASS”/>
</RegistryKey>
<!– when registering the class you want the keys to be placed in somewhere meaningful – hence use a string that you can find e.g. YourADDINNAME –>
<RegistryKey Root=”HKCU” Key=”Software\Microsoft\Active Setup\Installed Components\YourADDINNAME”  ForceCreateOnInstall=”yes” ForceDeleteOnUninstall=”yes”>
<RegistryValue Type=”string” Value=”YOUR Addin” />
<RegistryValue Type=”string” Name=”Version” Value=”1″ />
<RegistryValue Type=”string” Name=”StubPath”
Value=’reg add “HKCU\Software\Sparx Systems\EAAddins\ADDINNAME” /ve /d ASSEMBLY.CLASS /t REG_SZ /f’ />
</RegistryKey>

</Component>
</Directory>
</Directory>

<!– we define the features which pull in the components above –>

<!– optional you can harvest files from the project using heat – if you wish to use this method check the Heat documentation for details of parameters.
“C:\Program Files (x86)\WiX Toolset v3.10\bin\heat.exe” file “$(SolutionDir)addinname\bin\$(Platform)\$(Configuration)\MainAddin.DLL” -v -dr INSTALLLOCATION -srd -gg -g1 -cg HARVESTED_DLLS_reference -suid -var “var.addinprojectdirectory.TargetDir”  -out “$(ProjectDir)HARVESTED_DLLS_reference.dll.wxs”
–>

<Feature Id=”Complete”
Title=”AddIn setup”
Level=”1″ ConfigurableDirectory=”INSTALLLOCATION” TypicalDefault=”install”
Description=”your addin description” AllowAdvertise =”yes” >

<!– add this line (or multiple lines if you are havesting multiple projects) otherwise leave out –>
<ComponentGroupRef Id=”HARVESTED_DLLS_reference”/>
<!– these are the components define above which will be included in your installation –>
<ComponentRef Id=”YOURDLLs”/>
<ComponentRef Id=”ProgramKeys”/>
</Feature>
</Product>
</Wix>


 

Working with multiple EA elements at the same time

Ever been frustrated when trying to edit an element and wanting to refer to information in other elements or packages?   You may need to close the current element, open another to capture the information you need and then go back to the element you were working on trying to remember the detail, only to repeat the same process a few minutes later.

This was a problem I have often encountered, for example when cross checking requirements and wanting to read the information from multiple items at the same time.

One solution is to output the information into a spreadsheet (using eaXL of course) then reimport the changes or into a word document (eaDocX)  which you can check as you make your amendments.  But all that takes time, and it may be that you still need to refer back to the model.  And as the model changes you may need to repeat the process to ensure that you have the latest information.  Don’t get me wrong these approaches work, and I find them particularly useful when needing to cross check and review information  before publishing documents.

So rather than remain frustrated,  I came up with a solution extending eaForms so that it could present element information within an EA tab.  The benefit of this is the ability to have multiple tabs and hence provide access to multiple elements at the same time.  If you look at the screen shot below you will see multiple tabs each representing an element or report.

eaForms Tab presentation - can display one or more elements as EA tab

eaForms Tab presentation can display one or more elements as EA tab

Furthermore, as you can undock EA tabs you can view mutliple tabs at the same time and as screen(s) permit spread them out.  Below is a screen shot showing 2 elements, one of which is an undocked tab; in practice you can distribute tabs across multiple screens.

Using multiple tabs - working with tasks and linking to requirements, and working on the requirement at the same time

Using multiple tabs – working with tasks and linking to requirements, and working on the requirement at the same time

And another example when completing use cases:

Example of use case form - where all information for prodject is input - together with editing a requirement

Example of use case form – where all information for prodject is input – together with editing a requirement

A simple idea using eaForms within EAs flexible framework that removes one little frustration.

One use I have is when planning projects and needing to ensure that I have linked relevant items.  For example, when checking tasks and their dependencies I use the Related Element Control, but need to check the detail of individual elements and diagrams to ensure all is covered.  There is a similar job when checking progress to ensure that everything is covered!BTW: I do use EA’s project management tools as well to manage allocation of work and progress, however they don’t offer the visibility I need to ensure all is captured in the plan!

I am sure you could think of other examples where information from different places is needed at the same time.  As eaForms evolves we will dsicover other use cases that we need to address; it’s still early days so we welcome your feedback.

Does eaForms have a use in your work making it easier to get the job done?

In the meantime, go to eaWorkplace to download your eaForms update or a eaForms trial version if eaForms is new to you.

Adrian

 

 

All in one place

If you picked up on a news item on the community site last week you may have read the referenced article.  In this article I picked up on a key point and I quote:

“Enterprise Architect was developed with several key design rules in order for project teams to be able to use a single platform …”

Now coincidentally on the Sparx forum  Geert Bellekens made a comment

“Over the years I’ve come to the conviction that EA is the only application a Sparx Systems employee is allowed to have installed”

Now I’ve always been keen on having information in a single place with a “single version of the truth” – a phrase I have pinched from one of my friends , so that “…every stakeholder… needs access to the central information base…”.  Hence, thinking about the scenario that Sparx may well use a single platform to do all their product development I thought this a concept worth checking.  Before starting it is worth noting they have used the word platform, not a single tool since this would be impossible as there needs to be compilers, linkers etc, but a platform, a single workspace, that is use to do all the work –  “… negating information flow blockages…”.
So let’s think about the steps involved in our hypothetical simple product development.  What does EA provide and more importantly what is missing:

Concept
These could be anything, notes, pictures, links.  I tend to favour using a text editor and mind-maps for this phase.  Mindmap are supported within EA but the diagrams are not that different from other EA diagrams, so although they benefit from a familiar interface they are a bit clunky compared to other products (e.g. Mindmanager, Freemind and my current favourite Simplemind – as it works on my iPad), especially when wanting drop research items – links, pictures.  Although it can be done there are more steps involved in the process and for me at this stage the number of steps is a key factor in any tool design as you could be trying to capture lots of random ideas quickly

Design and analysis
EA’s core functions – as far as I know it’s well supported and it covers my needs.  So not sure I need to add anything more.

Code
The ability to define classes and generate the stubs with initial code works fine but is very manual.  For a developer who started life with paper tape and cards each change, though welcome can take some getting used to, and compared with available IDE’s such as Visual Studio, Sharp Develop, eclipse or Android Studio EA there is a clear difference – a step backwards or is that just my configuration.  However, if it can enforce a discipline to focus on the class rather than the code this can only be good in trying to reduce design errors.

When you want to compile the code unless you use an IDE with an integration MDG you will have to write the project and make files manually – not for the faint hearted (potential for a wizard?)  Writing these files manually can help the developers truly understand what they include in their applications rather than delegating the task to a tool (and indirectly somebody else’s).  Also worth noting that as the source files do not reside in EA it does mean that knowledge, although accessible providing you don’t move your code, resides outside of the tool!

Debug
Within EA you can debug your code with many of the features I use within VS, albeit not as neat, however for me there is one major feature missing – “edit and continue”. It can save so much time; the ability to resolve simple mistakes as well as allowing temporary changes to code, really useful when trying to work out how an API really works.

Testing
An area I haven’t used greatly, sorry I’m still wedded to spreadsheets and my clients often have their own tools, such as HP QC, that must be used. So I can’t truly comment on testing using EA, although I observe that within tests their appears to be a lack of any history (unlike changes, issues, etc.).  I think the ability to have information about historic problem areas is really useful.

Deploy
I see no direct support to create/manage installer projects within EA.  Yes you can have a class with an associated file, and you can edit <F12> the content; there is even a nice navigator for the XML. And whereas EA MDG will import a code project I haven’t seen it import any setup projects. So you’re on your own.

Maintenance
A key part of any product is post deployment.  The issues that arise, the support calls, new requirements, etc. this is an area where having the information in one place is a real win.  The challenge is having the systems in place to ensure the information is captured, and for me this really means that all involved need to use EA.  This is a real challenge as it could mean changing well established processes; not the easiest thing to do. I remember some statistics that state the maintenance of software maintenance accounts for 80% of the cost – so there may well be an argument to consider this further but you’d need to be a good politician trying to do this in a large organisation.  BTW: I’d be interested the Sparx internal process for this work.

Project management
I have been very sceptical in previous posts about the project management within EA not least as there are different types of task – task elements, element tasks, project tasks.  I find this both confusing and unnecessary – a task is a task, yes there are different types of tasks, but at least can we access all tasks in a common manner! However, I have persevered, not least to ensure the key information remains in a single repository.

Recently I have been working on a project where we have made good use of the project management features – keeping track of work across several delivery teams – and it has worked well. But having to manually check for dependencies between items on Gantt charts, overloaded resources and critical paths is error prone and time consuming.  It would be really useful and time saving to have a few of the standard features from traditional project management tools, not least to highlight the issue if not correct them.  It doesn’t need an all singing and dancing feature set – in fact adding items such as self levelling could risks the PM not looking at planning in enough the detail.  I’ve been tempted to write an AddIn to resolve these issues, but as the items are so near the core of EA it wouldn’t make sense.  I’d need to duplicate some diagrams and, in any case, the time and effort may not be justified as Sparx may simply add their own code to make mine redundant!

Team working

A great benefit of EA is the ability to work on the same repository, albeit in a controlled manner to avoid conflicts. But access to all the information with the ability to link to items as required is a real plus.

If we look at team working we cannot ignore the fact that EA include team review tools, model mail or calendar but in my years of using EA and talking to other EA users I haven’t met anybody using them.   The idea of keeping information in a central place makes sense and I have tried in the past but people are so wedded to exchange for mail / calendar functions it just wasn’t going to happen. However, what I find useful are the Element discussions to capture notes, usually from emails or snippets from documents that could be useful, but without contaminating the element description.

Documentation
In the beginning I used EA’s tools to generate documents, but my use has reduced to a few of the standard reports. On occasion I use the HTML reports as they can be a really useful way of sharing information without viewers needing to know about a new tool.

For rtf documents the need to adapt templates, especially when needing to modify for different customers was(is) very time consuming.  I guess that if you are on the inside and have a standard set of rtf templates then the EA approach works.  However, if you are on the outside or constantly needing to produce different types of documents and/or needing to adopt customer defined formats then once I had eaDocX there was no contest.  I use (and eaXL of course) extensively with the great advantage I can take a customer document as a template, simply place pointers to the require packages and press generate – a few minutes work without much to do.  Sparx recently introduced their own office MDG, however I haven’t had the opportunity to test this yet.

What else?

I think that covers the basic items in the product lifecycle and yes I am sure there are other items that could be added, but my aim was to have a quick review to check if the work could be done within EA.  I guess the answer is probably, but is it a complete Design & Build Platform? I’m not convinced, it’s still just a bit too hard, and if I say that as somebody who is comfortable working under the hood I’m sure I can see why it’s a challenge for others used to dealing with high level tools.  That’s doesn’t say there isn’t potential but ..

I guess Sparx have developed a product that supports their own development process perfectly, and as a single product company some of the issues such as generating corporate documentation, make files and installers plus working with a wider diverse organisation is really not a big issue for them.

EA is a great product, otherwise why would I still be using it after 13 years, and has real value if it is to be the single platform – I love the idea of a single workspace.  And as our world evolves to a dual desktop – cloud solution the ability to interact with a phone, iPad or my monster development system in a consistent manner with automatic on/off-line modes taken care of is attractive.  However, I am not representative of users, most of whom use a small set of office based tools on meagre laptops with well established processes that cannot be changed quickly if at all; what’s the incentive? what’s the risk? could it happen by stealth?

I am sure with time EA could be enhanced to address the needs of this wider team, no mean feat, or perhaps, as voiced on the forum by existing users, EA should remain focused on being a UML design tool where it already does an excellent job.

Summary

In looking at using EA as a single platform I know that the comments have really focused on what’s missing – I suspect that is inevitable as it’s easy to notice these areas. I also realise that in writing this I may not be aware of some features of EA and I’m still learning.

The more your learn the more you realise how little you know, and how much more there is to learn.

So it could be that some of my conclusions are not completely accurate but do go EXploreEA for yourselves – and let me know.

Adrian

Global replace leads to EA Installation Inspector V2

For the first time in so many years of using EA I had the need to do a global text search and replace – one of my clients wanted to rename something!  Now I knew that EA did not provide anything as standard, however a quick look on the sparx community site to find an addin from Helmut Ortmann that does just want I needed – ho_Replace.  I was set and my task was done within minutes – thank you Helmut.

However, as you can probably guess it didn’t stop there.  As reading on the download page there was a comment regarding a problem with installing the tool.  Although I had installed without a problem I thought I’d run my Installation Inspector to check the entries only to discover it wasn’t listed. So how does EA know about it?

I quickly discovered that EA not only looks for AddIns declared in HKCU\Software\Sparx Systems\EAAddins, but also in HKLM\Software\Wow6434Node\Sparx Systems\Addins, a location my tester wasn’t checking.  So to help those looking for these extra AddIns I’ve modified the code, which now checks both HKCU and HLKM locations.

EA Installation Inspector V2 Screenshot

EA Installation Inspector V2 Screenshot

Also, as I often find that the line is longer than the screen I’ve added a pop-up form which displays the detail for a single entry, making it much easier to read.

EA Installation Inspector V2 Pop-Up

EA Installation Inspector V2 entry detail Pop-Up

For those who have downloaded already may be worth updating to ensure you can see the other stuff.

I’ve also been thinking about adding a facility to change the target DLL file – not least as I find that during testing of existing installed AddIns with VS it doesn’t update the DLL location as required.  Is this something of interest to others? Are there other functions that would help when developing/testing AddIns?

I have updated the entry on the sparx community site – where you can download this new release.

Adrian

Back to it – and hasn’t it flown since the summer!

I’m still here, but after a summer taking it easy and spending more time than planned doing some rework on eaForms, it was all too soon back to some real world projects, helping others, which have kept me busy, and hence this meant I haven’t had too much time to be exploring EA.

It seems that after summer there is renewed energy and an eagerness to get stuff done.  I can’t complain it can be really exciting but of course before you know it it’s Christmas; already in the UK we are seeing Christmas goods in the shops and it’s not the end of October year! This also means a new deadline appears – must be done before the holiday season.  I am sure it was never like this when I was younger, but I suspect that is the view through rose tinted glasses.

However, the eaForms rework was really good fun – not that I always enjoy refactoring code, but after a few years it was good to go back to the design, and with the knowledge gained from use and customer feedback we have been able to streamline some of the internals.

It was also the chance to clean out some deadwood.  For those who may have seen eaForms a couple of years ago, the initial design used an EA diagram for the form design and keep everything within EA (see example of our initial design), it was fun (especially some of the synchronisation needed), but it didn’t give users the near WYSIWYG experience expected.

Use Case form defined in EA diagram

Use Case form defined in EA diagram – as it used to be done – now we have a WYSIWYG form builder

Removing the need to support this functionality really did help with the rework – it simplified an awful lot and allowed eaForms to become more decoupled from EA in a positive way.

This work reminded me of the many projects over the years where I had written code to fulfil requirements for functionality that was really never used.  In our case, we thought it was cool to use an EA diagram, but users didn’t!  It’s all too easy to add a requirement because it seems like a good idea but really isn’t of value to the customers, however without a crystal ball there is no easy answer.  I’ve worked in organisations who do lots of research when defining products, and I’ve seen that doesn’t guarantee success.

Apart form doing work on the internals of eaForms we added some more features to meet customer needs, notably:

  • Datagrid control – which presents collections in a flexible table format with display, editing and adding capabilities.
  • More script capabilities have been added, for example running a script on form load (so checks can be made before the user even sees the form)
  • Workflow / “Wizard” like functionality allowing the editing to be split across multiple eaForms sequenced with a defined workflow.

For those who may be interested, I’ll put together some short posts on some of these new features in the next few weeks, but if you eager to have a look today you can pop over to eaWorkplace and simply register with them to download a trial version.

It also worth noting that all of these were added to meet incoming requirements, for which I’m always thankful, as it also indicates that there is a need for eaForms.  And of course far better than me trying to double guess what users really need.

If your an eaForms user, and eaForms doesn’t do what you want, let me know – no guarantees we can do it but unless we know we can’t even try!

Be back soon

Adrian

eaForms – a few new features that make my life easier

We have just released a new version of eaForms which, apart from a few maintenance items, has added 2 functions that I wanted to make my life a little easier, and hence I think could be of use to you.

The first relates to the use of the Genfile element field and the element linked files collection. The Genfile field is mainly used in class elements to store the source file which is linked to the class for example through a code import or code generation.  When you press F12  the filename in this field is used to select the file that is opened in an editor window.

Whereas the linked files is an element collection that can contain details of local files and web addresses.  Although we should aim to keep as much stuff as possible in the model this isn’t possible for all items, so having a reference that we can use to access the relevant item is useful.  So for these “file references” we have added the ability, within eaForms, to double click on the item whether it be a textbox containing the Genfile field or a listview of linked files, and using either the default windows associated program or an application configured in settings open the file (this can also be used to execute files if required). You can also use the context menu for textbox items as shown in the screenshot below.

Open file specified in Genfile from context menu

Open file specified in Genfile from context menu

The great thing is the ability to use a stereotyped element e.g. which contains details of the item plus the relevant filename so that you can directly open the file from within EA.

The second addition is really an experiment based on our observations of the increasing use of scripts.  We have added action buttons that will execute scripts either to

  • Save the element and then run a script
  • Run a script, and conditionally, on the result of the script, save the element or leave the form open

Furthermore, to avoid the risk that the script may not be available to the user we have embedded the script within the eaForm definition, and importantly it is the form designer who is responsible for checking it out!  As with any script related operations the uses are possibly myriad, although there are some restrictions.

Now, although these features only save seconds they can enhance the user experience or it may ensure important checks are made without the user needing to think.

If you’re new to eaForms then go to EA Workplace to download a copy to try

Do you have seemingly simple tasks you perform repeatedly that could be included as an eaForm capability?  Let us know what you need.

Adrian