private void run() throws Exception { ConfigurationContext configurationContext = generateConfigContext(); ServiceClient serviceClient = new ServiceClient(configurationContext, null); // String replyAddress = serviceClient.getMyEPR(Constants.TRANSPORT_HTTP).getAddress() + "/" + // ServiceClient.ANON_OUT_ONLY_OP; String acksToAddress = serviceClient.getMyEPR(Constants.TRANSPORT_HTTP).getAddress(); Options clientOptions = new Options(); setUpOptions(clientOptions, acksToAddress); serviceClient.setOptions(clientOptions); serviceClient.fireAndForget(getPingOMBlock("ping1")); serviceClient.fireAndForget(getPingOMBlock("ping2")); serviceClient.fireAndForget(getPingOMBlock("ping3")); boolean complete = false; while (!complete) { SequenceReport sequenceReport = SandeshaClient.getOutgoingSequenceReport(serviceClient); if (sequenceReport != null && sequenceReport.getCompletedMessages().size() == 3) complete = true; else { try { Thread.sleep(1000); } catch (InterruptedException e1) { e1.printStackTrace(); } } } SandeshaClient.terminateSequence(serviceClient); Thread.sleep(3000); configurationContext.getListenerManager().stop(); serviceClient.cleanup(); }
@Override public void execute(WorkflowDTO workflowDTO) throws WorkflowException { if (log.isDebugEnabled()) { log.info("Executing Application creation Workflow.."); } super.execute(workflowDTO); try { ServiceClient client = new ServiceClient( ServiceReferenceHolder.getContextService().getClientConfigContext(), null); Options options = new Options(); options.setAction("http://workflow.application.apimgt.carbon.wso2.org/initiate"); options.setTo(new EndpointReference(serviceEndpoint)); if (contentType != null) { options.setProperty(Constants.Configuration.MESSAGE_TYPE, contentType); } else { options.setProperty( Constants.Configuration.MESSAGE_TYPE, HTTPConstants.MEDIA_TYPE_APPLICATION_XML); } HttpTransportProperties.Authenticator auth = new HttpTransportProperties.Authenticator(); if (username != null && password != null) { auth.setUsername(username); auth.setPassword(password); auth.setPreemptiveAuthentication(true); List<String> authSchemes = new ArrayList<String>(); authSchemes.add(HttpTransportProperties.Authenticator.BASIC); auth.setAuthSchemes(authSchemes); options.setProperty(org.apache.axis2.transport.http.HTTPConstants.AUTHENTICATE, auth); options.setManageSession(true); } client.setOptions(options); String payload = "<wor:ApplicationApprovalWorkFlowProcessRequest xmlns:wor=\"http://workflow.application.apimgt.carbon.wso2.org\">\n" + " <wor:applicationName>$1</wor:applicationName>\n" + " <wor:applicationTier>$2</wor:applicationTier>\n" + " <wor:applicationCallbackUrl>$3</wor:applicationCallbackUrl>\n" + " <wor:applicationDescription>$4</wor:applicationDescription>\n" + " <wor:tenantDomain>$5</wor:tenantDomain>\n" + " <wor:userName>$6</wor:userName>\n" + " <wor:workflowExternalRef>$7</wor:workflowExternalRef>\n" + " <wor:callBackURL>$8</wor:callBackURL>\n" + " </wor:ApplicationApprovalWorkFlowProcessRequest>"; ApplicationWorkflowDTO appWorkFlowDTO = (ApplicationWorkflowDTO) workflowDTO; Application application = appWorkFlowDTO.getApplication(); String callBackURL = appWorkFlowDTO.getCallbackUrl(); payload = payload.replace("$1", application.getName()); payload = payload.replace("$2", application.getTier()); payload = payload.replace("$3", application.getCallbackUrl()); payload = payload.replace("$4", application.getDescription()); payload = payload.replace("$5", appWorkFlowDTO.getTenantDomain()); payload = payload.replace("$6", appWorkFlowDTO.getUserName()); payload = payload.replace("$7", appWorkFlowDTO.getExternalWorkflowReference()); payload = payload.replace("$8", callBackURL != null ? callBackURL : "?"); client.fireAndForget(AXIOMUtil.stringToOM(payload)); } catch (AxisFault axisFault) { log.error("Error sending out message", axisFault); throw new WorkflowException("Error sending out message", axisFault); } catch (XMLStreamException e) { log.error("Error converting String to OMElement", e); throw new WorkflowException("Error converting String to OMElement", e); } }