Korzystanie z usługi Web Service SOAP
Aplikacja kliencka może wywoływać zestaw reguł usługi decyzyjnej jako usługę Web Service SOAP.
Zanim rozpoczniesz
Aplikacja kliencka musi przekazać referencje uwierzytelniania dla portalu w chmurze (patrz sekcja Uwierzytelnianie dla usługi REST i wywołanie SOAP).
Uwaga: Operational Decision Manager on Cloud obsługuje SOAP 1.1. Nie obsługuje on późniejszych wersji protokołu SOAP.
O tym zadaniu
Aby aplikacja kliencka wywoływała zestaw reguł usługi decyzyjnej jako usługę Web Service SOAP, należy utworzyć klasy proxy z pliku WSDL (Web Services Description Language) wygenerowanego dla ścieżki do zestawu reguł. Format pliku WSDL jest niezależny od języka, który go generuje.
Procedura
- Uzyskaj plik WDSL dla zestawu reguł usługi decyzyjnej.
- Generuj klasy proxy z pliku WSDL.
- Użyj klas proxy, aby wywołać zestaw reguł z aplikacji klienckiej.
Przykład
Aby pobrać plik WSDL z serwera Rule Execution Server:
- Wdróż zestaw reguł na serwerze Rule Execution Server.
- W konsoli Serwer Rule Execution Server przejdź do karty Eksplorator .
- W panelu Navigator kliknij pozycję RuleApp, a następnie kliknij zestaw reguł, który odpowiada usłudze decyzyjnej.
- W obszarze Widok zestawu regułkliknij opcję Pobierz plik opisu obiektu HTDS.
- Jako typ protokołu serwisowego wybierz SOAP .
- Zaznacz opcję Najnowsza wersja zestawu reguł i Najnowsza wersja RuleApp , aby wygenerować plik WSDL dla najnowszych wersji.
- Kliknij przycisk Pobierz.
W przypadku tej procedury na komputerze musi być zainstalowany produkt Eclipse IDE for Java™ EE Developers. Zawiera ona platformę narzędzi WWW do generowania klas proxy na potrzeby wywoływania usługi Web Service z poziomu aplikacji Java. Aby wygenerować klasy proxy dla osi Apache :
- Uruchom środowisko Eclipse IDE for Java EE Developers i utwórz nowy projekt Java ( ), aby udostępniać klasy proxy.
- Skopiuj plik WSDL do tego projektu Java.
- Kliknij opcję .
- W kreatorze Klient usługi Web Service kliknij przycisk Dalej.
- W przypadku definicji usługi przejdź do pliku WSDL.
- Przesuń suwak, aby wybrać opcję Utwórz klienta.
- W obszarze Configuration(Konfiguracja) upewnij się, że jako środowisko wykonawcze usługi Web Service wybrano Apache Axis , a następnie wybierz projekt Java jako projekt klienta, w którym mają być generowane wygenerowane klasy proxy.
- Kliknij przycisk Zakończ.
Następujący przykładowy kod Java importuje klasy proxy dla produktu
MiniloanServiceRuleset i wywołuje zestaw reguł z aplikacji 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);
}
}
}