Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Stardust/Knowledge Base/API/JavaAPICookbook/FetchingPIandAIHistoricalEvents"

(Purpose)
(Solution)
Line 2: Line 2:
  
 
This article describes how to fetch Process Instance and Activity Instance related Historical Events like Time, Type and Details..etc, based on the defined Historical Event Policy.
 
This article describes how to fetch Process Instance and Activity Instance related Historical Events like Time, Type and Details..etc, based on the defined Historical Event Policy.
==== Solution<br>  ====
+
====<br>  ====
  
Approach 1:
+
Activity Instance Historical Events:
  
 
<source lang="java">
 
<source lang="java">
// For each provider model of main model
+
                ProcessInstanceFilter filter = new ProcessInstanceFilter(piOID); //Pass in the Process instance OID
for(long oid : mainModel.getProviderModels()){
+
// Get the model
+
          ActivityInstanceQuery query = new ActivityInstanceQuery();
DeployedModel providerModel = queryService.getModel(oid);
+
        query.where(filter);
// Get list of all organizations of provider model
+
query.setPolicy(HistoricalEventPolicy.ALL_EVENTS);
      List<OrganizationDetails> orgDetails =     providerModel.getAllOrganizations();
+
query.orderBy(ActivityInstanceQuery.START_TIME);
 +
 +
ActivityInstances actInstList = qs.getAllActivityInstances(query);
  
      for(OrganizationDetails orgDetail : orgDetails) {
+
for(ActivityInstance actInst: actInstList){
      System.out.println("Name" + orgDetail.getName());
+
ActivityInstanceHistory actHistory
    }
+
= new ActivityInstanceHistory(actInst.getOID(),
 +
          actInst.getActivity().getId(),
 +
  actInst.getHistoricalEvents());
 +
}
 
</source>
 
</source>
  
Approach 2:
+
Process Instance Historical Events:
 
+
You can download sample FilterableAttributeImpl java source from [https://wiki.eclipse.org/images/a/a2/FilterableAttributeImpl.zip here].
+
  
 
<source lang="java">
 
<source lang="java">
//Create Filterable query for Provider.
+
                ProcessInstanceQuery piQuery = ProcessInstanceQuery.findAlive();
 
+
                piQuery.setPolicy(HistoricalEventPolicy.ALL_EVENTS);
FilterableAttribute PROVIDER = new FilterableAttributeImpl(DeployedModelQuery.class, "provider");                
+
           
DeployedModelQuery query = DeployedModelQuery.findAll();
+
                ProcessInstances pis = qs.getAllProcessInstances(piQuery);
query.where(PROVIDER.isEqual("ACTIVE"));
+
                       
 
+
                  for (Iterator iterator = pis.iterator(); iterator.hasNext();) {
// Get all provider models
+
                        ProcessInstance pi = (ProcessInstance) iterator.next();
Models models = qs.getModels(query) ;
+
                        //log.info("PI: " + pi.getOID());
 
+
                        ProcessInstanceDetails details = (ProcessInstanceDetails)pi;
// For each model
+
                        List<HistoricalEvent> events = details.getHistoricalEvents();
for(DeployedModelDescription model : models) {
+
                       
    List<OrganizationDetails> orgDetails =     model.getAllOrganizations();
+
                        for (HistoricalEvent historicalEvent : events) {
      for(OrganizationDetails orgDetail : orgDetails) {
+
                            System.out.println("PI:" + pi.getOID() + " Event time:" +  historicalEvent.getEventTime());                                      
      System.out.println("Name" + orgDetail.getName());
+
                            System.out.println("PI:" + pi.getOID() + " historicalEvent type:" + historicalEvent.getEventType());                                       
    }
+
                            System.out.println("PI:" + pi.getOID() + " historicalEvent details :" +                      historicalEvent.getDetails());       
}
+
                                   
 +
                        }          
 +
                       
 +
                       
 +
                    }
 
</source>
 
</source>

Revision as of 01:11, 11 April 2014

Purpose

This article describes how to fetch Process Instance and Activity Instance related Historical Events like Time, Type and Details..etc, based on the defined Historical Event Policy.


Activity Instance Historical Events:

                 ProcessInstanceFilter filter = new ProcessInstanceFilter(piOID); //Pass in the Process instance OID
 
           	 ActivityInstanceQuery query = new ActivityInstanceQuery();
	         query.where(filter);
		 query.setPolicy(HistoricalEventPolicy.ALL_EVENTS);
		 query.orderBy(ActivityInstanceQuery.START_TIME);
 
		 ActivityInstances actInstList = qs.getAllActivityInstances(query);
 
			for(ActivityInstance actInst: actInstList){
				ActivityInstanceHistory actHistory 
					= new ActivityInstanceHistory(actInst.getOID(), 
					          actInst.getActivity().getId(), 
						  actInst.getHistoricalEvents());
			}

Process Instance Historical Events:

                ProcessInstanceQuery piQuery = ProcessInstanceQuery.findAlive();
                piQuery.setPolicy(HistoricalEventPolicy.ALL_EVENTS);
 
                 ProcessInstances pis = qs.getAllProcessInstances(piQuery);
 
                   for (Iterator iterator = pis.iterator(); iterator.hasNext();) {
                        ProcessInstance pi = (ProcessInstance) iterator.next();
                        //log.info("PI: " + pi.getOID());
                        ProcessInstanceDetails details = (ProcessInstanceDetails)pi;
                        List<HistoricalEvent> events = details.getHistoricalEvents();
 
                        for (HistoricalEvent historicalEvent : events) {
                            System.out.println("PI:" + pi.getOID() + " Event time:" +  historicalEvent.getEventTime());                                        
                            System.out.println("PI:" + pi.getOID() + " historicalEvent type:" + historicalEvent.getEventType());                                        
                            System.out.println("PI:" + pi.getOID() + " historicalEvent details :" +                      historicalEvent.getDetails());        
 
                        }           
 
 
                     }

Back to the top