Our SwitchYardServiceChannel (a Drools Channel impl) and SwitchYardServiceTaskHandler (a jBPM WorkItemHandler impl) both share the same code (SwitchYardServiceInvoker) to execute SY service references.
It should be noted that both interfaces (Channel and WorkItemHandler) do not allow for checked exceptions.
If an error occurs, they have different behavior. In our WorkItemHandler, we allow configuration to throw the error wrapped in a RuntimeException, or you can abort the work item, complete it anyway, or skip. The default is throw. However, in our Channel, we only ever log the error. We should probably similarly allow for the exception to be wrapped and thrown here too. Thought should be given in changing the default behavior, however, to line up with our WorkItemHandler.