The Journey Begins
With the release of BPMS/BRMS 6.3 back in May, I think it is time for me to embark on a journey to explore its new features. What better to do than migrate an existing business rules application which I deployed on the Realtime Decision Server in BPMS 6.1 to 6.3’s new Intelligent Process Server. A piece of cake, so I thought…
Where is My Remote Server, Dude?
Started the BPMS 6.3 server using standalone.sh. The deployment into the Intelligent Process Server is not that different from the Realtime Decision Server. However, it keeps telling me that there are “No Remote Servers” when I clicked on the “start” button. I can click on the “Stop” button and that is it. I cannot connect to the server using my client. See screen shots below:
It turned out that with BPMS 6.3, you need to specify some “Bootstrap Switches” before you can resolve the issue above. You can either include those switched as -D options on startup or modify your standalone.xml. I use the latter approach by adding the following properties in the “system-properties” tag in standalone.xml.
<system-properties> ... <property name="org.kie.server.user" value="user"/> <property name="org.kie.server.pwd" value="userPassword"/> <property name="org.kie.server.location" value="http://localhost:8080/kie-server/services/rest/server"/> <property name="org.kie.server.controller" value="http://localhost:8080/business-central/rest/controller"/> <property name="org.kie.server.controller.user" value="kieserver"/> <property name="org.kie.server.controller.pwd" value="kieserver1!"/> <property name="org.jbpm.server.ext.disabled" value="true"/> <property name="org.kie.server.id" value="local-server"/> </system-properties>
Restarting BPMS and redeploying my business rules application does the trick.
You are on the Wrong Path, Mate!
Now that the Intelligent Process Server is running, I pointed my SoapUI client I set up for testing in BPMS 6.1 to the Intelligent Process Server and got a shock result: The specified HTTP method is not allowed for the requested resource.
I know, one should always RTFM. It turns out that in BPMS 6.3, the URL to access the server has changed from previous versions.
Note the introduction of “instances” before your application name.
Tell me What to Do, I am an Idiot
After resolving the URL, SoapUI can not talk to the server. However, the returned XML is different from before. It does not display the attributes of the objects returned. See screen shots below:
In BPMS 6.3, you now have to add the header: X-KIE-ContentType: XSTREAM in the HTTP header, before you get the old behaviour back.
Journey’s End…for Now
Although all the demons/monsters encountered were slain, it is not without casualties (my time and frustrations). I am writing this article for you so that you don’t have to waste time like I did.
In summary, there have been changes in BPMS 6.3 that will impact existing rules applications:
- Setup of the Intelligent Process Server using Bootstrap Switches prescribed above or you will run into my initial “No Remote Server” problem
- Change the URL to access the rule application (with an extra “instances/” before your application name as in: http://localhost:8080/kie-server/services/rest/server/containers/instances/SpeedCamera
- Specify in http header X-KIE-ContentType: XSTREAM in your HTTP request to get back the behaviour in previous versions. The header was not required before.
1) is a one time setup thing but 2) and 3) will require changes in existing rules server-based client applications. There are no warnings in the documentation that I can find regarding this. And it will be difficult for customers to find them leading to frustrations like I experienced in my journey in learning BPMS 6.3. Hopefully, this article will lessen the pain