TN Custom Trnasformation Service - Flow or Java???

(LOL. Apparently I can’t edit my subject. s/Trnas/Trans/)

Hi, All.

I am attempting to drink the WebMethods Kool-aid[SUB]tm[/SUB] and am therefore trying to use flow where possible. I want to write a trading networks custom transformation service to use from a document type when extracting information. The administrator’s guide says:

The service must implement the input and output variables that

are defined in the wm.tn.rec:NumberAttributeTransformService

[INDENT]specification.
[/INDENT]

The specification for this service takes a string list as input and writes a string list as output. However, it also accepts a variable called isArray that, when true, instructs you to write the output not as a string list, but as a single string. I find that I am unable to code a flow service that uses the specification (directly or indirectly) and does what the instructions require. The specific problem I’m having is writing a flow service that declares its inputs and outputs, and that returns either a string array or a string to the same variable name. If I try to return an object, when I map my string array to the object, the map just takes the first item in my string array and puts it in the object.

Should I just not use the specification and declare my outputs? I guess I’ll have to try that, but it feels bad.

Or is this one of those scenarios where you just ought to do this in Java? If so, I wish the documentation would have just said that…

I guess either way declaring inputs and outputs for this service is probably not the way to go, but it makes me wonder why they wrote a spec for it, since it’s not really right.

I guess I’m really interested to hear what is good and bad about what’s going on here.

Ok, I wrote the service in flow and got it to work, but I feel like it’s an example of how not to design a service interface. The fact that the specification is sort of a non-specification also made the service difficult to test and to use. So I would never design or write a service that worked that way unless I absolutely had no other choice.