IBM BPM, V8.0.1, All platforms > Programming IBM BPM > Developing using the web service API > Samples

Reading business data from a process instance

The following sample shows how to use the web API to read business data from a process instance.

See the "completing a task" sample to learn how to access data for an instance of an activity (task).

For this sample to work, you must import CustomerService.zip into Process Designer and then start a few instances of the Customer Service Process BPD. You can find the CustomerService.zip file in the following directory: INSTALL_ROOT/BPM/Lombardi/web-api/samples.

package teamworks.samples.scenarios;

import com.lombardisoftware.webapi.BusinessData;
import com.lombardisoftware.webapi.ProcessInstanceStatus;
import com.lombardisoftware.webapi.Search;
import com.lombardisoftware.webapi.SearchColumn;
import com.lombardisoftware.webapi.SearchCondition;
import com.lombardisoftware.webapi.SearchOperator;
import com.lombardisoftware.webapi.SearchResults;
import com.lombardisoftware.webapi.Variable;
import com.lombardisoftware.webapi.WebAPI;

/**
 * This scenario illustrates how to read business data from a process instance.
 * See the Checkin scenario for an example of accessing data for an activity  * instance (task).   This scenario requires importing the CustomerService.zip 
 * sample process and creating a few instances of that process.
 */
public class ReadProcessInstanceBusinessData extends Scenario {
    
    /**
     * Scenario 1: Retrieve a flattened complex type from the 
     * top-level process context of a process instance      */
    public void testScenario1() throws Exception {
        // Create a new WebAPI client stub
        WebAPI webAPI = getWebAPIFactory().newWebAPI();
        
        // Find an active process instance that is visible to the user         SearchResults results = webAPI.executeSearch(buildCustomerServiceInstancesSearch(), 1, null);
        if (results.getRows().length > 0) {
            long processInstanceId = (Long) results.getRows()[0].getValues()[0];
            
            // Find the customer object defined in the top level process             BusinessData[] contexts = webAPI.getProcessInstancesBusinessData(new long[]{processInstanceId});
            
            System.out.println("Found " + contexts.length + " matching contexts");            
            for(BusinessData context : contexts) {         
                for(Variable variable : context.getVariables()) {
                    System.out.println(variable.getName() + "=" + variable.getValue());
                }             }         }         else {
            System.out.println("No matching process instance found");
        }     }     
    private Search buildCustomerServiceInstancesSearch() {
        Search search = new Search();
        search.setOrganizedByType("ProcessInstance");
        search.setColumns(new SearchColumn[] {
                new SearchColumn("ProcessInstance", "Id", null)
        search.setConditions(new SearchCondition[] {
                new SearchCondition(
                        new SearchColumn("Process", "Name", null),                         SearchOperator._EQUALS,                         "Customer Service Process"
                        ),                
                new SearchCondition(
                        new SearchColumn("ProcessInstance", "Status", null),                         SearchOperator._EQUALS,                         ProcessInstanceStatus._Active
                        )                
        return search;
    } }

Samples