I ve got a question regarding jBPM. In one of our projects I developed an enterprise service (.Net) that other systems (jBPM, Delphi, etc.) should receive data from. For this I am providing a SOAP interface.
Now there's a case that when the a jBPM system contacts the service, some manual work has to be done before the data the system needs can be returned. In this cas开发者_如何转开发e, the SOAP service returns a "ManualWorkTicketId". This id can then be used to poll the SOAP interface in let's say 1 minute intervals. As soon as the manual work has been done , the SOAP service is able to return the required data to the jBPM system. Since the enterprise service should not know about any systems and just provide a SOAP interface for communication, I see this as a good solution to handle the asnychronous part.
But the jBPM developer told me that this isn't a good approach. Instead he suggests to write the information in an ActiveMQ queue, that I should listen to. When then manual work is done, I have to write back to another queue the jBPM system provided me, where the message then is consumed by the jBPM process.
- question: Since I am not a jbpm developer, I was wondering if there isn't a standard pattern to handle the web service polling part within jBPM?
- question: Which approach would you suggest in such cases keeping in mind that the enterprise service should be loosely coupled?
If you implement a JMS queue, then I assume the Delphi developer will complain. SOAP is a good solution.
Take a look at this, and give it to the jBPM developer. (btw, are you using jbpm 3 or 4?)
If perfect timing isn't important, he can poll the SOAP service every X minutes and see the result.
精彩评论