JavaScript kullanarak bir REST hizmeti çağırma

Bir hizmet akışındaki komut dosyası görevinden REST hizmetini çağırma Bu, bir hizmet akışında bir hizmet görevinin somutlaması olarak seçilemeyen hizmet işlemlerini çağırmanızı sağlar.

Bu görev hakkında

Bir REST hizmetini çağırmak için JavaScript komutunu kullanarak, giriş değiştirgelerini, istek üstbilgilerini, kimlik doğrulama bilgilerini, çıkış değiştirgelerini işleme ve işleme hatalarını ayarlama üzerinde daha fazla yeteneğe ve denetime sahip olun.

Yordam

  1. REST hizmetini çağırmak için gerekli çağırma kimlik bilgileri ve REST hizmeti için OpenAPI (eski adıyla Swagger) belirtim dosyasının URL 'sine ya da yerel bir kopyasına sahip olduğunuzdan emin olun.
  2. Bir dış hizmet oluşturun ve hangi işlemlerin desteklendiğini keşfedin:
    1. Tasarımcı uygulamasını açın ve Hizmetler > + > Dış Hizmet > Var olan bir hizmeti keşfedinseçeneğini belirleyin ve giriş olarak OpenAPI belirtim dosyasını seçin. Dış REST hizmetinin keşfedilmesiyle ilgili daha fazla bilgi için REST hizmetini Başlatmabaşlıklı konuya bakın.
    2. Keşfedilen işlemlerden herhangi biri bir hizmet görevinden çağrılamıyorsa, ek bilgi için Açıklamayı görüntüle düğmesini tıklatabilirsiniz. Çağırmak istediğiniz keşfedilen hizmet işlemi, bir hizmet akışındaki bir hizmet görevinin somutlaması olarak seçilebilir; bu daha basittir. application/json (ya da application/x-www-form-urlencoded ilkel değerlerle ya da ilkel değerlerle dizilerle ya da text/plain şema tipi dizgiyle) dışındaki tipleri kullanmak istiyorsanız, hizmeti çağırmak için JavaScript API 'sini kullanmanız gerekir.
    3. Çağırmak istediğiniz REST hizmeti hakkında işlem adı, parametreler (üstbilgiler dahil), güvenlik gereksinimleri ve yanıt nesnesi yapısı gibi gerekli bilgileri bulmak için, OpenAPI belirtim kaynağını görüntülemek üzere Dış hizmet ' in Kaynak sekmesini tıklatın.
      Hizmet hakkında diğer bilgiler için dış hizmete ilişkin REST sunucusu yapılandırmasına bakın.
  3. Çağırmak istediğiniz REST hizmetine ilişkin sunucu sertifikasını denetleyin.
    JavaScript kullanarak REST sunucusunun bir parçası olarak belirtilen herhangi bir SSL yapılandırmasını geçersiz kılabilirsiniz.
    1. Sunucu sertifikası bir genel sertifika yetkilisi tarafından imzalandıysa, PublicInternetSSLSettingsadlı önceden yapılandırılmış SSL yapılandırmasını kullanabilirsiniz.
    2. Sunucu sertifikası, önceden yapılandırılmış SSL yapılandırmasında yer alan genel sertifika yetkililerinden biri tarafından imzalanmamışsa, bir yönetici bu hizmet için yeni bir SSL yapılandırması oluşturmalı ve sunucu sertifikasını yeni bir güvenli depoya aktarmalıdır. Bkz. İşletim bulutu ortamları.
  4. Önceden tanımlanmış bir hizmet akışınız varsa, seçin. Aksi takdirde Hizmetler > + > Hizmet akışıseçeneklerini tıklatarak bir hizmet akışı oluşturun. Hizmet akışı oluşturma hakkında daha fazla bilgi için bkz. Hizmet akışı oluşturma.
  5. Hizmet akışınıza bir komut dosyası görevi ekleyin.
  6. Aşağıdaki eylemleri gerçekleştirmek için komut dosyası görevine JavaScript ekleyin.
    1. İstek nesnesinin yeni bir örneğini oluşturun. Örnek:
      var request = new BPMRESTRequest();
    2. İstek nesnesinin özniteliklerini zorunlu dış hizmet adı, işlem adı, HTTP üstbilgileri ve işleme ilişkin parametreler ve kimlik bilgileri ve SSL yapılandırma adı gibi isteğe bağlı öznitelikler gibi gereken şekilde ayarlayın.
      İstek nesnesinde belirttiğiniz öznitelikler, REST sunucusunun bir parçası olarak belirtilen karşılık gelen değerleri ve tasarımcıdaki dış hizmet için bağ tanımını geçersiz kılar.
      İstek nesnesi aşağıdaki öznitelikleri içerir:
      externalServiceName
      REST hizmetinin adı. Örneğin:
      request.externalServiceName = "language-translator-v2";
      operationName
      OpenAPI belirtim dosyası, çağırmak istediğiniz işlem için bir operationId belirtiyorsa, bunu operationNameolarak belirtmeniz gerekir; aksi takdirde, httpMethod ve pathbelirtmeniz gerekir. Örneğin:
      request.operationName="checkout";
      httpMethod ve path
      OpenAPI belirtim dosyası işlem için bir operationId belirtmiyorsa, çağrılacak işlemi tanımlamak için operationName özelliği yerine HTTP yöntemini ve yolunu belirtmeniz gerekir. Örneğin:
      request.httpMethod = "GET";
      request.path = "/v1/orders";
      endpointAddress
      İsteğe bağlı olarak, OpenAPI belirtim dosyasında belirtilen şema, anasistem adı, kapı ve temel yolu geçersiz kılar. Örneğin:
      request.endpointAddress = "https://localhost:9080/restBasePath";
      httpHeaders
      HTTP üstbilgilerini belirten bir JSON nesnesi. Örneğin:
      request.httpHeaders = {"Content-Type": "application/json", 
                             "Accept": "text/plain"};
      Önemli: Çağırmak istediğiniz işlemin bir gövde parametresi varsa, sağladığınız içerik tipiyle eşleşecek Content-Type üstbilgisini belirtmeniz gerekir; tersi durumda, beklenmedik sonuçlar alabilirsiniz. İstek üstbilgisi alan adları ve değerleri doğrulanmadı.
      formDataiçin:
      • Bir dosya içeriyorsa, içerik tipi çok parçalı/form verisi belirtin.
      • Dosya içermiyorsa, içerik tipi çok parçalı/form-veri ya da uygulama/x-www-form-urlenkodlu belirtin.
      Önemli: HTTP üstbilgisinde bir API anahtarı belirtirseniz, hizmet görevinin veri eşleme sekmesinde belirtilen ve dış REST hizmeti bağ tanımı sekmesinde belirtilen API anahtarını geçersiz kılan dinamik API anahtarını geçersiz kılar.
      parameters
      İşlem için gerekli tüm parametreleri içeren bir JSON nesnesi. Örneğin:
      request.parameters = {"priority": "high",
                            "customer": "Max", 
                            "age" : 23};
      Parametreler karmaşık tipler de olabilir. Bu durumda, bunları aşağıdaki yollardan biriyle belirtin:
      request.parameters = {"priority": "high",
                            "customerInfo": { "customerFirstName" : "Max",
                                              "customerLastName" : "Smith",
                                              "amount" : 100.56,
                                              "isActive" : true }};
      veya
      request.parameters = {"priority": "high",
                            "customerInfo": tw.local.customerInfo};
      Burada customerInfo değişkeni, customerLastName (String), customerFirstName (String), amount (Decimal) ve isActive (Boolean) özellikleriyle karmaşık tipte CustomerInfo' dur.
      Önemli: Karmaşık bir tip içindeki integer tipinde bir özelliğin tamsayı olarak doğru yorumlandığından emin olmak için, Integertipinde bir değişken olarak belirtilmesi gerekir.
      requestTimeout
      İstek zamanaşımına uğrayana kadar beklenecek süre (milisaniye). Örneğin:
      request.requestTimeout = 2000;
      responseTimeout
      Yanıtın zamanaşımına uğraması için beklenecek süre (milisaniye). Örneğin:
      request.responseTimeout = 7200;
      username ve password
      Temel kimlik doğrulaması kullanılırken kullanıcı adı ve parola. Örneğin:
      request.username = "user";
      request.password = "password";
      invocationCredential
      Temel kimlik doğrulaması için username ve password yerine çağırma kimlik bilgilerini sağlayın. Örneğin:
      request.invocationCredential = "MyAuthenticationAlias";
      sslConfiguration
      Kullanılacak SSL yapılandırmasının adı. Örneğin:
      request.sslConfiguration = "MySSLConfiguration";
      Önemli: Başarılı bir REST çağrısı için gerekli olan doğru değerleri geçirdiğinizden emin olun. Değerler, REST hizmetine geçerlilik denetimi olmadan geçirilir.
    3. İsteği nesnesinde tw.system.invokeREST() işlevini çağırmak için, sonucu BPMRESTResponse()tipinde yeni bir yanıt nesnesine atayın.
      Örneğin:
      var response = tw.system.invokeREST(request);
      İpucu: Aşağıdaki hatayı alırsanız:
      javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.h:
      PKIX path building failed ...
      Yöneticinizin bir SSL yapılandırması oluşturmasını ve sunucu sertifikasını içe aktarmasını (adım 3.b) istemeniz gerekir.
      İpucu: Aşağıdaki hatayı alırsanız:
      javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake

      SSL yapılandırmasında belirtilen SSL/TLS iletişim kuralı ile sunucu tarafından desteklenen SSL/TLS iletişim kuralları aralığı eşleşmiyor. SSL konfigürasyonunun Koruma kalitesi (QoP) ayarları bölümünde, sunucu denetimcinizden SSL/TLS iletişim kuralını değiştirmesini sağlamanız gerekir.

    4. Yanıtın gerektiği gibi işlenmesi.
      Genellikle isteğin başarılı olup olmadığını görmek için HTTP durum kodunu denetleyebilirsiniz. Bir hata varsa, komut dosyası görevinin kendisinde bu hatayı işleyebilir ya da hizmet akışınızda farklı hataların işlenmesine izin vermek için değişkenlere değerler atayabilirsiniz. Java komut dosyanızdaki kural dışı durumları try/catch öbeğini kullanarak da yakalayabileceğinizi unutmayın; tersi durumda, kural dışı durum komut dosyasını sona erdirir. Aşağıdaki örnek kod parçacığı, komut dosyası görevinizdeki yanıtın içeriğinin yanı sıra, HTTP durum koduna, HTTP durum iletisine, yanıtın HTTP üstbilgilerine nasıl erişileceğini gösterir.
      // Evaluate the response and process as necessary
      var httpStatusCode = response.httpStatusCode;
      var httpStatusMessage = response.httpStatusMessage;
      var httpHeaders = response.httpHeaders;
      var content = response.content;
      Unutma: Yanıtları doğrudan bir hizmet akışı değişkeninde saklayamazsınız; bu hata üretebilir Java Class com.lombardisoftware.core.script.js.BPMRESTResponseScriptable is not registered as supported class for the SymbolTable. Bunun yerine, bu nesnenin özelliklerini alabilir ve bunları hizmet akışı değişkenlerinde tek tek ya da bir İş Nesnesi 'nin bir parçası olarak saklayabilirsiniz.
      İpucu: Hata işleme koduna örnek için bkz. REST hizmeti hatalarını işleme.
    BPMRESTRequest() istek nesnesi ve BPMRESTResponse yanıt nesnesi hakkında daha fazla bilgi için bkz. JavaScript API.
  7. Kaydet ya da Düzenlemeyi Bitirdüğmesini tıklatın.