[ 
https://issues.apache.org/jira/browse/ODE-91?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matthieu Riou closed ODE-91.
----------------------------


> Capturing Business Process Data through EventHandler
> ----------------------------------------------------
>
>                 Key: ODE-91
>                 URL: https://issues.apache.org/jira/browse/ODE-91
>             Project: Ode
>          Issue Type: New Feature
>          Components: BPEL Runtime
>    Affects Versions: 1.0-incubating
>            Reporter: Raja Balasubramanian
>             Fix For: 1.0-incubating
>
>         Attachments: Ode Business Data capture_proposal.doc, 
> ode_proposal_source.zip
>
>
> ODE Business Process Data capture through Event Listeners: Proposal
>  
> (Plaintext of the Proposal)
> It is necessary to get Business process data through events to track what's 
> going on with the process using the data flow. It's also useful for Business 
> Activity Monitoring (BAM) solution to get 'What's happening right now?' type 
> of data. 
> Currently ode fires events and can be captured through Event Listener 
> mechanism. But to get the data, we have to use pmapi (through web services).
> So, the proposal is to get the data, in Event listeners with out using the 
> web services. How to consume the events is up to the Event Handlers. 
> For that, we have to add a BpelEventContext in BpelEvent object, which will 
> carry the event context to the Event Listeners. The BpelEventContext 
> interface carries two public methods.
> 1.public String[] getVariableNames();
> 2.public String getVariableData(String varName);
> The getVariableNames() returns all variable names available in that event 
> context as an array of String. It will return null, if no variable is 
> available.
> The getVariableData(varName) returns the variable data, for the given 
> variable name, if exists and initialized, as a String representation of DOM 
> Node. Otherwise it will be null.
> The BpelEventContext implementation BpelEventContextImpl implements these 
> methods. It takes OScope object, scopeInstanceId and BpelRuntimeContext as 
> constructor parameters. Using these values, it's easy to return the variable 
> names and its data.
> In BpelEvent a public property is needed to carry the BpelEventContext. For 
> that purpose add the following in the BpelEvent.java
>       public transient BpelEventContext eventContext;
> To populate the context, in ACTIVITY.java, where the ScopeEvent got 
> populated, add the following method.
> /**
>  * Populate BpelEventContext, to be used by Registered Event Listeners
>  * @param event ScopeEvent
>  */
> protected void fillEventContext(ScopeEvent event)
> {
> BpelEventContext eventContext = new BpelEventContextImpl( 
> _scopeFrame.oscope,                                                      
> _scopeFrame.scopeInstanceId,
>                                         getBpelRuntimeContext());
>     event.eventContext = eventContext;
> }
> And in protected void sendEvent(ScopeEvent event), call this method to 
> populate the BpelEventContext.
> How to consume event data?
> Here is a code snippet to consume the event data.
> public void onEvent(BpelEvent event)
> {
>     if(event instanceof ActivityExecStartEvent)
>     {
>         try
>         {
>             String[] __names = 
> ((ActivityEvent)event).eventContext.getVariableNames();
>             if(__names != null)
>           {
>                System.out.println(">>>>>>> Variable Data...");
>                for(int i = 0; i < __names.length; i++)
>                {
>                    String varName = __names[i];
>                    System.out.println(">>>>>>> For Variable ..." + varName);
>            String data = ((ActivityEvent)event).eventContext. 
> getVariableData( 
>                                                                       
> varName);
>                    if(data != null)
>                    {
> System.out.println(DOMUtils.prettyPrint( 
> DOMUtils.stringToDOM(data)));
>                    }
>                    else
>                    {
>                        System.out.println(".....DATA Not Available......");
>                    }
>                }
>                System.out.println(">>>>>>> Variable Data  ENDS...");
>           }
>        }
>          catch(Exception e)
>        {
>           e.printStackTrace();
>        }
>     }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to