FORUMS


Discussion about Intalio|BPP Community Edition.


Back to BPMN and Designer (0 viewing) 
Go to bottom Favoured: 0
TOPIC: Re:Wait for an external and non human event
Jul 2, 2008 1:27 am
11 posts
Fresh Boarder

Karma: 0  
Hi.

In the following scenarios:

Scenario 1:
I want to create a process that calls a webservice that performs a file transfer, this file transfer will take a very long time. In this case how long Intalio waits for the Webservice before the timeout exception is raised. Is there any way to configure this time out?.

Scenario 1:
Supose this Webservice is Asynchronous, this means the call just start the transfer but it returns inmediatly. After the transfer is done in some way the Webservice callbak telling the caller that the activity is ready. Is it possible to wait in Intalio for this event in a separe task to the one that called the webservice?
I am talking about a event driven scenario, this means wait for an external event same way Intalio wait for the workflow user interaction.

Thanks
 
 
Wilmer Cisneros.
CTO Graca Consultores.
  The administrator has disabled public write access.
Jul 2, 2008 1:44 am
dfrench (User)
367 posts
Platinum Boarder

Karma: 14  
Certainly recommend treating the file-transfer service asynch.
You could use a looping task/sub process within the business process execution to test if the file transfer is complete (sleep for N seconds between tests) but if you want to bind the business process closely to the business process, simply define a message to be sent from the external service and received in your executable process.
 
  The administrator has disabled public write access.
Jul 2, 2008 8:56 pm
11 posts
Fresh Boarder

Karma: 0  
Ok, great that is my initial idea.

But, how I can receive this answer or callback message in my process?.
What is the element, task o whatever artifact that I have to incorporate into my process in order to wait for that external event o message?. Of course as a part of a entire process that makes different things like transfer a file.
 
 
Wilmer Cisneros.
CTO Graca Consultores.
  The administrator has disabled public write access.
Jul 2, 2008 11:20 pm
dfrench (User)
367 posts
Platinum Boarder

Karma: 14  
Using the looping task approach you are not 'waiting on event' you are repeatedly testing whether the event has occurred. You need two operations defined in your file transfer service ... Invoke transfer starts the transfer (simply responding with ok) and Query returns the transfer state (complete/not complete/failed). You need the WSDL for this service first.

In the BPM you have a non executable pool representing the file transfer service and an executable process representing the business operation. Drop the two operations from the WSDL into the non executable pool. see the samples for examples of calling external services.

In the executable pool a looping subprocess is defined to continue while the Query operation replies with "incomplete state". If the Query operation replies with "incomplete state" then introduce a wait within the subprocess.
 
  The administrator has disabled public write access.
Jul 3, 2008 10:11 pm
11 posts
Fresh Boarder

Karma: 0  
Thanks for your answers.

Probably I was not clear enough.

For me, the loop approach is a ok but is not the optimal, as I comented before it was my initial idea.
I am looking for the even driven capability of intalio, if it exits in the product.
I want to model a process where a task waits for an external event to continue the flow without the need of looping an sleeping.

Is this possible or my only solution is this loop?.
 
 
Wilmer Cisneros.
CTO Graca Consultores.
  The administrator has disabled public write access.
Jul 3, 2008 11:58 pm
dfrench (User)
367 posts
Platinum Boarder

Karma: 14  
I was hoping that an expert might come up with some good advice here! Clearly, I think that closely coupling any service with the BPMS is a bad idea from a business architecture point of view. It will also add complexity to the conceptually simple file transfer operation because you probably need to make sure that the event signalled by the file transfer service has been processed ok before completing the file transfer service. I will be interested to know the benefits of doing it that way.

However, waiting on an event is what is happening throughout the Intalio BPMS operations when dealing with messages ... all you need to do is define the message and include it in your process flow as an intermediate message event. The source of the message is within a non-executable pool representing your external file transfer service. If you just design a simple process with an intermediate message event and start it, you will see the process wait for the intermediate message.

Intalio Designer will generate the WSDL that your external service needs to communicate with the business process.
You will need to use explicit correlation (so that the message goes to the right instance) ... there is a sample use of explicit correlation which may be a help.

David
 
  The administrator has disabled public write access.
Jul 4, 2008 3:04 am
dfrench (User)
367 posts
Platinum Boarder

Karma: 14  
Here is a project
File Attachment:
File Name: correlationwithexternalsvc.zip
File Size: 27936
which demonstrates a business process waiting on an intermediate message event that is triggered by an external service.
It is a simple voting process (for/against) where the business process is started from the console and will wait at the intermediate message event for a message with a matching Proposition string. You can use the wsdl in the build folder to generate a test SOAPUI client to represent the external service. The external service receives a reply with the result of the two input messages to the process.

This may also be a clearer view of Explicit Correlation than the existing sample.
The Data Editor was used to create the correlate functionality by
1. correlation: $prop-corr
2. Property to be used in the correlation this:Proposition within namespace this="http://thisdiagram/Complexvariable"
3. mapping incoming message "receive" to correlation which also inititiates the business process instance
4. mapping incoming message "from svc" to correlation which looks for existing process instance


David
 
  The administrator has disabled public write access.
Jul 7, 2008 5:38 pm
11 posts
Fresh Boarder

Karma: 0  
Thanks David

This is the kind of help we always hope to find in these forums, thanks a lot.

Let me give you a brief of our model.

We are modeling a process that involves some file transfers between a system that initially process the data and then sends this processed data (via FTP) to a secondary system for a second processing.

The first system must wait for the end of the secondary system processing and receives a file transfer back with the results to continue the whole process.

In order to make possible the interaction between the Intalio process and the FTP We going to built asynchronous WebWServices to perform the file transfers.

The files to be transferred between the two system contains a bulk of records to be processed and the secondary system is a Mainframe, these are the main reasons why this data interchange must be performed using ftp.


I will take a look of your example especially all the related with correlation.

Wilmer.
 
 
Wilmer Cisneros.
CTO Graca Consultores.
  The administrator has disabled public write access.
Jul 7, 2008 9:35 pm
dfrench (User)
367 posts
Platinum Boarder

Karma: 14  
Thanks for taking the time to describe your business problem. It certainly helps me to visualise solution patterns and relate them to real world issues.
Life is easier if you have one system as the controller , that is the BPMS initiating actions on primary and secondary processing systems , then management of failure is in the BPMS looking at the whole process and the worker systems are isolated.
With the process systems communicating with BPMS through intermediate message events, the process systems need to be able to handle failure of the BPMS . That is, if a completion message is sent to the BPMS, does the BPMS handle it and what does the process do if BPMS has failed (retry message N times?).

There was a paper uploaded to Intalio about a similar file processing implementation which may give you other ideas.

David
 
  The administrator has disabled public write access.
Dec 17, 2009 1:19 pm
5 posts
Fresh Boarder

Karma: 0  
Hello,

the use case described in correlationwithexternalsvc.zip is exactly what I am looking for. I imported this sample into Intalio 6.0.2.014 but when I run the process and call the web service to send a message to the process, a timeout error occurs.

I tried to use Intalio Server and soapUI to call the webservices but results are the same -> timeout.

Can anyone tell me if that use case is actually working ?

Thanks

Francois
 
  The administrator has disabled public write access.
Go to top Post Reply
get the latest posts directly to your desktop

Top Posters

Last 30 days

  • estebanf (35)
  • madhav.vodnala (21)
  • scott.hebden (20)
  • kevin.fernandez (15)
  • ianoboa (9)
  • jigonzalez@vertice.es (8)
  • Antoine (6)
  • spyridoula.markopoulou (6)
  • gino.de.cock (5)
  • lars.roediger (5)

All time

  • Antoine (2754)
  • Shivanand (1194)
  • cshekhar (933)
  • psq (797)
  • metabyte (415)
  • jag (393)
  • dfrench (367)
  • arnaud (329)
  • jalateras (325)
  • talita.pezzi (254)

Show last 4 hrs - 12 hrs - 24 hrs

Copyright © Intalio, 1999-2010.