SOAP web hizmeti kullanılması

Bir istemci uygulaması, bir SOAP web hizmeti olarak bir karar hizmeti ruleset çağırabilir.

Başlamadan önce

İstemci uygulaması, bulut portalına ilişkin kimlik doğrulama kimlik bilgilerini iletmelidir (bkz. REST ve SOAP çağırımı için kimlik doğrulaması).

Not: Operational Decision Manager on Cloud , SOAP 1.1' i destekler. Daha sonra SOAP ' ın sürümlerini desteklemez.

Bu görev hakkında

Bir istemci uygulamasının bir SOAP web hizmeti olarak bir karar hizmeti kural kümesini çağırabilmek için, kural kümesi yolu için oluşturulan bir WSDL (Web Services Description Language; Web Hizmetleri Tanımlama Dili) dosyasından yetkili sunucu sınıfları yaratmanız gerekir. Bir WSDL dosyasının biçimi, onu oluşturan dilden bağımsızdır.

Yordam

  1. Karar hizmeti ruleset için bir WDSL dosyası edinin.
  2. WSDL dosyasından yetkili sunucu sınıfları oluştur.
  3. İstemci uygulamanızın kural kümesini çağırmak için yetkili hizmet sınıflarını kullanın.

Örnek

Kural Yürütme Sunucusu' dan bir WSDL dosyası almak için:
  1. Ruleset öğesini Rule Execution Serverolarak konuşlandırın.
  2. Kural Yürütme Sunucusu konsolunda, Gezgin sekmesine gidin.
  3. Navigator bölmesinde bir RuleApp' i tıklatın ve sonra karar hizmetinize karşılık gelen kural kümesini tıklatın.
  4. Ruleset Viewiçinde Retrieve HTDS Description File(HTDS Açıklama Dosyasını Al) seçeneğini tıklatın.
  5. Hizmet protokolü tipi olarak SOAP seçeneğini belirleyin.
  6. En son sürümlere ilişkin WSDL dosyasını oluşturmak için En son ruleset sürümü ve En son RuleApp sürümünü denetleyin.
  7. Karşıdan Yükledüğmesini tıklatın.
Bu yordam için, bilgisayarınızda Java™ EE Geliştiricileri için Eclipse IDE ' nin kurulu olması gerekir. Bir Java uygulamasından web hizmeti çağırmak için yetkili sınıf sınıfları oluşturmak için Web Tools Platform 'u içerir. Yetkili sunucu sınıflarını Apache ekseniyle oluşturmak için:
  1. Start Eclipse IDE for Java EE Developers and create a new Java Project ( Dosya > Yeni > Java Projesi) to host the proxy classes.
  2. WSDL dosyasını bu Java projesine kopyalayın.
  3. Dosya > Yeni > Diğer > Web Hizmetleri > Web Hizmeti İstemcisiöğelerini tıklatın.
  4. Web Hizmeti İstemcisi sihirbazında İleridüğmesini tıklatın.
  5. Hizmet tanımlaması için, WSDL dosyasına göz atın.
  6. Move the slider to select İstemci geliştirme.
  7. Under Yapılandırma, ensure Apache Ekseni is selected as the Web service runtime, and then select the Java project as the Client project where you want to host the proxy classes that are generated.
  8. Bitir'i tıklatın.
Aşağıdaki Java kodu örneği, MiniloanServiceRuleset yetkili sınıfını içe aktarır ve bir Java uygulamasından ruleset çağırır:
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);						
		}
	}

}