Hi all,
We've had a couple of reports of the following so I wanted to share this in the hopes others can avoid it.
The nature of the problem is that after installing or upgrading to CA PPM 14.x your GEL scripts in a process may report the following problem when they run:
BPM-0704: An error occurred while executing custom script: java.lang.ClassCastException: org.apache.xerces.dom.DeferredCommentImpl cannot be cast to org.w3c.dom.Element at com.niku.union.gel.GELValidator.limitSQLQuery(GELValidator.java:379)
at com.niku.union.gel.GELScript.run(GELScript.java:55)
at com.niku.union.gel.GELController.invoke(GELController.java:74)
at com.niku.bpm.services.ExecuteCustomAction.run(ExecuteCustomAction.java:207)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
The cause and solution are straight forward. There is an expectation that the first entity encountered in a GEL script will be an 'element', specifically <gel:script>, like this:
<gel:script
xmlns:gel="jelly:com.niku.union.gel.GELTagLibrary"
xmlns:core="jelly:core">
<!-- I am a comment -->
...
</gel:script>
Notice that the comments are inside that element (line 04).
If your script is formatted like this instead, then inside processes on version 14.x you will begin to see the error:
<!-- I am a comment -->
<gel:script
xmlns:gel="jelly:com.niku.union.gel.GELTagLibrary"
xmlns:core="jelly:core">
...
</gel:script>
If you have any scripts like this, please edit them and move the comments inside the <gel:script> element body like the first example in order to prevent this becoming a problem. We have reported this to our developers as a potential defect (CLRT-77273), but it may still result in this change to the scripts being necessary in future so addressing it beforehand will cause the least inconvenience.