Oct 24, 2016

IBM BPM - Best practices

Below is a collection of best practices and knowledge resources I have gathered over the years on the IBM BPM (Business Process Manager) product. I am going to make this a live post by frequently adding articles and best practices I find worthy of from IBM and other external links.

Best practices: 

  1. Performance: https://www.ibm.com/developerworks/community/blogs/5things/...
  2. Process:  https://developer.ibm.com/bpm/docs/best-practices-recommendations/high-quality-processes/
  3. Troubleshooting: http://www.ibm.com/developerworks/bpm/bpmjournal/1312_chan/1312_chan.html 
  4. Error Handling: https://developer.ibm.com/bpm/docs/best-practices-recommendations/high-quality-processes/...
  5. Speed: https://developer.ibm.com/bpm/docs/best-practices-recommendations/performance/ 
  6. Installation: https://developer.ibm.com/bpm/docs/best-practices-recommendations/...
  7. Toolkits: https://developer.ibm.com/bpm/docs/best-practices-recommendations/...

IBM Redbooks on IBM BPM: 

  1. Leveraging the IBM BPM Coach Framework in Your Organization (SG24-8210-00)
  2. Scaling BPM Adoption: From Project to Program with IBM Business Process Manager (SG24-7973-01)
  3. Creating a BPM Center of Excellence (CoE) (REDP-4898-00)
  4. IBM Business Process Manager V8.5 Performance Tuning and Best Practices

Knowledge management resources:

  1. A 1500-page book on tips and How-To articles by Neil Kolban here: http://neilkolban.com/ibm/
  2. Migrating instances using a policy file: https://developer.ibm.com/bpm/docs/upgrades-migration/migrating-flight-instances/
  3. UI Performance: https://developer.ibm.com/recipes/tutorials/ibm-bpm-ui-performance/
  4. Manging and using toolkits: http://www.ibm.com/support/knowledgecenter/en/SSFPJS_8.5.7/...
  5. Purging Data: http://www.ibm.com/developerworks/bpm/bpmjournal/1312_spriet/1312_spriet.html
  6. Tuning your instance migration: https://www.ibm.com/support/knowledgecenter/en/SSFTN5_8.5.6/...
  7. Displaying detailed error messages generated by custom applications: https://www.ibm.com/support/knowledgecenter/SSFTDH_8.5.7/...

Known problems, and resolutions: 

What is blocking snapshot deletion: https://developer.ibm.com/answers/questions/250151/...

Jul 19, 2016

Troubleshooting IBM BPM Logs using Support Assistant

Note: The methods demonstrated below is primarily written for the IBM Business Process Manager product suite, but it can be applied to any application or product runs on top of IBM Websphere Application Server.

    Scanning server logs has always been a critical troubleshooting activity carried out by most professionals. I resort to the log file for all unobvious software problems I encounter. But after having scanned files with tens of thousands of lines over and over, it was starting to get frustrating over a period of time. It was during such a time, I explored several solutions and found the IBM Support Assistant a mighty weapon to be acquired into my armory.

   With the recent version of 5.0, the Support Assistant tool is packaged as a client-server utility, which means you will be able to configure it on one common machine and share the URL with everyone in the team who might involve in log analysis. You can create projects, import log files into it, and let the utility scan them and come back with a report. Let's look at how simplified our job becomes with a few screenshots.
Step 1: Click Add to create a new case

Step 2: Click Add Files, and import all the SystemOut.log files

Step 3: Click Scan Case on top right, then click Launch

Step 4: After a few minutes, all errors are shown under "Symptoms" tab. It clearly shows list of all errors, how many times it occurred, and when.

Note: When you click on a error, you receive websphere specific fix packs and APAR's related to the problem, which is great.

Note: Another great feature is the ability to search specific keywords. This can be error code, BPM instance id or username.

You also have the ability to turn on an "Advanced Filter" by looking at specific files, node, or time.

Overall, the support assistant simplifies troubleshooting greatly if you have the time and patience to set it up by spending a few hours. You can avoid scanning through insanely large log files, and let the tool digest them. With all the searching and filtering features, you can narrow down your problem within minutes. You can share the URL of the project with anyone in the team, having them take a look at it for themself. This centralized approach makes for more productive activities. While this technique applies to any web sphere product like Websphere Portal server, Message Broker, IIB, ILog, I primarily use it to scan my IBM Business Process Manager log files. 

Here are some specific keywords that you apply in the symptom filter to catch common problems:

  • CWLLG2041E: Coding errors, Type mismatch, JS Script Errors
  • CWLLG0594E: Runtime error (that should have been handled in code)
  • CWLLG2229E: EJB Error, Event manager, UCA failures
  • CWLLG1338E: Error starting or running a service, permissions.
  • WSVR0606W:  One Hung Thread was released
  • WSVR0605W:  One new Hung Thread added
  • REST request:   Delay in IBM BPM REST API calls that run longer than expected 

Jun 9, 2016

Adding additional language support in notepad++

Notepad++ is a diverse text editor with abilities to view and edit programs of various languages,  does a great job in viewing large sized server log files. It supports a basic set of languages by default, and here is how you can extend its support for 500 other programming languages.

User Defined Languages:
As the name says, this is a feature that allows users to define their own programming language in the form of an XML file and then Notepad++ would start formatting your language as per that definition. The following page contains links to various XML files for 500+ languages.

For example to get it support Groovy programming language, you would download Groovy's XML file, and then import it onto notepad++ using few clicks as shown below:

1. Select Language -> Define your language...

Then click Import and upload the .xml file you have downloaded. Close npp, and re-open it to see the formatting.

Here is a sample code after the formatting has been imported. 

Apr 22, 2016

"Please Wait" loading dialog in IBM BPM 8.x

Coaches in IBM BPM can at times take a while to load, producing a sense of confusion in the end user's mind. A blank page with no data can be frustrating, so providing a spinning wheel like animation makes them feel better, because there is something to start at, and a hope that it will eventually load the actual page. There are many toolkits and libraries that may do this, but with Dojo under the hood, you can do this yourself with just 4-5 lines of JS. Here is how, in 4 simple steps.

If you are on a older version that does not support Coach views, then use the code in the Coach view below in a Custom HTML element directly inside the coach.

Step 1: The Image
Download a royalty-free gif file with loading animation fromthe internet, rename it to “loading.gif” and import that image onto your process app (or toolkit).

Step 2: The Coach View
Create a new coach view, and add the following code on the “Behavior” tab -> View function
Leave all other sections and configurations blank. 
The coach view configuration

require(["dojo/domReady!"], function(){
// will not run until DOM is finished loading
dojo.query('#Button1 button')[0].click();
var i = dojo.query('img')[0];
i.parentElement.style.top = (screen.availHeight/2)-100 + "px"; i.parentElement.style.right = (screen.availWidth/2) + "px";
i.src = com_ibm_bpm_coach.getManagedAssetUrl('loading.gif', com_ibm_bpm_coach.assetType_WEB);

Step 3: The Coach
Create a human service like this. The decision gateway is optional, but helps keep it configurable whenever you want to turn it off. I have an environment variable declared to turn this on/off just in case it stops working whenever the browsers are updated, and it can be a showstopper.

The coach structure
Inside the coach, add a button and the new coach view that we created in step 2.

Coach design - with a button, and coach view

The control id of the button must be Button1, if it’s different – then update the control id or change the source code of the Coach view – line #3 to point to the actual one.

Step 4: The Human service
Now embed this “Pre-Loader” human service right after the Start step of your actual human service where you want to see a pre-loader.
Placing the pre-loader in actual service

You may also like these writeups

Related Posts with Thumbnails