Infor Applied Innovation

« | Main | »

Infor Process Automation (IPA) – Process Performance Improvement Tips

November 3, 2014

By Keith Knuth, Principal Software Architect

We previously published a blog article on tips to improve performance of the Infor Process Automation (IPA) server.  To follow-up on that post we thought an article on tweaking IPA Processes would be helpful as well. Since Infor Process Designer is an open-ended visual design tool you can easily create Processes that are not as efficient as they could be.  So here are some tips to help you through the design of your Processes.

Remove repetitive file writes

While inside a loop (from a SQL read, or IOS Query, etc.) it is common for designers to place a File node in the Process to write out each record from the query to a file.  Disk I/O is a performance killer, so wherever possible remove these repetitive file writes with a Message Builder node inside the loop.  By doing so, you will be appending all your records to a String in memory which is much faster then writing it out to disk. At the end of the loop place one File Access node in your Process that writes all of the Message Builder node output to a file at once.

IPAProcessImprovements1

IPAProcessImprovements2

Tune remote file access

Accessing files across the network for reading or writing can really hurt performance. Some ProcessFlow users have found this out when migrating to IPA.  Previously, they configured their system to have their Infor Lawson business applications and ProcessFlow on the same server.  So if ProcessFlow had to access a file on disk it was quite fast as everything was local.  However, once they migrated to IPA, customers often choose to place IPA on a separate server.  The same Process must now access the file across the network instead of locally.  The Process now runs slower than before!

What can be done?  Make sure you are accessing the file as efficiently as possible (see previous tip).  Talk to your network IT folks to see if anything can be done between the two servers to reduce network lag.  You can also write to a local file during the Process then move the file to the other server (FTP node) at the end of the Process.

Upload with Logging off

In our previous article about IPA Server performance we talked about how Process logging can negatively affect performance.  It is important to realize that Process logging can be controlled from the Designer as well.  When you upload a Process the Designer allows the user to specify what the log level should be. Unless you are troubleshooting a problem the log level should be “No Debug” for optimal performance.

IPAProcessImprovements3

Merge Assign Nodes

For some reason, I have seen many Processes built with multiple Assign nodes, one right after the other, in series. The more nodes in your flow the slower it will process so you should combine nodes whenever possible. In this case, all those Assign nodes can be combined into one with multiple steps in the node.

IPAProcessImprovements4

Remove Assign Nodes

Many users do not know that values returned from a query or processing node have internal variable names automatically created.  There is no reason to add an Assign Node after the query or processing node in order to assign the value to a custom variable name.  For example, if you make a query to a Lawson application using the Lawson Query node called “MyLawsonQuery” you can instantly access field values returned by using <!MyLwsnQuery400_EMPLOYEE>.  Where “Employee” was the name of the column/field in the application.  There is no need to slow the Process down by adding an Assign Node to create a new <!MyEmployee> variable. Just use auto-created variables!

Write Efficient Javascript

Using Javascript in Assign nodes is very handy and very powerful. However, as the saying goes, “With great power comes great responsibility!”. When using Javascript in your Assign nodes you should take time to review your code to make sure it is written as efficiently as possible. Reduce the number of lines in your script as much as you can. Sometimes what you wrote using three functions can really be done with one! Also, if you have multiple steps in an Assign node, all performing Javascript functions you should consider combining them all into one block/step.

Use JDBC Connection Pooling

If you have multiple SQL nodes in your Process you may benefit from JDBC Connection pooling. There is an IPA grid property called “pfi.pooling.jdbcUsePooledConnections” that is set to False by default. Setting it to true will keep a database connection open during the execution of a Process so that the server doesn’t have to reconnect for every SQL node. Look up the topic “Configuring Grid and other properties for Infor Process Automation” in your online Infocenter for more information on this topic.

Private SQL Query Node variables

The SQL Query node has an option to “Enable SQL result values outside the loop”.  If you have this option selected it can reduce performance considerably.  This is due to the processing time it takes to store potentially thousands (maybe tens of thousands) of variable values that can come from large SQL queries.  Avoid using this option if performance is a concern.

Adjust Query Page Size

Both the Lawson Query Node and Landmark Node have Page Size parameters that are adjustable.  Implementing a Page Size breaks the query into multiple calls to the application each getting one “page” of data. If you have enough memory on your IPA server, you should eliminate paging in order to reduce the number of calls to the application.  For the Lawson Query Node this is done in the Infor Rich Client under System Parameters > (your configuration) > Infor Lawson > Page Size.  Set it to zero if possible.

For the Landmark node the configuration is done in the Properties tab of the node.  Set the Page Size to -1 for no paging. However, this option may take some trial and error to find the optimal setting. Any page size over 30 will result in the Infor Grid treating the query as a batch transaction instead of an online one.  What this means is that depending on the size and number of records in the result set you may find better performance in keeping the page size at 30 or under for this node. Experiment with your Process and see what is best.

If all else fails…

Turn on Activity Logging for the Process and pay close attention to the timestamps in the log as the Process executes.  Which node is the bottleneck?  Once you find it, dive into how that node is setup and how to make it execute more efficiently.  There is also a Metrics chart available on the Workunit form that can help you determine which node was slow (see below).

IPAProcessImprovements5

This list is by no means exhaustive. Do you have other tips for maximizing the performance of your Infor Process Automation processes?  If so, sound off in the comments below.

 

*updated 7/6/2016 to include “Remove Assign Nodes” section

Comments

2 responses to “Infor Process Automation (IPA) – Process Performance Improvement Tips”

  1. Kevin Hult says:

    SQL query improvement (interface delimited file creation) – Instead of the Message Builder creating a row of a bunch of sql query defined data fields, concatenate the data fields with your delimiter into one row in your SQL query statement with the || ‘,’ || and name the row with the “AS” row name. Use the sql.query.name_row.name as your message builder variable. (i.e. 13,800 rows of 30 data fields = 414,000 vs 13,800 rows of 1 data field = only 13,800)

  2. Gracielena E Gonzalez says:

    Hi, we want to find out what is the fist LAWSON VERSION that is Cluster AWARE, I mean using SQL 2014 always on high availabilty will work ok?

Leave a Reply

Your email address will not be published. Required fields are marked *



About this Blog

The latest innovations using Infor Technology