Monday, 9 November 2015

IBM Operational Decision Manager (ODM) Rules - Get your locale right

This has caught me out on a few ODM Rules builds, so I thought I'd write it down where I cannot forget it ....

When one first provisions an ODM Rules Decision Center (DC), there's a nice little wizard that one runs through to set up the environment.

One of the questions that one might skip past pertains to the locale of the Decision Center repository: -

Set the persistence locale of the repository


Now it'd be quite easy to leave this as-is ... which is the default of English (United States).

However, this might present a problem if one is using the Rule Designer IDE in an English (United Kingdom) / English(Great Britain) locale.

Therefore, it's a good idea to know the locale of the Designer tooling in advance, and set this value accordingly.

As per the above screenshot, I've set this to en_GB which equates to English (Great Britain).

If one forgets to set this, problems may ensue down the line, perhaps meaning that projects need to be removed from, and then re-published to, Decision Center, once the locale has been correctly set.

In Designer, this is configured in a property file: -

C:\IBM\ODM87\configuration\config.ini

#
#Fri Nov 06 15:35:46 GMT 2015
osgi.launcherPath=C\:\\IBM\\ODM87
org.eclipse.update.reconcile=false
eclipse.p2.profile=Operational Decision Manager V8.7 com.ibm.sdp.eclipse.ide
osgi.instance.area.default=@user.home/IBM/ODM/DS/workspace
osgi.nl=en_GB
osgi.framework=file\:/C\:/IBM/IMShared/plugins/org.eclipse.osgi_3.8.2.v20140416-
1442.jar
equinox.use.ds=true
eclipse.buildId=
osgi.bundles=reference\:file\:org.eclipse.equinox.simpleconfigurator_1.0.301.v20
120914-163612.jar@1\:start
org.eclipse.equinox.simpleconfigurator.configUrl=file\:org.eclipse.equinox.simpl
econfigurator/bundles.info
eclipse.product=org.eclipse.sdk.ide
osgi.splashPath=file\:/C\:/IBM/IMShared/plugins/org.eclipse.platform_4.2.2.v2013
02041200/
osgi.launcherIni=eclipse
eclipse.p2.data.area=@config.dir/../p2/
osgi.framework.extensions=reference\:file\:org.eclipse.birt.jetty.overlay_4.2.2.
v201210101433.jar
osgi.bundles.defaultStartLevel=4
IBM_DS_HOME=C\:\\IBM\\ODM87

by adding: -

osgi.nl=en_GB

as seen above.

For future reference, please see: -




Friday, 6 November 2015

Telnet and my TP-Link Router

I've got one of these: -

TP-Link TD-W8970 300Mbps Wireless N Gigabit ADSL2+ Modem Router

and I was looking to tweak my Signal/Noise Ratio (SNR) as per this: -


This requires me to telnet into the router: -

telnet 192.168.1.254

which prompts me for my admin credentials.

I entered the credentials that I'd normally use for the web admin UI: -


However, I kept getting: -

Login incorrect. Try again.

when I entered my password.

Thankfully, Google came to the rescue, as per usual, with this: -


<snip>
It is a bug verified by TP-LINK support indeed. Actually, the password cannot be longer than 15 characters. If it is longer than 15 characters, only the first 15 will be saved as the password. When you login via web brower, it will only identify the first 15 as well and you can login. However, telnet still accept the complete password, so that you cannot login via telnet. But if you just type in the first 15, you will be login via telnet as well.
</snip>

Guess what ?

I have a nice long complex password, that's obviously (!) longer than 15 characters.

Therefore, the web UI automatically truncates after character 15, but telnet doesn't know that :-)

Once I explicitly truncated the password to 15 characters, I was in like Flynn.

IBM Operational Decision Manager Rules - A Voyage of Discovery

This week, I mainly be learning about ODM Rules.

Specifically, I've been going through the process to build an end-to-end Rules development/test environment, comprising Rule Designer (RD), Decision Center (DC) and Decision Server (DC), in order that I can test the process of applying the latest 8.7.1.1 fix pack to all three components.

I'll be documenting this in a future post, but, as part of my journey, I needed to create a simple Rules application ( RuleApp ) that I could develop in RD, synchronise ( publish ) to DC and then deploy to DS.

To achieve that, I needed to get the language right in my head.

This picture certainly helped: -

https://www-01.ibm.com/support/knowledgecenter/api/content/nl/en-us/SSQP76_8.7.1/com.ibm.odm.dserver.rules.overview/images/diag_dservice_devrules.jpg


plus this: -

<snip>
At the core of a rule-based solution, you have a client application requesting a decision from a rule application. There can be many decision points required of the rule application by the client application. At each decision point, business rules packaged as rulesets are used to express policies for how decisions are made. A rule application is deployed to Rule Execution Server as a RuleApp. Each RuleApp contains one or more rulesets, each corresponding to a decision.
</snip>

So we have a Rule Application ( RuleApp ) containing one or more RuleSets, with each RuleSet corresponding to a specific decision.

The RuleApp is authored in Rule Designer, published / synchronised to Decision Center ( aka Rules Team Server or RES ) and then deployed to Decision Server ( aka Rules Execution Server or RES ).

For the record, in Rule Designer ( which is an Eclipse-based IDE ), I created a Rule Project within which I created my Business Rule ( sayHello.brl ) and a corresponding Rule Flow ( ruleflow.rfl ). This I exported as a RuleSet, which resulted in a  .JAR file for future reuse.

I even went as far as creating a Utility Bill of Materials (BOM), which comprises some plain ole Java code to allow my Rule to write a message to the SystemOut.log file of the WAS server hosting the RES.

Again, I'll write about this process in a future post ....


IBM BPM on z/Linux - DB2 on z/OS - Permissions will still get you, every single time

A colleague of mine was seeing exceptions such as: -

[11/6/15 15:18:15:361 CET] 00000097 ProcessEngine E   DB2 SQL Error: SQLCODE=-551, SQLSTATE=42501, SQLERRMC=ZBDBU;SELECT;SYSIBM.SYSTABLES, DRIVER=4.15.120

com.ibm.db2.jcc.am.SqlException: DB2 SQL Error: SQLCODE=-516, SQLSTATE=26501, SQLERRMC=null, DRIVER=4.15.120

Caused by: com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-551, SQLSTATE=42501, SQLERRMC=ZBDBU;SELECT;SYSIBM.SYSTABLES, DRIVER=4.15.120
at com.ibm.db2.jcc.am.fd.a(fd.java:696)

in SystemOut.log when starting an IBM BPM Advanced 8.5.6.0 Deployment Environment on z/Linux ( with DB on z/OS, for the record ).

I suggested that it might be permissions-related given that he was getting SQLCODE=-551, which translates into DB2 speak as: -

SQL0551N  The statement failed because the authorization ID does not
      have the required authorization or privilege to perform the
      operation. Authorization ID: "<authorization-ID>". Operation:
      "<operation>". Object: "<object-name>".


and I wondered whether the problem might be that the BPM Deployment Environment is using an ID in DB2 that doesn't have the appropriate permissions to tables/indexes/views etc.

He checked with the DBA, who ran a GRANT command: -

grant select to ZBDBU

which fixed the problem.

Thanks to this: -


for a reminder.

Thursday, 5 November 2015

Fun and Games installing SCA Module into BPM Advanced 8.5.5 - A Few Lessons Learned

I saw a lot of this yesterday: -

ADMA5014E: The installation of application HelloWorld15 failed.

when trying/failing to install an EAR file containing a SCA module into BPM Advanced 8.5.5, using Jython - AdminApp.install.

During the process, I also saw this: -

[04/11/15 12:03:33:325 GMT] 00000058 ConfigInfoImp W   NMSV0819W: No deployments directory found for application.  Ignoring applicat
ion "Foobar101".

which proved to be very important.

Long story very short, there was a complex interlock between the application that I was trying to install ( let's call it HelloWorld15 ) and an application that had been (a) installed and not fully removed or (b) mis-installed - let's call it Foobar101.

This manifested in files being left on the Deployment Manager, but ONLY on the Deployment Manager in these locations: -

/opt/ibm/WebSphereProfiles/PSCell1Dmgr01/config/cells/PSCell1/applications/Foobar101.ear
/opt/ibm/WebSphereProfiles/PSCell1Dmgr01/config/temp/download/cells/PSCell1/applications/Foobar101.ear
/opt/ibm/WebSphereProfiles/PSCell1Dmgr01/wstemp/-1414776397/workspace/cells/PSCell1/applications/Foobar101.ear
/opt/ibm/WebSphereProfiles/PSCell1Dmgr01/wstemp/Script150cd305f5f/workspace/cells/PSCell1/applications/Foobar101.ear

Once I eliminated these, and checked that there were no remaining references to Foobar101 anywhere in the Deployment Manager's file-system ( ./config or ./wstemp ), and also that the Node had no "knowledge" of Foobar101, the installation completed without a murmur.

Which is nice.

These two IBM Technotes surely helped: -



The second Technote says it oh so well: -

<snip>
When BPEL templates need to be installed for an application, the product first checks the existing installed enterprise archive (EAR) files for applications that contain a previous version of the same template. To accomplish this task, it looks for certain files in the deployments directory for the application. When this directory is missing for any application, a nullpointer exception is thrown, which causes the application installation to fail. 
It is possible to save the configuration workspace rather than discard the changes after a failed installation. However, saving the configuration workspace after a failed installation can create a application EAR directory that only contains a few files and is missing the deployments directory. The application EAR directories are located in the
profile_root\config\cells\cell_name\applications\ directory.

Note: The invalid application directory might not be related to the current application that is being installed; it might have been created a while ago.
</snip>


Wednesday, 4 November 2015

IBM Business Process Manager database troubleshooting

This via Twitter: -


IBM® Business Process Manager (BPM) typically interacts and communicates with other software products. Therefore, if you understand cross-product troubleshooting tools you can quickly understand and solve problems. This tutorial shows what you can learn from the content of the BPMDB database in IBM BPM to troubleshoot performance problems and database-related issues. This content is part of the IBM Business Process Management Journal.


Learn about some common problem scenarios to use as examples for solving performance and database issues with IBM® Business Process Manager (BPM) and the BPMDB database. Examples with IBM DB2® for Linux®, UNIX®, and Windows® demonstrate and explain the root causes of performance issues you might face in your environment. This content is part of the IBM Business Process Management Journal.

Monday, 2 November 2015

Integrate IBM MQ with your IBM Business Process Manager processes

I think I "found" this via Twitter, but it was a few days ago :-)

Learn the various approaches to send and receive messages from a business process through IBM® MQ, communicating with back-end systems. Walk through examples with sample code to see the steps that are required to integrate IBM MQ V8.x with IBM Business Process Manager (BPM) V8.5.x. Gain an understanding of fundamental approaches to use IBM MQ to exchange data with other systems from IBM BPM processes.

Note to self - Firefox and local connections

 Whilst trying to hit my NAS from Firefox on my Mac, I kept seeing errors such as:- Unable to connect Firefox can’t establish a connection t...