4 Game Changing Development Features in webMethods 9.12

Many of you might already know that Software AG has released it’s new version of webMethods Suite 9.12 recently in October 2016. I was going through the release notes of this version and noticed many enhancements and new features of the suite. However, I am impressed with four features/ improvements that change the way you develop integration services on Integration server using Designer.

Briefly, below are the features/ improvements in the order I liked (high to low):

  1. Distributed Caching Enhancements for Integration Server
  2. Enhanced Mapping Construct (For Each)
  3. Search and Refactor Support
  4. Data Mapper View

Let’s know more about these new features.

Distributed Caching Enhancements for Integration Server

Personally, this is my most loved enhancement among all the newbies in the 9.12 release. We all knew that Service Caching feature exists from many versions. But, it has its usage limitations. For starters, it only caches a result after the first service invocation. There was no optimal way to load all the expected results into the cache in the first place at the time of server startup. Second, after server caches a result, there was no way to remove that particular result from cache alone. The only option was to reset the whole cache for that service.

Having worked on robust integration frameworks for multiple million dollar projects, I have seen the most common need among them all is a “Configuration Manager” which stores all the static data into the cache on server startup and make it accessible. Being distributed in nature is one of the essential requirements too. So, customers had to spend time and money on this framework to build a customized caching component that can perform above mentioned.

It is no more the same starting from webMethods 9.12. This game-changing feature suffices most of the requirements and avoids the need to build customized cache managers for maintaining static data. Integration server now comes with few built-in public services and extended settings which allow us to:

  • Pre-fetch and fill data into the service results cache at startup time
    • pub.cache.serviceResults:addCacheEntry service can be useful to perform bulk load of service results at Integration Server startup.  This service adds cached entry into service results for the service without executing the actual service

  • Use a distributed cache for service results caching
    • To configure Integration Server to use a public cache for service results
      caching (instead of system cache SoftwareAG.IS.Services), you specify the name of the cache and cache manager in the server configuration parameters 
      watt.server.serviceResults.cache and watt.server.serviceResults.cacheManger, respectively

  • Delete an entry for the distributed service results cache
    • pub.cache.serviceResults:resetServiceCache service can be used to either clear all the cached results of a service or a specific cached entry of a service (my favourite)

  • Return a list of all cached values from service results cache
    • pub.cache.serviceResults:listServiceCache service can be used to returns a list of the cached service results for a particular service

Enhanced Mapping Construct (For Each)

This new feature inside MAP step is an enhanced for-each construct that allows us to map an array of documents (even deeply nested) to another array in a single step.

Say, you want to map contents of the inputDocLevel1 array to the outputDocLevel1 array in below screenshot.

nestedmapping

As you can see, the structure of both the arrays are different and top-level mapping is out of the option. So, below is how we usually map – NESTED LOOPS.

nestedloop

But, with this fantastic new feature, the same can be done in single MAP step as shown below – FOR EACH CONSTRUCT.

foreach

Search and Refactor Support

Till now, we are only able to search flow services, document types, Java services, and other few assets using Search feature (CTRL-F) in Designer. From this version onwards, we can search for variables too, i.e., any variables that we use in the flow.

For example, if I want to find a variable named “nameLevel2” and see its usage (FYI, you can see that I have used this variable in the For-Each construct examples), then I can do the following:

  • Press CTRL-F in the Designer’s Package Navigator view
  • searchvar
  • Type in the variable name you want to search and hit Search
  • searchvarresult
  • You will see all the flow services, document types, etc. that are using the variable name you searched for

Refactor – My third favorite super feature 🙂

This one is a most needed. How many times have you wanted to change the names of variables in input or output signature of services and ended up spending massive amounts of time RE-MAPPING the messy steps inside the service for the renamed variable?

Well, those days are gone. You can now refactor field names within Integration Server elements. Follow below example to understand better.

Say, I have a service with below signature and mapping

refactoroldspec

refactoroldspecmap

Now, if I want to rename my input variable to “firstName,” then usually I would have to manually update the mappings in the entire flow service at the places with references of variable “name.” But now we can do the below:

“Right click” on the input variable you want to refactor and rename it.

refactormenu

After giving new name, click on next, and you will see below screen

refactorwizard

Choose the steps carefully where all you want to update the new variable name (by default, designer selects all reference steps) and click Finish.

The new service signature and mapping will look as below

refactornewspec

refactornewspecmap

Data Mapper View

This feature is a useful and good to have but not a necessary (in my opinion). A new Eclipse view named “Data Mapper” have been introduced in Software AG Designer from version 9.12. This view helps in testing flow steps before running a “flow service.”

As you construct a flow service, you can separately test the INVOKE or MAP steps that
you plan to use in the flow service. For each step, you can provide relevant inputs, run
the step, and check the output before running the entire flow service. This approach
helps in early validation of a MAP or INVOKE step before it passes data to the next step in the flow
 – from Software AG documentation

To see this view in Designer, go to  Window > Show View > Other

datamappermenu

Select Software AG Service Development > Data Mapper

datamapperwizard

You will now see this view at the bottom along with Results view, Search view, etc.

datamapperviewmapping

There are two tabs. Mapping and Testing. Mapping is same as the Pipeline view.

The Testing tab is the interesting one. It allows you to provide sample inputs and test the outcome of the step without executing the entire flow

datamapperviewtesting

Hope you all too will try out these features and save a lot of development time and effort.

#happy_coding #happy_integration

9 thoughts on “4 Game Changing Development Features in webMethods 9.12

  1. Hello Prasad. Thanks for good content.
    However I am not clear about example you have presented for the for-each construct. Instead of using nested loop or ‘for-each’ construct, if we map the ‘inputDocLevel1’ array to the ‘outputDocLevel1’ at the top level, we can achieve the same result here also. Can you give any other example, or maybe explain the for-each with you example bit more. Thanks in advance.

    Like

  2. One more observation, the refactor (rename) does not work on ‘for-each’ loop map service/steps. The input variables get renamed, however the link/map steps are not.

    Like

Leave a reply to rahulsangareddyhul Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.