Injecting a Business Service Event — Service Connector API Example (Java)
An example is provided that illustrates injecting data into a business service using method calls available in the Service Connector API.
The step numbers in the comments correspond to the steps in the illustration Injecting a Business Service Event.
private void injectBusinessServiceEventExample() { try { // Step 1: List the available business services ListBusinessServicesResponse businessServicesList = serviceConnectorInstance.getBusinessService() .listBusinessServices(Long.valueOf(0), Long.valueOf(0), true, null, true, null); print(businessServicesList); // Step 2: Start the business service // First we setup a BusinessServiceTemplate with details of the service to start // Normally these would be retrieved by parsing the businessServicesList returned from the listBusinessServices call, // in this example we are hard-coding the value BusinessServiceTemplate template = BusinessServiceTemplate.Factory.newInstance(); template.setModuleName("/TestBS/Process Packages/ProcessPackage.xpdl"); template.setProcessName("CatchEventBS"); template.setVersion("1.0.0.201108111511"); // Start the service StartBusinessServiceResponse startResponse = serviceConnectorInstance.getBusinessService() .startBusinessService(template, null, PayloadModeType.XML, Long.valueOf(0)); // Step 3: Inject the event // First we setup an event containing the business service details and the name of the event EventDefinitionType event = EventDefinitionType.Factory.newInstance(); // Details of business service event.setModuleName(template.getModuleName()); event.setProcessName(template.getProcessName()); // Name of the event event.setEventName("IntermediateEvent"); // The ID of the service we just started event.setProcessInstanceId(startResponse.getPageResponse().getContext().getProcessReference().getId()); // Now we need to setup the data to inject into the event the data is contained in a DataPayload DataPayload payload = DataPayload.Factory.newInstance(); payload.setPayloadMode(PayloadModeType.XML); // The DataModel contains FieldType values for each parameter we are passing DataModel model = DataModel.Factory.newInstance(); // Add a new In/Out field type and set its name, the parameter name is defined in the service in Business Studio FieldType field = model.addNewInouts(); field.setName("Parameter"); // For the field we must set the simple value, in this case it is a simple field type SimpleSpec simpleSpec = field.addNewSimpleSpec(); XmlString value = simpleSpec.addNewValue(); value.setStringValue("Example Value"); // Add the DataModel to the DataPayload payload.setXmlPayload(model); // Now we inject the event passing the event details, the data payload and the respose feed type InjectBusinessServiceEventResponse injectResponse = serviceConnectorInstance.getBusinessService() .injectBusinessServiceEvent(event, payload, PayloadModeType.XML); } catch (InternalServiceFault e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvalidArgumentFault e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (PageFlowExecutionFault e) { // TODO Auto-generated catch block e.printStackTrace(); } }
Copyright © Cloud Software Group, Inc. All rights reserved.