Ana içeriğe geç

Web Servisleri

Bir süreç harici bir sistemle iletişim kurmak zorundaysa web servislerini kullanın.

Emakin hem SOAP hem de REST entegrasyonlarını destekler:

  • SOAP servisleri süreç tanımının içinde kaydedilir ve ardından oluşturulan $Services yardımcılar aracılığıyla çağrılır.
  • REST servisleri genellikle doğrudan $Rest nesnesiyle çağrılır.

SOAP Servisi Kaydetme

  1. Süreç tasarımcısının web servisleri listesindeki artı (+) simgesine tıklayın.
  2. Servisin WSDL URL'sini girin.
  3. İletişim kutusunu onaylayın.

Servis otomatik olarak keşfedilir ve Emakin, kullanılabilir uç noktalar için çağrılabilir yöntem meta verileri oluşturur.

Test Modu URL'si Bu alan isteğe bağlıdır; boş bırakabilirsiniz. Test ortamında başka bir servis kullanmak istiyorsanız servisin URL'sini belirtebilirsiniz. İş akışı örneği test modundaysa bu adres otomatik olarak kullanılır. Test ve canlı servis tanımları aynı olmalıdır; aksi takdirde öngörülemeyen hatalar oluşabilir.

Hizmet Kimlik Doğrulaması

Bazı web servislerine erişmek ve servisi keşfetmek için temel kimlik doğrulaması gerekebilir. Bu durumda, servisi keşfetmeden veya çağırmadan önce alanadı yönetiminde eşleşen giden kimlik bilgisini kaydetmeniz gerekir.

Şunu kullanın: Kimlik Bilgilerini Düzenle, ardından:

  1. URL Kimlik Bilgileri bölümünü açın.
  2. Hedef servis adresi için bir kimlik bilgisi girdisi ekleyin.
  3. Hedef adresi, kullanıcı adını ve parolayı girin.
  4. Alanadı ayarlarını kaydedin.

Bu kimlik bilgileri kaydedildikten sonra servisi keşfettiğinizde ve yöntemlerinden herhangi birini çağırdığınızda, kimlik bilgileri otomatik olarak servise iletilir.

Servis Kod Örnekleri

Bir SOAP servisinin WSDL'si sürece eklendikten sonra, bu servis için otomatik olarak bir ayrıntılar sayfası oluşturulur. Bu sayfaya, süreç tasarım düzenleyicisinin ana sayfasındaki ilgili web servisi simgesine tıklayarak erişebilirsiniz.

Bu sayfada bir keşfet düğmesi ve web servisinin yöntemlerini listeleyen bir tablo bulunur. Web servisinde bir değişiklik yapıldığında, web servisi tanımınızı güncellemek için keşfet düğmesini kullanabilirsiniz.

Tüm yöntemleri görüntülemek için tablonun ayrıntılar düğmesine, bir yöntemin nasıl çağrılacağını gösteren kod örneğini görmek içinse yöntemin ayrıntılar düğmesine tıklayın. XML / JSON düğmesini kullanarak kod örneğinin girdi türünü XML ile JSON arasında değiştirebilirsiniz.

SOAP Servisini JSON Verileriyle Çağırma

1
2
3
var result = $Services.webServiceName.endPointName.methodName({
    date : '2018-01-01'
});

SOAP Servisini XML Verileriyle Çağırma

1
2
3
4
var result = $Services.webServiceName.endPointName.methodName(
        '<tem:query xmlns:tem="http://tempuri.org/">' +
        '<tem:date>2018-01-01</tem:date>' +
        '</tem:query>');

Servis Yanıtını Değerlendirme

SOAP web servisleri XML verileri döndürdüğünden, yanıt verisinin herhangi bir bölümünü işlemek için yanıt nesnesi üzerinde Emakin'in $XML yöntemlerini çağırabilirsiniz.

Web servisi yanıtının yapısına bağlı olarak, aşağıda gösterildiği gibi yanıt verisine bir ad alanı eklemeniz de gerekebilir.

1
2
3
4
5
6
7
8
9
var result = $Services.webServiceName.endPointName.methodName(...);

// register service namespace as default
result.AddNamespace('', 'http://somenamespace');

// select all elements
result.SelectAll('TablePath/RowPath', function (rowNode) {
    console.info(rowNode.Evaluate('property'));
});

SOAP Servisini Veri Kaynağı Olarak Kullanma

Web servisi kaydı, liste denetiminde (ör. Açılır Liste) veri kaynağı olarak da kullanılabilir.

Servis kaydedildikten sonra, "Web Service Query" türünde yeni bir veri kaynağı ekleyin.

Veri kaynağını düzenlemek için "Düzenle" düğmesine tıklayın. Servis yöntemi artık ekranda görüntülenir; servis yöntemi için girdi parametrelerini belirtin.

Özel SOAP Üstbilgileri

Tüm standart SOAP üstbilgileri sistem tarafından otomatik olarak işlenir; ancak bazı senaryolarda bilgi aktarımı için ek SOAP üstbilgileri ayarlamanız gerekebilir.

Servisi çağırırken, istek gövdesini belirttikten sonra üstbilgi gövdesi için ikinci bir nesne verebilirsiniz. Servis tanımında adı eşleşen bir üstbilgi varsa belirtilen değer SOAP iletisine aktarılır.

1
2
3
4
5
var result = $Services.webServiceName.endPointName.methodName({
    date : '2018-01-01'
}, {
    MyHeader: 'MyHeaderValue'
});

Servis Uç Noktası URL'sini Geçersiz Kılma

Varsayılan olarak, SOAP web servisi çağrıları için servis uç noktası URL'si sağlanan WSDL'den (Web Services Description Language) otomatik olarak belirlenir. Ancak özel dağıtım ortamları veya test gibi senaryolarda, otomatik belirlenen bu uç noktanın geçersiz kılınması gerekebilir. Emakin, servis çağrısı için hedef URL'yi açıkça tanımlama seçeneği sunar.

Varsayılan servis uç noktası URL'sini geçersiz kılmak için servis çağrınızda üçüncü bağımsız değişken olarak ek bir seçenekler nesnesi belirtebilirsiniz. Bu seçenekler nesnesinde url istenen uç noktayı belirtmek için özellik kullanılır.

1
2
3
4
5
6
7
var result = $Services.webServiceName.endPointName.methodName({
    date : '2018-01-01' // Request body parameters
}, {
    MyHeader : 'MyHeaderValue' // Custom Headers, optional
}, {
    url : 'http://mysoapservice:8080/' // Overrides the service endpoint URL
});

Bu örnekte:

  • $Services.webServiceName.endPointName.methodName bir web servisindeki belirli bir yöntemin çağrılmasını ifade eder.
  • İlk bağımsız değişken { date : '2018-01-01' } servis yönteminin istek gövdesi veya parametreleridir.
  • İkinci bağımsız değişken { MyHeader: 'MyHeaderValue' } özel HTTP üstbilgileri için isteğe bağlı bir nesnedir.
  • Üçüncü bağımsız değişken { url: 'http://mysoapservice:8080/' } seçenekler nesnesidir; burada url servis uç noktasını açıkça http://mysoapservice:8080/olarak ayarlamak için kullanılır. Bu URL, servisin WSDL'sinde tanımlanan tüm uç noktalara göre önceliklidir.

SOAP Servisi Tanılaması

Bazı durumlarda hata ayıklama veya tanılama amacıyla SOAP isteğini ve yanıtını izlemeniz gerekebilir. Bu durumlarda servis yanıtı yerine ham isteği ve yanıtı almak için servis çağrısına üçüncü parametreyi ekleyebilirsiniz.

İsteği İzleme

1
2
3
4
5
6
7
var result = $Services.webServiceName.endPointName.methodName({
    date : '2018-01-01'
}, null, {
    "return": 'request'
});

// result is set to soap:Envelope with request body

Yanıtı İzleme

1
2
3
4
5
6
7
var result = $Services.webServiceName.endPointName.methodName({
    date : '2018-01-01'
}, null, {
    "return": 'response'
});

// result is set to soap:Envelope with response body