Utilizzo di un servizio web SOAP

Un'applicazione client può richiamare un set di regole del servizio decisioni come servizio web SOAP.

Prima di iniziare

L'applicazione client deve trasmettere le credenziali di autenticazione per il portale cloud (vedere Autenticazione per l'invocazione REST e SOAP ).

Nota:Operational Decision Manager on Cloud supporta SOAP 1.1. Non supporta le versioni successive di SOAP.

Informazioni su questa attività

Affinché un'applicazione client possa richiamare un set di regole del servizio decisioni come servizio Web SOAP, è necessario creare classi proxy da un file WSDL (Web Services Description Language) generato per il percorso del set di regole. Il formato di un file WSDL è indipendente dal linguaggio che lo genera.

Procedura

  1. Ottenere un file WDSL per un set di regole del servizio decisionale.
  2. Genera classi proxy dal file WSDL.
  3. Utilizza le classi proxy per richiamare il set di regole dalla tua applicazione client.

Esempio

Per ottenere un file WSDL dal Rule Execution Server :
  1. Distribuisci il set di regole al Rule Execution Server.
  2. Nella console Rule Execution Server, passare alla scheda Explorer.
  3. Nel riquadro Navigator, fare clic su RuleApp, e quindi fare clic sul set di regole corrispondente al servizio di decisione.
  4. Nella vista delle regole, fare clic su Recupera file di descrizione HTDS.
  5. Selezionare SOAP come tipo di protocollo di servizio.
  6. Controllare l'ultima versione del set di regole e l'ultima RuleApp versione per generare il file WSDL per le versioni più recenti.
  7. Clicca su Scarica.
Per questa procedura, è necessario avere Eclipse IDE per sviluppatori Jakarta EE installato sul computer. Include la piattaforma Web Tools per generare le classi proxy per richiamare il servizio web da un'applicazione Java™. Per generare le classi proxy con Apache Axis:
  1. Avvia Eclipse IDE per gli sviluppatori Jakarta EE e crea un nuovo progetto Java ( File > Nuovo > Progetto Java ) per ospitare le classi proxy.
  2. Copiare il file WSDL in questo progetto Java.
  3. Fare clic su File > Nuovo > Altro > Servizi Web > Client servizi Web.
  4. Nella procedura guidata Client servizio Web, fare clic su Avanti.
  5. Per la definizione del servizio, selezionare il file WSDL.
  6. Sposta il cursore per selezionare Sviluppa cliente.
  7. In Configurazione, assicurarsi che Apache Axis sia selezionato come runtime del servizio Web, quindi selezionare il progetto Java come progetto client in cui si desidera ospitare le classi proxy generate.
  8. Fare clic su Fine.
Il seguente esempio di codice Java importa le classi proxy per MiniloanServiceRuleset e richiama il set di regole da un'applicazione Java:
import com.ibm.www.rules.decisionservice.MiniloanService.MiniloanServiceRuleset.MiniloanServiceMiniloanServiceRulesetBindingStub;
import com.ibm.www.rules.decisionservice.MiniloanService.MiniloanServiceRuleset.MiniloanServiceRulesetDecisionServiceProxy;
import com.ibm.www.rules.decisionservice.MiniloanService.MiniloanServiceRuleset.MiniloanServiceRulesetRequest;
import com.ibm.www.rules.decisionservice.MiniloanService.MiniloanServiceRuleset.MiniloanServiceRulesetResponse;
import com.ibm.www.rules.decisionservice.MiniloanService.MiniloanServiceRuleset.param.Borrower;
import com.ibm.www.rules.decisionservice.MiniloanService.MiniloanServiceRuleset.param.Loan;


public class DecisionServiceExecution {

	public static void main(String[] args) {
		
		// Replace <vhostname> with the name of the host of the Cloud portal
		// NB: endpointURI is defined in the location attribute of the WDSL file
		String endpointURI = "https://<vhostname>.bpm.ibmcloud.com/odm/dev/DecisionService/ws/MiniloanService/MiniloanServiceRuleset/v75";

		MiniloanServiceRulesetDecisionServiceProxy proxy = new MiniloanServiceRulesetDecisionServiceProxy(endpointURI);
		
		MiniloanServiceMiniloanServiceRulesetBindingStub stub = (MiniloanServiceMiniloanServiceRulesetBindingStub)proxy.getMiniloanServiceRulesetDecisionService_PortType();
	
		// Replace "loginID" with the functional ID of the service account you are using to authenticate with your tenant in the Cloud
		stub.setUsername("loginID");
		
		// Replace "password" with the password of the service account you are using to authenticate with your tenant in the Cloud
		stub.setPassword("password");
		
		// Set the borrower
		com.ibm.www.rules.decisionservice.MiniloanService.MiniloanServiceRuleset.Borrower borrower = 
				new com.ibm.www.rules.decisionservice.MiniloanService.MiniloanServiceRuleset.Borrower(
						"John", // name
						600, // credit score
						80000); // yearlyIncome
		
		Borrower borrowerParam = new Borrower(borrower);
		
		// Set the loan
		com.ibm.www.rules.decisionservice.MiniloanService.MiniloanServiceRuleset.Loan loan = 
				new com.ibm.www.rules.decisionservice.MiniloanService.MiniloanServiceRuleset.Loan(
						500000, // amount
						240, // duration
						0.05, // yearlyInterestRate
						0, // yearlyRepayment (to be computed by the decision service)
						true, // approved (set to true by default, to be computed by the decision engine),
						null); // messages (to be computed by the decision service)
		
		Loan loanParam = new Loan(loan);
		
		// Set the decision ID
		String decisionID = "1";
				
		MiniloanServiceRulesetRequest request = new MiniloanServiceRulesetRequest(decisionID, borrowerParam, loanParam);
		
		try {
			MiniloanServiceRulesetResponse response = proxy.miniloanServiceRuleset(request);
			System.out.println("Rules executed.");
			System.out.println("Approved: " + response.getLoan().getLoan().isApproved());
			System.out.println("Yearly interest rate: " + response.getLoan().getLoan().getYearlyInterestRate());
			System.out.println("Yearly repayment: " + response.getLoan().getLoan().getYearlyRepayment());
			String[] messages = response.getLoan().getLoan().getMessages();
			if (messages != null) {
				System.out.println("Messages: ");
				for (String message : messages) {
					System.out.println(message);
				}
			}
		}
		catch (Exception e) {
			throw new RuntimeException("An error occurred when invoking Decision Service at: "
										+ endpointURI, e);						
		}
	}

}