Starting a Business Service — Service Connector API Example (Java)

An example is provided that illustrates starting a business service using the method calls available in the Service Connector API.

The step numbers in the comments correspond to the steps in the illustration Starting a Business Service.

private void startBusinessServiceExample()
{
try { // Get all the business service categories that are available ListCategoriesResponse categories = serviceConnectorInstance.getBusinessService().listCategories(Long.valueOf(0), Long.valueOf(0), true, null, true, null);
// Step 1: For this example we will pick the first category
if (categories.getCategoryArray() != null && categories.getCategoryArray().length > 0) {
// Query the business services for a particular category ( and all child categories by adding "/**" )
QueryBusinessServicesResponse response = serviceConnectorInstance.getBusinessService() .queryBusinessServices(categories.getCategoryArray(0).getName() + "/**", null, true); if (response.getBusinessServiceTemplateArray() != null
&& response.getBusinessServiceTemplateArray().length > 0) {
// Get the first business service for the category BusinessServiceTemplate template = response.getBusinessServiceTemplateArray(0);
// Step 2: Start the first business service StartBusinessServiceResponse startResponse = serviceConnectorInstance.getBusinessService().startBusinessService(template, null, PayloadModeType.XML, Long.valueOf(0)); // Now we would use the forms API to open the Business Service and allow users to enter data // After form processing is complete update the business service with the new data // Build up a request context for the update call RequestContext requestContext = RequestContext.Factory.newInstance();
// We need a Process Reference for the context ProcessReference ref = ProcessReference.Factory.newInstance(); ref.setId(startResponse.getPageResponse().getContext().getProcessReference().getId()); // We also need an Activity Reference for the context // For this example we will update the first activity in the business service
ActivityReference actRef = ActivityReference.Factory.newInstance(); actRef.setActivityId(startResponse.getPageResponse().getPageDataArray(0).getPageReference()
.getActivityId()); actRef.setActivityModelId(startResponse.getPageResponse().getPageDataArray(0).getPageReference()
.getActivityModelId()); actRef.setActivityName(startResponse.getPageResponse().getPageDataArray(0).getPageReference() .getActivityName()); actRef.setModuleName(startResponse.getPageResponse().getPageDataArray(0).getPageReference() .getModuleName()); actRef.setModuleVersion(startResponse.getPageResponse().getPageDataArray(0).getPageReference().getModuleVersion());
actRef.setProcessName(startResponse.getPageResponse().getPageDataArray(0).getPageReference()
.getProcessName()); // update the request context with the Process Reference and Activity ReferencerequestContext.setProcessReference(ref); requestContext.setActivityReference(actRef);
// setup the data payload with the new business service data, normally
// we would get this back when the form is closed or submitted DataPayload payload = DataPayload.Factory.newInstance();
payload.setPayloadMode(PayloadModeType.JSON); payload.setSerializedPayload("");
// Step 3: Update the business service UpdateBusinessServiceResponse updateResponse = this.serviceConnectorInstance.getBusinessService() .updateBusinessService(requestContext, null, PayloadModeType.XML); print(updateResponse); } }
} catch (com.tibco.n2.busserv.services.InternalServiceFault e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (com.tibco.n2.busserv.services.InvalidArgumentFault e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (com.tibco.n2.busserv.services.PageFlowExecutionFault e) { // TODO Auto-generated catch block e.printStackTrace(); } }