Sharepoint 2013 / Office 365 İş Akışları Web Servis Tetikleme

Sharepoint 2013 / Office 365 iş akışları üzerinde daha önceden üç çeşit iş akışı oluşturabildiğimize değinmiştik.

Bunlardan List Workflow örneğimizi daha önceki yazılarımızda örnek uygulama üzerinde gerçekleştirdik. Bu yazımız da ise Site Workflow’lar üzerinde Harici Web Servislerini tetiklemeyi göreceğiz.

Sharepoint Designer vasıtası ile sitemize bağlanıyoruz ve Navigation Pane’den Workflows’u seçiyoruz. Sharepoint designer üzerinde Ribbon Bar da üç adet workflow seçeneğimiz beliriyor ve biz bunlardan Site Workflow’u seçerek bir sonraki ekrana geçiyoruz.

Workflow’umuza bir isim vererek açıklamasını yazıyoruz ve OK diyerek devam ediyoruz. Burada OData Servisinin bize sağlamış olduğu örnek Northwind datasına bağlanacağız ve ürünleri listeleyeceğiz.

OK butonuna bastıktan sonra Sharepoint Designer Text Based Workflow Editor karşımıza açılacak ve artık mevcut komutları imlecin olduğu yerde yazarak yada Ribbon barda bulunan Action menüsü ile de Stage’imize ekleyebiliris.

Call yazarak Enter tuşuna basıyoruz ve sharepoint workflow designer bize otomatik olarak Call this http…. adında bir satır oluşturarak mevcut yerlere atamaları yapabileceğimiz hazır bir template action sunnuyor.


Burada yapacaklarımızı özetlemek gerekirse

Call This = Tıkladığımızda Web Servisin urlsini girebileceğimiz bir panel açılacaktır.
(ResponseContent to response.. = Dönen Response değerini atayabileceğimiz bir değişken oluşturur.
responseHeader = Post yada get yaparken http Header öğesini set edebileceğimiz bir Dictionary List oluşturmamıza olanak sağlar.
responseCode = Dönen değerin http response kodlarını tutabileceğimiz bir değişken oluşturmamıza izin verir. ( 404,405 …. Gibi status kodları)
* Mavi gördüğümüz yerlere tıklayarak açılan pencerelere gerekli değerleri girebiliriz.

This kısmına tıklayarak Web servis urlsini giriyoruz ve ok Tuşuna basıyoruz.

Aynı şekilde responseContetn kısmına da tıklayarak yeni bir değişken tanımlayarak dönden değerin bu değişkene atanmasını sağlıyoruz.


Bu değişkeni birden fazla item yada Json Array içereceğini düşünürsek Dictionary olarak düzenlemekte fayda var. Açılan pencerede değişkenimize isim veriyoruz ve tip olarak da Dictionary seçimini yaparak OK tuşuna basıyoruz.

Servis çağırma işlemimiz şimdilik bukadar. Sharepoint normalde bizim daha önceden kod ile yapmış olduğumuz HttpWebRequest’leri workflowlar içinde kullanıma hazır biz action yaparak sharepoint designer içine gömmüş. Bizler gerekli parametreleri doldurarak çok fazla kod yazmadan her hangi bir web servisten data çekip email atabilir veya herhangi bir listeye yazabiliriz.

Workflow designer’a geri dönüyoruz ve send email actionunu ekliyoruz. These users a tıklayarak açılan pencereden to kısmına mail atacağımız kişi yada kişileri seçiyoruz. CC içinde aynı step geçerli.


Subject kısmına ise mail ile ilgili bilgilendirmeyi yazıyoruz. Content alanına tıklayıp Sol Atl köşede bulunan Add or Change lookup butono vasıtası ile aşağıdaki ekranda görünen pencereyi açıyoruz. Data Source olarak Workflow Variables and Parametes kısmını seçiyoruz. Return Field as kısmında ise Servisten dönen değerimizi seçiyoruz.

İki kere OK diyerek pencereleri kapatıyoruz.

Publish etmeden önce son olarak önemli bir not.Siite Workflowlar devamlı suret ile arka planda çalıştığından End Workflow yada Go to Stage kısımlarını atlamamanızı öneririm.

Workflow’umuzun son şekli aşağıdaki gibi olacaktır.


Buradan sonra artık Workflowumuzu Check Error ve Publish yapıyoruz.
Sitemize giderek Settings > Site Contents menüsünü tıklıyoruz ve açılan ekranda Site Workflows bağlantısına tıklıyoruz.

Bağlantıya tıkladığımızda gelen ekranda oluşturmuş olduğumuz Workflowdaki check ikonuna tıklayarak iş akışımızı başlatıyoruz.

İş akışını başlattığımızda hemen başlamaya bilir. Sayfamızı bir – iki kez yeniledikten sonra iş akıımızın devam eden iş akışları alanında görünmesi gerekmektedir.

Bu ekranda bir iki kere daha yenileme yaparak takibini yapıyoruz. Aynı esnada mail attığımız hesaba bağlanarak e-postamızı kontrol ediyoruz. Eğer başarılı bir şekilde iş akışımız çalışıyorsa aşağıdaki ekrandaki gibi bir maille web servisten çağırmış olduğumuz ürün listesi json data olarak e-postamıza yansıyacaktır.

Tekrar geri dönerek ekranı yenilediğinizde tamamlanan iş akışları arasında az önce çalıştırmış olduğumuz iş akışının tamamlanmış olarak görebilirsiniz.

Son olarak aslında http://services.odata.org/V3/OData/OData.svc/Products url’sini çağırdık ve ekrana gelen xml data idi mail de ise Json olarak bir döküm ile karşılaştık. Bunun nedeni Sharepoint Call webservice actionu header olarak default “application/jsonodata=verbose header’ını kullanmaktadır.

Loop komutu ile bu gelen data bir loopa sokulabilir, başka bir isteye atılabilir veya dosya olarak saklanabilir. Temel olarak Sharepoint designer akışları içerisinde web servis tetiklemerini gösterdik. Daha fazlası için http://msdn.microsoft.com/en-us/library/office/dn567558(v=office.15).aspx adresinide inceleyebilrisiniz.

Yanıt Yaz