Novice modeler question about the SOAP connector

I can’t believe this.
I honestly think I understand it, yet I keep running into a brick wall.
Both Askar and mppfor_manu have both been very helpfull but I just can’t get my simple SOAP process to work correctly.

I have now made a project and uploaded it to github under the name “soap-approval”
It is a mix of proceses and tutorials and I bleieve it should work fine, yet I can’t build it.

Can someone please take a look and tell me where I am going wrong?
Everything is added, the whole project so there wil probably be a stupid mistake somewhere in there but I cant figure it out.

All the help is much appreciated!

So this is an interesting topic, I originally came from using ActiveVOS to Camunda and my gut instinct was to put all the webservice inputs and outputs in the process definition as much as possible. This meant using Spin and so. I even implemented support for XQuery. So using ActiveVOS with SOAP in a nutshell had these problems:

  • Few developers know XSLT and especially XQuery very well
  • Embedding transforms meant no reuse and not individual testing.
  • Stuck with outdated transform tool versions (1.0)
  • Updating WSDLs to new versions using the editor was a holy mess.
  • Barely usable unit-testing, especially when doing minor edits to the process

So yeah, the input/output mappings using XPaths were quite good, but at a cost.

The big picture is that accessing SOAP services can be quite complex. The Spin product can cover some of the simpler use-cases, but the reality is that to a developer that already knows Java, using CXF is not much harder and is certain to support all use-cases and assure you have production-grade functionality. You want things like

  • input/output document schema validation
  • customized logging (pretty-printed in dev, custom keys, etc)
  • unit testing with SOAP mocks, individual method call resolution
  • resuable, custom header handling
  • configurable URL endpoints, per environment
  • custom SOAP Fault handling / logging
  • reusable, testable converters

Basically webservice access is something you should, per service, put in individual, resuable artifacts, due to complexity. For good or bad, spin is sort of a inner platform. And while using XSLT/XQuery/Freemarker transforms is a valid approach, but really is not less complex than regular code for a Java developer.

What might look like less than ideal support for SOAP compared to other BPMN products actually is IMHO a blessing in disguise; keeping two things that are complex on their own (process definiton and WSDLs with XPATH, XQuery and XSLT) from being tightly integrated in a holy mess.

Create a nice java service wrapper which lets you configure things via expression and/or input/output mappings if you want to, and use JAXB unmarshaller to suck up XML files if you prefer (i.e. almost like a Freemarker template) that approach.

1 Like