Merhaba arkadaşlar, bugün sizlere sharepoint ortamında bir sitecollection üzerinde bulunan bir listede işlem yapıldığında bu listeye bağlı bir workflow üzerinden rest api ile başka bir sitecollection adresindeki listeye nasıl veri ekleyeceğimizden bahsedeceğim.
İlk olarak site collectionlarımızı ve listelerimizi tanımlayalım.
Workflowumuzu tanımlayacağımız site olarak “site1” adında bir site collection ve bunun altında da “list1” adında bir custom list oluşturuyorum.
Daha sonra bu listedeki workflow ile kayıt yapacağımız “site2” site collectionu ve bu site içerisinde “list2” adındaki custom listemizi oluşturuyoruz.
Burada workflow üzerinde işlem yapabilmek için app permissionlar ayarlayıp gerekli yetkileri tanımlamamız gerekmektedir. Bunun için ilk adım olarak kaynak sitemize yani “site1” sitemize gidip site ayarlarından “Manage site features” ayarına girerek “Workflows can use app permissions” feture aktif ediyoruz.
Daha sonra tekrar site ayarlarına gelerek “Site App Permission” ayarına geliyoruz. Burada oluşmuş olan yetki kısmında “App Display Name” kısmında “Workflow” olan yetkilendirmenin “App Identifier” kısmında yer alan kodun sadece “|” ile “@” işaretleri arasında kalan kodu alıyoruz.
Daha sonra hedef sitemize giderek yani “site2” ye gidip “/_layouts/15/appinv.aspx” adresine giriyoruz ve karşımıza çıkan ekranda az önce kopyaladığımız kod kısmını “App Id” alanına yapıştırarak “Lookup” butonuna tıklıyoruz. Bu kodu düzgün almışsak eğer “Title”, “App Domain”, ve “Redirect Url” kısımları bizim “site1” adresimiz ile dolacaktır. Geri kalan kısım olan “Permission Request XML” kısmına da yetki vermemiz için gerekli olan xml kodunu yapıştırıyoruz ve “Create” butonuyla yetkimizi oluşturuyoruz.
Daha sonra karşımıza bizim bu yetki vermek için oluşturduğumuz appimize güvenip güvenmediğimizi doğrulama ekranı çıkacaktır. Burada “Trust It” butonuna tıklayarak yetkilendirme işlemini tamamlayabiliriz.
Bu kısımda yetkilendirme istek xml kodu ile ilgili çalıştığınız katman seviyesine göre xml linkleri aşağıdaki gibidir.
Birde yetki türleri
- Read
- Write
- Manage
- FullControl
Olarak 4 çeşit bulunmaktadır.
Yetkilendirme işlemlerini tamamladıktan sonra “site1” için sharepoint designer açıp “Workflow” sekmesine geliyoruz.
Oluşturmuş olduğumuz “list1” listesini seçiyoruz ve açılan popupta workflow ismimizi seçip plartform tipi seçeneğini de “Sharepoint 2013 Workflow” olarak belirleyip “OK” butonu ile workflowumuzu oluşturuyoruz.
Daha sonra stage1 kısmında “Action” sekmesinden “Build Dictionary” seçiyoruz ve ekliyoruz. Output variable ismini “header” olarak tanımlıyoruz. Bunun içerisine “Name Type – Value” alanları sırası ile “Accept – String – application/json;odata=verbose”, “Content-Type – String – application/json;odata=verbose”, “IF-MATCH – String – *” şeklinde değerlerimizi ekliyoruz.
Daha sonra bir tane daha “Build Dictionary” ekliyoruz. Bunun variable ismini de “metadata” olarak ayarlıyoruz. Bunun içerisine de “Name – Type – Value” alanı olarak “type – String – SP.Data.List2ListItem” olarak ekliyoruz.
Buradaki value kısmı fark ettiyseniz hedef listemizin adını içermektedir. Genel Format “SP.Data.[title of target list]ListItem” olacaktır. Burada liste adınız küçük harfle bile başlasa siz büyük harf olarak yazmanız gerekmektedir.
Daha sonra buraya bir tane daha “Build Dictionary” ekliyoruz. Bunun variable ismi ise “parameters” olarak tanımlıyoruz ve içine “__metadata” name değişkeni adında tipini “Dictionary” seçerek üstte oluşturduğumuz “metadata” variable değişkenimizi tanımlıyoruz. Diğer ekleyeceklerimiz ise Liste field ları olacaktır ve burada benim listemde sadece tek field olarak “Title” olduğundan dolayı birde “Title” yazarak değerine de benim “list1” deki “Title” değişkenimi setliyorum.
Bütün değişkenlerimizi tamamladık. Bunları rest api mize call yaparken kullanacağız. Bu aşamadan sonra rest api call yapmak için yukarıdaki “Action” menüsünden “Call HTTP Web Service” seçiyoruz. Gelen call http kısmında “then call this ..” yazan kısımda “this” kısmında tıklayarak hedef adresimiz olan “list2” için rest api adresimizi yazıyoruz ve “HTTP method” olarakta kayıt ekleme işlemi yapacağımız için “HTTP POST” seçiyoruz.
Bu ayarlamaları yaptıktan sonra call aksiyonumuza sağ tıklayarak açılan menüden “Properties…” diyerek ayarlarına giriyoruz. Burada açılan ekranda “RequestHeaders” kısmına oluşturduğumuz “header” dictionary sini, “RequestContent” kısmına oluşturduğumuz “parameters” dictionary sini veriyoruz. “ResponseContent” kısmı için “response” adında bir değişken oluşturuyoruz. En altta yer alan kısım “ResponseStatusCode” kısmı boş işe “responceCode” değişkeni oluşturup tanımlıyoruz. Genellikle “ResponseStatusCode” kısmı http call isteği eklendiğinde otomatik oluşur.
Bunları da tamamladıktan sonra eğer workflow ile ilgili başka bir işlemimiz yok ise “Transition to stage” kısmında “Go to End of Workflow” yaparak workflow işlemlerini tamamlıyoruz.
Burada workflow designer kısmında herhangi bir hata yoksa bu kısmı kaydederek workflow ayarlarına geçiyoruz ve bu workflowun öğe eklendiğinde mi düzenlendiğindemi vs gibi workflow ayarlarını da tamamlıyoruz.
Bütün bu işlemleri tamamladıktan sonra workflowumuzu publish ediyoruz. Gidip “site1” de yer alan “list1” listemize “Site 1 List 1 İtem 1” şeklinde bir değer ekliyorum.
Workflowum sorunsuz bir şekilde çalışıp tamamlandıktan sonra bu eklediğim değerimin “site2” de yer alan “liste2” listemede eklenmiş olması gerekmektedir.
Gördüğünüz gibi işlemimiz başarı ile gerçekleşmiştir 🙂 🙂
İlk Yorumu Siz Yapın