Since other solutions “extended” their environments, I created a “remainder” service.
service: remainder
inputs: num1 (string), num2 (string)
outputs: value (string)
IDataCursor idc = pipeline.getCursor();
int num1 = IDataUtil.getInt(idc, “num1”, 0);
int num2 = IDataUtil.getInt(idc, “num2”, 1); // avoid div by 0 exceptions
IDataUtil.put(idc, “value”, “”+num1%num2);
idc.destroy();
Then, using that remainder service in the FizzBuzz solution:
service: fizzBuzz
inputs: max (string)
outputs: outputs (string list)
REPEAT (count set to %/max%)
MAP (call remainder twice, passing $retries as num1, and 3 & 5 as num2; map $retries to s)
BRANCH (eval labels)
(%/rem3% == 0) && (%/rem5% == 0): MAP (map 'FizzBuzz' to s)
%/rem3% == 0: MAP (map 'Fizz' to s)
%/rem5% == 0: MAP (map 'Buzz' to s)
BRANCH on '/$retries'
/[^ ]/: pub.list.appendToStringList (drop all vars but max, $retries and output)
Eight steps. Could be 7 if it didn’t ignore 0.
#webMethods#Integration-Server-and-ESB#Flow-and-Java-services