Friday, 19 October 2018

Studio Developer Cool New Feature #9 - Model Explorer

At the heart of Studio Developer is the Model Explorer which provides access to objects in the model via a tree structure.

At the top-level there are entries for the most commonly used object types, for example Action Blocks, Business Systems and Entity Types.

To display the objects, simply expand the top-level type.  You can filter the objects by name using the Filter field at the top of the list. 

In addition to listing the objects by type, the Model Explorer also allows you view objects based on their associations, for example action block usage, called by, referenced data model objects, Create/Read/Update/Delete analysis, and dialog flows. This makes it much easier to locate the objects that you want to edit compared to scrolling through long lists.

Thursday, 18 October 2018

Studio Developer Cool New Feature #10 - Modern IDE

At number 10, we start off our series on the 10 cool new features with "Modern IDE".

More and more developers learn to code using a modern IDE and so when they start using CA Gen's current toolset, or have to switch between Gen and a modern IDE, the contrast between the user experience of the Gen toolset and the modern development tools makes Gen seem out of date and this can create resistance to using Gen or at least, liking it and appreciating it's many strengths.

Studio Developer is based on Eclipse, one of the best known industry standard development environments.  In developing the user interface for Studio Developer, we have carefully balanced the need for ease of use and intuitive behaviour consistent with Eclipse standards with the desire to make it very easy for existing Gen developers to pick up and use without needing any training.

Over a period of nearly 2 years, Studio Developer has been tested by a number of customers and the feedback on the new user interface has been very positive. Here are some comments that we received:
  • "It is more intuitive to use (it reminds me of RDz, Visual Studio, Eclipse)" 
  • "Studio Developer is easier to get used to. It takes a long time to get used to the old toolset" 
  • "If you have forgotten how to do something, you get much more help" 
  • "More manageable, and easy to find out where to do what"

Studio Developer Cool New Features

With the recent announcement of the availability of the new Studio Developer from IET on 31st October, we thought we would count-down to this milestone date by previewing 10 cool new features in Studio Developer. Each day a new feature will be highlighted, so visit this blog every day until launch on the 31st of October!

Friday, 17 March 2017


Gen GUI logic allows you to invoke an event handler via a USE of a dummy action block called TIREVENT. For example, to invoke the event handler called "CLICK_LOGIC" you could define an event called "CLICK" in the window and then invoke it as follows:

SET temp_tirevent.ief_supplied.command TO "CLICK"
USE tirevent
       WHICH IMPORTS: temp_tirevent.ief_supplied TO Work View in.ief_supplied

This use of a dummy action block TIREVENT has always seemed a bit strange and unnecessary, so for a Rapide application, you can now invoke the event via an API call:

INVOKE temp.rapide.object . postEventToSelf( "CLICK" )

However you would still need to create the event in the window design, which again seems unnecessary, so you can now also just directly post an event to invoke the event handler by its name:

INVOKE temp.rapide.object . postEventByName( "CLICK_LOGIC" )


Auto Suggest Fields

A new feature in Rapide allows you to define an auto-suggest field.

In the example below, the entry field for a country is supported by an auto-suggest list that shows the list of countries that start with the current value of the field.

Unlike a drop-down selection which has to contain a fixed set of data and which, if triggered by a keypress event, would slow down typing in the field, the population of the auto-suggest can be handled by an asynchronous thread in the client p-step and hence the data could be retrieved from a much larger dataset (for example from a database table via a server or web service) without affecting the user's ability to continue to type in the desired value.

Wednesday, 21 October 2015

Inline Code Example

In CA Gen the in-line code statement allows you to enter native code without needing to create an external action block. 

In genIE we have a requirement to create a UUID which for the C clients was implemented in an external action block.

The equivalent implemented for Java using in-line code was very simple and only took a few seconds to code.

Friday, 17 July 2015

Managing Web Services

CA Gen Studio provides an option to define custom web service interfaces to server procedure steps. You can then use Gen Studio to generate the WSDL and XSL files for the web service and then assemble these into a WAR file for deployment to an application server.

We were recently asked by a GuardIEn customer whether they could use our XOS (External Object Support) add-on to manage the generated WSDL/XSL files so that as they promoted a change through the life-cycle, these files could be 'migrated' to the next environment along with the object migration of the procedure steps.

Whilst this would have been possible, it raised an interesting point about whether generated code should be copied between environments or re-generated from the model in the next environment,

I don't think it is a good idea to copy the generated source code from an uncontrolled environment like the first development model. The reason for this is that the state of the model and in particular the synchronisation between the model and the generated code is difficult to establish. This is especially true for code generated from the toolset, since it could be generated without uploading the changes to the encyclopaedia, or the model could be changed without re-generating the code.

At IET we recommend that the Gen objects are migrated to the next environment's model(s) as part of a controlled 'system update'. When using GuardIEn, the automated impact analysis will ensure that all of the code affected by the migrated objects is regenerated and installed. Generating direct from the encyclopaedia ensures that the model and generated code are synchronised.

A further complication arises because the web service definition can contain interfaces to multiple procedure steps. The wsdl and xsl files are tied to the import and export views for the procedure step and need to be regenerated when the procedure step's interface changes. What happens if you have a web service for multiple procedure steps, change the interface to two or more of them and then only migrate one of the changed procedure steps to the next environment? If you copy the entire web service, the result is that interface definitions in the web service do not match the view structure for the procedure steps in the next environment.

It therefore seemed a bad idea to copy the generated wsdl/xsl files from the toolset and the same principle of re-generating code from a stable model should be adopted. The problem though was that the web service generation feature of CA Gen was only available from Gen Studio and not the encyclopaedia generation.

In consultation with the customer, we decided that the best approach would be to develop a new web service generation feature in GuardIEn so that the web services could be properly managed via re-generation from the model as part of a GuardIEn system update. This new feature is now available in the latest service packs released yesterday.

Tuesday, 23 June 2015

Updating Mobile Apps

Whilst we would hope to never have any serious errors in our applications, it is a fact that no matter how much testing is done, there will be some bugs in an application, especially for complex business systems.

Having fixed the bug you will naturally want to release it to the end users as soon as possible, especially for high priority issues that might stop the app working or even cause data corruption.

For web based applications this involves a refresh on the application server. GUI clients can also be quickly updated using a variety of methods. But what about mobile apps that are distributed via a public app store and where the updates need to be approved by the app store vendor before they are released? This can take some time - for example over a week is common.

If you develop your mobile apps using Rapide, because the client logic and UI definition resides on the application server and not the device, a refresh of the app is as simple as deploying an update to the app server.

As long as you do not change the app branding (name, icon, splash screen or app server URL), the application can be updated without needing any refresh on the mobile device.

Wednesday, 22 April 2015

More choices for using CA Gen to develop your UIs

I was invited to present Rapide at the recent COOLUp event in the Netherlands. Whilst the audience seemed very impressed by the product, one of the questions asked why we had decided to make a considerable investment in developing a new front end capability for CA Gen. 

What lay behind this question was an assumption that most CA Gen sites are no longer considering using CA Gen to develop new applications and some are considering moving out of Gen. 

What followed was an interesting discussion about the use and position of CA Gen within many organisations. The reality is that most sites that still use Gen have a considerable investment in applications that are still meeting the business needs, are very stable and are usually maintained by a small team of people. 

The result of this stability and low staffing levels is that often management are unaware of the scale and complexity of the Gen systems and the good value that these systems provide. It is only when they accurately estimate the cost of replacing the systems that the true value is understood, at which point the sensible business decision is to stay with Gen. This is why many sites are still using it today.

The problem that can result from this is that Gen remains in a state of suspended animation - the applications remain and are maintained, but Gen is still not viewed as a strategic or even tactical development tool. The development organisation then does not make sufficient investment in the tool to maximise the benefits that they could derive from their considerable investment in the technology, skill sets and the models that have been developed over the years.

Coming back to the original question as to why we have developed Rapide, the answer is that we wanted to provide Gen users with greater choice and more reasons to stay in Gen.

Whilst Gen is incredibly strong in the development of back-end server and batch systems with industry leading capabilities for developing robust, scalable, platform independent applications, it is generally acknowledged that the front end capabilities of Gen are not as capable, which had lead some sites to use other options for developing the user interface.

At IET we feel strongly that the best way of developing applications is to use Gen for developing both the user interface and servers. It is much more productive and maintainable, but in the past has required you to accept the limitations of Gen's user interface capabilities.

We wanted to give Gen users an option to use Gen to develop robust, multi-platform UIs with Gen including mobile and web, and this was the main reason for developing Rapide.

You can now use Rapide to easily migrate existing Gen block-mode, GUI and web applications to a more modern and responsive user interface for a fraction of the cost, effort and risk compared with re-writing the application in another technology.

Wednesday, 11 March 2015

Drag and Drop

Many users will be familiar with the operation of drag and drop between controls or between applications.  

Rapide now provides drag and drop support for controls within the application as well as full text transfer between applications on desktop applications.  For browser applications, Rapide also provides support from dragging files from the native OS (such as via Windows Explorer) into a Rapide control, automatically transferring the dragged files to the AppServer.

The Rapide Designer is used to define whether a control can act as a Drop Source or Drop Target, or indeed both for the same control.  The Designer also allows you to specify whether to support Copy and/or Move operations.

Various events are triggered during the course of a drag and drop operation, for example when the object is dropped onto the target and at the end of the drag operation.

The Rapide Controls Demo has an example of using Drag and Drop.