

BPEL implementation. draft. 1Mile


On the first stage we need to establish basic functionality of BPEL. This should include uploading BPEL projects, some simple but stateful model of BPEL processing. At least async "Hello World!" project must work. 


1. Generator

bif procedure for uploading BPEL process.

The Generator reads project .xml file (like in Collaxa) and finds .bpel and .wsdl files for BPEL process, generates all needed services and publishes them.

All BPEL driven services are stubs to one common processing service (Invoker) which handle the process state and continues freezed processes.

The process is represented by piece of persistent xml which will be used to make various actions.

The generator also checks .bpel .wsdl agains apropriate xml schema, performs several checks for logical consistency, fill tables with initial values. Puts the processor in the initial state.

2. Process Flow
Each process takes only one thread (or each user takes only one thread?).
At the special points (receive, invoke, link) flow creates wait object and tries to switch to concurrent operation. If there is no any concurrent operations the flow tries to find signaled waits, processes them, goes to freezed state.
Timeouts - put the wait into signaled state.

	2.1. Processing the signaled wait or the concurrent operation.
	Load the process flow xml. find the node. perform node's operations (assigment, invoke...).
	2.1.1 assigment. - obviously
	2.1.2 invoke. call remote service. wait for the result. if it is linked, put connected wait object into the signaled state.
	2.1.3 receive in code. create wait object.
	2.1.4 message has been received. search for the wait object. follows like 2.1.1

	2.2 <flow>
		
	2.3 <links>
	

3. scopes
scope represents the context of activity. Each variable, correlation resolved with scope prefix. Each scope has an reference to upper scope to establish nesting.

4. faultHandlers
will be in the 2Mile.

5. compensation
2Mile.	

	
	
	
		
	
	
	

	
	
	
	
	
	
	
	
