Hi, ok - thank for you help.
Peter On Fri, Sep 3, 2010 at 4:48 PM, Tammo van Lessen <[email protected]>wrote: > Hi Peter, > > for any type of correlation there is currently no integrated mechanism > to clean up unmatched messages. > > However, you can setup a cron job that executes a SQL script that > deletes such messages. Look for old messages in BPEL_UNMATCHED and > delete connected entries in BPEL_MESSAGE_EXCHANGE, BPEL_MESSAGE, > BPEL_UNMATCHED and LARGE_DATA. > > Hope that helps, > Tammo > > On Thu, Aug 26, 2010 at 09:48, Peter Lanser <[email protected]> > wrote: > > Hi Tammo, > > > > first of all thanks for your answer and I'm really sorry for my late > reply. > > > > My aim is to assign an unique identifier for each conversation (ODE <---> > > external service), whereby this unique ID should be generated by ODE. I > > thought that instead of reinventing the wheel I could use those internal > > tokens (although these session identifiers don't seem to bee unique per > > call). > > > > However, when using explicit correlation, I've got the same problem: > > Messages which can't be routed to a workflow instance are not rejected > with > > a fault but saved to the DB. I've got the following setup with explicit > > correlation: > > > > <process> > > ... > > <partnerLinks> > > <partnerLink xmlns:ns="http://myapp.com/" myRole="me" name="myApp" > > partnerLinkType="ns:myApp" partnerRole="app"/> > > </partnerLinks> > > ... > > <correlationSets> > > <correlationSet name="myCorrelation" properties="tns:myCorrelation" /> > > </correlationSets> > > ... > > <assign> > > <copy> > > <!-- ... some other initual input variables are initialized here > ... > > //--> > > <from><literal>myUniqueCorrelationString<literal></from> > > <to part="correlation" variable="initRequest"/> > > </copy> > > </assign> > > <invoke inputVariable="initRequest" operation="myOperation" > > outputVariable="initResponse" partnerLink="myApp"> > > <correlations> > > <correlation set="myCorrelation" initiate="yes" > pattern="request"/> > > </correlations> > > </invoke> > > <pick> > > <onMessage operation="myCallback" partnerLink="myApp" > > variable="callbackResponse"> > > <correlations> > > <correlation set="myCorrelation" initiate="no"/> > > </correlations> > > ... > > </onMessage> > > </pick> > > ... > > </process> > > > > The operation myOperation is a two-way operation. myCallback is one-way. > > > > So when using explicit correlation - is there a way to reject callback > > requests using an invalid correlation string? > > > > BTW: In the above example I'm using "myUniqueCorrelationString". I always > > tested this with $ode:pid. I saw that there's an issue for adding > > ode:generate-guid() (or the like) which I think would fullfill my needs > for > > uniqueness per conversation [1]. > > > > Thanks for your help! > > > > Peter > > > > [1] https://issues.apache.org/jira/browse/ODE-839 > > > > > > > > On Fri, Aug 6, 2010 at 9:19 PM, Tammo van Lessen <[email protected] > >wrote: > > > >> Hi Peter, > >> > >> no, these implicit correlation tokens are internally used like explicit > >> correlation. Unmatched messages are queued for the case that the > >> corresponding receive has not yet been activated. So it's currently not > >> possible to reject such messages. > >> > >> What didn't work with explicit correlation in your case? > >> > >> Tammo > >> > >> On 04.08.2010 09:34, Peter Lanser wrote: > >> > Hello, > >> > > >> > using Apache ODE 1.3.4 I need to implement an asynchronous call to an > >> > external service. After hours of trial and error (and some > code-lookup) I > >> do > >> > not use explicit correlation any more, but rather the external service > is > >> > setting the session ID within the SOAP header. Basically it works - > all > >> > messages are routed correctly. The only problem is that messges with > an > >> > invalid session identifier are not rejected by ODE. They are saved to > the > >> DB > >> > instead. Within > >> > org.apache.ode.bpel.engine.PartnerLinkMyRole#noRoutingMatch(...) the > >> > incoming mex is tested whether it is asynchronous or not. Obviously > i'm > >> > reaching the synchronous branch... > >> > > >> > Is there a way to reject messages with an invalid session identifier? > >> > > >> > The asynchronous call looks something like this: > >> > > >> > ... > >> > <partnerLink myRole="me" name="app" partnerLinkType="..." > >> > partnerRole="app"/> > >> > ... > >> > <invoke inputVariable="request" operation="theOperation" > >> > outputVariable="initResponse" partnerLink="app"/> > >> > <pick> > >> > <onMessage operation="callback" partnerLink="app" > variable="response"> > >> > ... > >> > </pick> > >> > ... > >> > > >> > The operation invoked is a two-way operation. The callback operation > is > >> > one-way. > >> > > >> > Many thanks for your help! > >> > > >> > Peter > >> > > >> > >> -- > >> Tammo van Lessen - http://www.taval.de > >> > > > > > > -- > Tammo van Lessen - [email protected] - http://www.taval.de >
