Debugging Oracle BPM has been a bit tedious. One would often start setting logmessages which will clutter your logs when running the project in a production environment (and a performance issue when not needed!)
This post contains several ways of debugging;
- Debug in BPM Studio
- Debug BPM Methods
- logMessage(s) with simple types
- logMessage(s) with complex types
As a side note; LogMessages are often abused for debugging, you might consider making project variables if you notice you keep looking in the logs.
A clear distinction for me is that all functional values should be accessible through the WorkSpace and exception handling should also be raised through logmessages.
Debug in BPM Studio:
- First toggle a breakpoint in your code. (Right mouse click on the left side of your code)
- Then click “Open Debug Dialog” in the menu “Run”:
- Create a new “BPM Process Debugger” by clicking on “New launch configuration”
- Give the configuration a name
- Select the project
- Click Apply and then Debug button
- Run your project until it reaches your breakpoint:
Debug BPM Methods
- Select the BPM Script Launcher and click New Launch Configuration
- Choose the project
- Type the component name
- Choose the method
- Click Apply and debug
- Remember that the method values needs to be initialized.
logMessage(s) with simple types:
You can log simple types by using the logMessage command:
logMessage("<< [" + process.name + "] [" + Activity.name + "] " + "message received but not for this process\nMessage contents: " + message.textValue, severity : Severity.WARNING);
This would result in a warning log statement with message being displayed.
logMessage(s) with complex types:
A quick way to display complex types is through DynamicXml, which will take bpm variables (complex & simple).
logMessage("complexTypeVariable:\n" + DynamicXml.createXmlTextFor(object : complexTypeVariable)
This is an example of the log statement:
complexTypeVariable: <xobject.Src.Com.Joris.BPM.Types.complexTypeVariable xmlns="http://bea.com/albpm/DynamicXml/version/2.0"> <firstvalue>123</firstvalue> <secondvalue>second</secondvalue> <thirdvalue>false</thirdvalue> </xobject.Src.Com.Joris.BPM.Types.complexTypeVariable>
I’ll expand this post in the future with (Process) Unit tests as well.