Anasayfa » Sharepoint Server 2010 İnfopath Formlarında User Profile Bilgilerini Çağırma

Makaleyi Paylaş

Microsoft SharePoint

Sharepoint Server 2010 İnfopath Formlarında User Profile Bilgilerini Çağırma

SharepointServer 2007 ilehaşırneşir olduğumuz infopath form servisleri SharepointServer 2010 da her yerde karşımıza çıkıyor. Sharepoint ile entegreçalışan Infopath özellikle yeni versiyonda gelen özellikleri ile de kod yazmadan bir çok uygulama yapma imkanı sağlıyor.

Anlatıma başlamadan önce önemli bir hatırlatma yapalım. UserProfile ve Infopath Form Services gibi servisler SharepointServer 2010 ürün ailesinde çalışır. SharepointFoundition 2010 ürünün de bu makaledeki işlemleri yapamazsınız.

Infopath 2010 da browser destekli olarak kullanıcının Yöneticisi, departmanı gibi bilgileri sharepointuser profile servisini kullanarak Active Directory’den ( yada LDAP ile başka bir veri tabanından) çağırmayı forumlarda Sharepoint başlığı altında sorulardan birinde cevaplamıştım. Ancak normal durum da herhangi bir düzenleme / sorgu oluşturulmazsa gelen bilgiler formu açan kullanıcının bilgileridir. Örneğin; Sharepoint Server 2010 sitenizde Ahmet diye logon olmuşsanız ve bu kullanıcı ile ilgili formu açarsanız Ahmet’in bilgilerini forma çekebilirsiniz.

Şimdi ise anlatacağım konu, formda person / grouppicker da seçilen kullanıcının bilgilerinin çağırılması olacaktır.

Sponsor

image001

Anlaşılması açısından senaryo metodu ile yola devam edelim. İnsan Kaynakları departmanınız için bir izin formu düzenliyorsunuz. Ancak firmanızdaki kullanıcıların tamamının bilgisayar ortamında çalışıyor olması zor. Bunun için İK departmanı veya ilgili müdürü izin formunu şahsın adına düzenlemek zorunda kalabilir. Bunun içinde kişiyi seçmesi gerekecektir. Yukarıdaki şekil de görüldüğü gibi izin alacak personel alanına person/grouppicker ekledik. Burada, seçtiğimiz kullanıcının verilerinin, ilgili form alanlarına oturmasını istiyoruz.

İlk olarak Sharepoint web hizmetlerini kullanarak user profile services verilerini alabilmek için bir data connection oluşturalım.Bunun için yapmamız gerekenler;

1-      Veri bağlantılarını yönet butonuna tıklayınız.

2-      Açılan veri bağlantıları penceresinden Ekle butonunu tıklayınız.(Şekil-2 / Pencere-1)

3-      Karşınıza veri göndermek mi yoksa almak mı istediğinizi soran pencere gelecek.Veri Al seçeneğini seçip ileri butonunu tıklayınız.Yeni gelecek pencereden SOAP Web Hizmetlerini seçip ileri butonunu tıklayınız.(Şekil-2 / Pencere-2 )

4-      Web hizmetinin adres tanımı gireceğimiz ekran karşımızda burada adres alanına şu tanımı girin; http://SUNUCUNUZ/_vti_bin/UserProfileService.asmx ileri diyerek bu alanı da geçiniz. (Şekil -2 / Pencere -3)

5-      Karşınıza gelen ekranda user profile servisi işlemlerinin yer aldığı bir liste görülecek. Bu listeden GetUserProfileByName olanı seçiniz.

6-      Parametre ekranı gelecek ileri diyerek geçiniz. Çevrimdışı modda çalışmalar için dataların form içinde depolanmasını sağlayabileceğiniz ekran gelecek çevrimdışı modda çalışmıyorsanız ilgili alana tik koymadan ileri butonuna basınız.

7-      Son ekrandayız.. ”Form açıldığında verileri otomatik olarak al” seçeneği tikli olsun. Tik li olmaz ise verileri çağırmak için sorgu butonu koymanız gerekecek. Son diyerek data connection işlemini bitirdik.

image002

Senaryomuza göre gidecek olursak, biz seçilen kişinin departman bilgisinin ve yöneticisi bilgisinin gelmesini istiyoruz. Bunun 2 adet metin kutusu ekledik. Bu 2 metin kutusunun dışında 1 adet daha metin kutusu oluşturun. Bu metin kutusunun adını da SecilenAccount yapalım. Buraya da seçilen kişinin Account ID sini person / group picker dan kopyalatacağız. Bunu yapmamızın sebebi, person gorup/ picker denetimine kural yazamıyoruz kural yazabilmemiz için bir başka denetim kullanacağız.

Elimizdeki alanları sıralıyacak olursak;

a-      Personel : Person group/ picker denetimi

b-      Departmanı: Metin Kutusu denetimi

c-       Yöneticisi: Metin Kutusu Denetimi

d-      SecilenAccount: Metin Kutusu Denetimi

SecilenAccount metin kutumuza Seçilmiş kullanıcının Account ID sini kopyalama:

1-    SecilenAccount metin kutusunun denetim özelliklerini açın.(ilgili denetimde sağ tuşla özelliklerinden de açabilirsiniz şekil 3 de gösterildiği gibi denetimi çift tıkladığınızda ribbon menüde çıkan denetim özelliklerinden de ulaşabilirsiniz)(Şekil-3 / Seçim-1)

2-    Varsayılan değer alanında FX butonuna tıklayarak Alan Veya Grup Ekle yi seçin. (Şekil -3 / Pencere -1 ve Pencere-2)

3-    Açılan data penceresinde alanlarım altında yer alan AccountId yi seçip tamamı tıklayın.

Böylece formumuzda kullanıcı seçildiğinde seçilen kullanıcının AccountId si “SecilenAccount” metin kutumuza kopyalanacak. Artık seçilen personelimizin bilgilerini almak için kural ve sorgular yazabiliriz.

Kuralımızı “SecilenAccount” metin kutumuza uygulayacağız. Bu yüzden bu denetimimiz seçili iken ribbon menüden kuralları yöneti seçelim. Sağ bölümde kural yönetim alanı görülecektir.

Yeni sekmesinden Eylemi seçelim. (Şekil -4)

image003

Forma herhangi bir kural yazmadan açtığımızda formu açan kullanıcının bilgilerinin geldiğini söylemiştik. Bunun sebebi eklediğimiz user servisinde query data kısmında yer alan accountname fieldına bizim bir kullanıcı belirtmemizdir.

image004

Şimdi eklediğimiz kural ile bu işlemi değiştireceğiz.

Başlayalım;

1-    Yeni diyerek eylemi seçince bizim için boş bir kural oluştu.Şimdi alt kısımda yer alan Bu eylemi çalıştır seçeneğinin karşısındaki Ekle butonuna tıklıyoruz ve alan değeri ayarlayı seçiyoruz.

image005

2-    Açılan pencerede Alan başlığı altındaki data connectionlarımıza gideceğimiz butonu tıklıyoruz. Açılan alan ve grup seçme penceresinden oluşturduğumuz GetUserProfileByName bağlantımızı seçiyoruz. QueryFields altında yer alan tek field olan AccountName i seçip tamam diyoruz. Bun yaparak accountName i bir başka değerle değiştireceğimizi ifade etmiş olduk.(Şekil -6)

3-    Şimdi Değer alanına “SeçilenAccount” fieldımızı yerleştireceğiz. Bunun için FX butonuna tıklıyoruz. Alan veya grup ekle yi seçtikden sonra açılan pencerede Alanlar başlığının altında ana yada main olduğundan emin olduktan sonra “SecilenAccount” fieldımızı seçip tamam diyoruz. Herşey doğru ise görmemiz gereken pencere şekil 7 dir. Tamam diyerek pencereyi kapatalım.

image006

Bu kuralla yaptığımız kısaca şudur ; ”UserProfile de sorguda kullanılan accountName alanına bizim SecilenAccount alanımızda ki veriyi yaz.”

Bu kuralın hemen arkasına bir sorgu ekliyoruz. Bunun için yine ekle butonuna tıklayıp verileri sorgula seçeneğini tıklıyoruz ve şuan için tek 2.il bağlantımız olan GetUserProfileByName i seçip tamam diyoruz. Böylece her seçim yaptığımızda sorgu profillerden istediğimiz verileri getirecektir.

Önemli: Kurallarda AccountName kuralının 1. , veri sorgu kuralının 2. Kural olması önemli ve şarttır. Bu kuralların altına az sonra anlatacağım gibi istediğiniz karar  veri çağırma kuralı ekleyebilirsiniz bu 2 kuralın yeri sıralaması değişmemeli.

image007

Böylece formu açan kişinin bilgilerinin değil seçilen kullanıcının bilgilerinin gelmesini sağlıyoruz.

Artık istediğimiz bilgileri formdaki alanlara koydurabiliriz.

Departman alanına veriyi koydurmak istiyorsak ;

Aynı kural alanına bir kural daha ekliyoruz ve alan değeri ayarla diyoruz. (Bir önceki kuraldaki gibi)

          Alan kısmına “departmanı” metin kutumuzu koyuyoruz..

          Sırası ile Değer hanesi için FX butonuna basın. Alan veya grup ekle yi seçin. Alanlarımızdan GetUserProfileByName bağlantımızı seçin. DataFields larından Values altındaki Value fieldını seçin. Seçtikten sonra filtre uygulayacağız pencereyi kapamayın. Value seçili iken Verilere filtre uygula butonuna tıklayın.

image008

Açılan pencerede ekle butonuna tıklayın. Koşulu yazacağız.

Default olarak açılan koşulda ilk kısımda value seçilidir. Buradaki drop down menüden alan veya grup seçini tıklayarak “Name” fieldını seçin.

image009

Aradaki eşittir koşulu kalsın ve diğer field alanında “metin yazın” seçeneği seçerek Department yazın ve tamam diyerek filtreyi kapatın.

UserProfile da seçtiğimiz Name fieldı kullanıcı bilgilerinin başlıklarını içeren fielddır. Yani department, Manager  gibi. Karşı alana yazdığımız Department kelimesi doğru olmalıdır bu veri alanlarını öğrenmek için Central Admin de profile servisine girebilir burada profile alanlarına bakabilirsiniz. Kullanıcının yöneticisini çağırmak için SecilenAccount alanına eklediğimiz kurallara bir tane daha ekleyip Name eşittir Manager diyebilirsiniz.

Not: Sharepoint Server 2010 profilinizde resim eklemiş iseniz resminizide bu yöntemle forumda gösterebilirsiniz.

image010

Unutmadan en altta yer alan SecilenAccountfieldınıoradan kaldırabilirsiniz, ekranda olmak zorunda değil, hoş da olmaz J İster gizleyin ister formda ilgili field seçili iken delete tuşuna basarak silin.Görünümden silinmiş olacaktır ,fieldlardan silinmeyecektir.

Artık örneklerle istediğiniz kadar kural yazabilir verileri çağırabilirsiniz.

Uzunmuş gibi görünsede bu uygulamaya alıştığınızda alacağı süre çok kısadır.

Makale yazmam için teşvik eden ve destek veren Hakan Uzuner ve Emre Balcı  Hocalarıma teşekkür ederim.

Faydalı Olması Dileği ile….

Makaleyi Paylaş

Cevap bırakın