Makale Özeti

Infopath ile oluşturduğumuz formlarımızda toplanan verileri web servisi aracılığı ile istediğimiz veri kaynaklarına kaydedebiliriz. Bu makalemde Infopath ile oluşturduğumuz bir formdaki verileri SQL veritabanına bir web servis ile nasıl gönderebileceğimizi, ardından da bu formu Sharepoint portal üzerinde nasıl publish edebileceğimizi anlatacağım.

Makale

Birçoğumuzun şirketlerde kullandığı portal altyapısının büyük bir kısmını oluşturan Microsoft Office Sharepoint Server üzerinde bazı  formlarımızı standart “Custom List” yaklaşımı ile çözememekteyiz. Bu durumlarda veya formlarda business logic, workflow gibi bazı özellikleri de develop etmek istersek bu konuda Infopath yetenekleri dahilinde kesinlikle işimize yarayacak bir uygulamadır. Infopath'de oluşturulan formların Sharepoint  üzerine kolaylıkla entegre edilmesi ve web arabiriminden doldurulması başarılı bir şekilde çalışmaktadır. Infopath formlarının veri kaynağı olarak en çok Web Servisleri, SQL Server ve Sharepoint List kullanılmaktadır. Ben bu makalemde sizlere web servislerinin nasıl kullanıldığından bahsedeceğim.

Infopath ile oluşturduğumuz formlarımızda toplanan verileri web servisi aracılığı ile istediğimiz veri kaynaklarına kaydedebiliriz. Bu makalemde Infopath ile oluşturduğumuz bir formdaki verileri SQL veritabanına bir web servis ile nasıl gönderebileceğimizi, ardından da bu formu Sharepoint portal üzerinde nasıl publish edebileceğimizi anlatacağım.

İlk olarak SQL’de aşağıdaki tabloya sahip SampleDB adında veritabanı oluşturalım:

Ardından da bu tabloya insert işlemini yapacak olan stored procedure’ı yazalım:

CREATE PROC [dbo].[InsertEmployee]
@pFirstName nvarchar(50),
@pLastName nvarchar(50),
@pDepartment nvarchar(50)
AS
INSERT
INTO Employees (FirstName, LastName, Department) VALUES (@pFirstName, @pLastName, @pDepartment)

Sırada Employees tablosuna insert işlemi yapacak olan web servisi yazmak var:

using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data.SqlClient;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class EmployeesWS : System.Web.Services.WebService
{
    public EmployeesWS()
    {
    }
    [WebMethod]
    public void InsertEmployee(string parFirstName, string parLastName, string parDepartment)
    {
        SqlConnection con = new SqlConnection(@"data source=.;initial catalog=SampleDB;Integrated Security=SSPI");
        SqlCommand com = new SqlCommand("InsertEmployee", con);
        com.CommandType = System.Data.CommandType.StoredProcedure;
        com.Parameters.Add("@pFirstName", System.Data.SqlDbType.NVarChar);
        com.Parameters.Add("@pLastName", System.Data.SqlDbType.NVarChar);
        com.Parameters.Add("@pDepartment", System.Data.SqlDbType.NVarChar);
        com.Parameters["@pFirstName"].Value = parFirstName;
        com.Parameters["@pLastName"].Value = parLastName;
        com.Parameters["@pDepartment"].Value = parDepartment;
        con.Open();
        com.ExecuteNonQuery();
        con.Close();
    }
}

Web servisi yazdıktan sonra yeni bir Infopath formu tasarlamamız ve tasarladığımız bu formu kullanıcı doldurduğunda web servis aracılığıyla SQL’de bulunan SampleDB veritabanına kaydedilmesini sağlamamız gerek. Infopath 2007’yi açıp yeni bir form template düzenleme ekranına geliyoruz:

Açılan ekranda sol kısımda bulunan Design a Form Template... linkine tıkladığımızda açılan ekrandan Web Service seçeneğini işaretliyoruz:

Formumuz yazdığımız web servisine veri submit edecek olduğundan açılan ekranda Submit data seçeceneğini işaretliyoruz:

Sonraki adımda bizden web servisin adresini girmemiz istenecek:

Sonraki adımda web servisteki işlemlerden hangisini yapmak istediğimizi soran bir ekran açılacak. Yazdığımız serviste sadece InsertEmployee metodu vardı. Onu seçip Next’e basıyoruz:

Sonraki adımda bu bağlantıya bir isim vermemiz istenecek. Bağlantının adını conSampleDB olarak değiştirip Finish’e basıyoruz:

Finish butonuna bastıktan sonra Infopath formumuz açılacak ve sağ taraftaki Data Source alanında InsertEmployee web servisine parametre geçirdiğimiz 3 alanı göreceğiz:

Bu alanları sürükle bırak ile formumuza ekleyelim ve formumuzu düzenleyelim:

Tam olarak bu makalenin kapsamında değil ama makalemde tasarladığımız bu formun Sharepoint üzerinden client tarafında sadece Infopath 2007 ile değil, web browser üzerinden de doldurulmasını nasıl sağlayacağımızı da anlatmak istiyorum. Her client’da Infopath kurulu olmayabilir ve bu durumlarda formun web browser üzerinden de doldurulabilir olması gerekliliği ortaya çıkar. Ben denemelerimde formu bu haliyle Sharepoint’e publish ettiğimde ve browser ile formu submit etmeye çalıştığımda sürekli olarak aşağıda gördüğünüz “An error occured while the form was being submitted” şeklinde generic bir hata aldım.

Bu hatayı almamanız için ve formu browser ile sorunsuz submit edebilmeniz için yapılması gerekenleri bu noktadan sonra aralarda yazacağım. İlk olarak yapmamız gereken Tools -> Form Options ekranını açmak:

Bu ekrandaki Security and Trust sekmesindeki Automatically determine security level checkbox’ındaki check’i kaldırıp, Full Trust seçeneğini işaretleyelim.

Bu ayarı yaptıktan sonra artık formumuzu Sharepoint’e publish edebiliriz. File –> Publish’e tıkladığımızda açılan ekranda Next’e basıp ilerleyelim:

Ardından bizden bu formu publish edeceğimiz Sharepoint sitemizin adresi istenecek. Yazıp Next’e basalım:

Ardından açılan ekranda bize fazla seçim şansı tanınmıyor olacak. Bunun nedeni biraz önce Form Options ekranında Full Trust seçeneğini işaretlememiz. Full Trust olarak publish edilen formların publish edilmeden önce site administrator onayından geçmesi gerekmektedir. Bu adımı makalenin ilerleyen kısımlarında anlatıyor olacağım. “Enable this form to be filled out by using a browser” seçeneğinin işaretli olduğundan emin olup Next’e basalım:

Biraz önce bahsettiğim formun site admin’i tarafından onaylanması adımında ilk olarak bu form template’in Sharepoint Central Administration sitesine upload edilmesi gerekmektedir. Bu upload işlemi için bir sonraki adımda bizden formu bilgisayar veya bir network share’e kaydetmemiz istenir:

Sonraki adımda formumuzdaki alanları istersek Sharepoint site’larında kullanabilmek için kolon olarak ekleyebiliriz. Bu adımı kolon seçmeden Next’e tıklayarak geçelim:

Son adımda da Publish butonuna tıklayarak formumuzu Sharepoint sitesinde yayınlayalım:

Publish işlemi bittikten sonra formun başarıyla publish edildiğini belirten aşağıdaki ekran açılır.

Formun browser ile doldurulabilmesi ve sharepoint sitemizdeki form templates kütüphanesinde görüntülenebilmesi için server admin’inin oluşturduğumuz .xsn dosyasını onaylaması gerekecek. Şimdi kısaca bu adımı inceleyelim.

Oluşturduğumuz template’in kullanılabilir olması için Sharepoint Central Administration sitesine giriyoruz. Application Management - > Infopath Forms Services altında bulunan Upload form template link’ine tıklayalım.

Açılan ekranda Browse butonuna tıklayarak biraz önce C dizini altına oluşturduğumuz .xsn dosyasını upload edelim.

Upload butonuna tıkladıktan sonra formun başarıyla upload edildiğini ve onaylanması gerektiğini belirten bir yazı çıkacaktır. OK butonuna tıkladıktan sonra Manage Form Templates ekranına ulaşacağız:

Yüklediğimiz EmployeeTemplateMakale.xsn dosyasını onaylamak için formun üzerine gelip tıkladığımızda açılan menüden Activate to a Site Collection’a tıklayalım:

Açılan ekranda Activation Location alanında görülen site collection Sharepoint administration site’ı görülebilir. Bunun için Site Collection alanına gelip Change Site Collection’a tıklamamız gerekir:


Şu anda seçili site collection administration site’ı olduğundan değiştirmek için açılan ekranda sağ tarafta bulunan Web Application alanında Change Web Application’a tıklayacağız:

Açılan ekranda Sharepoint sitemizi seçeceğiz:

Bir önceki ekrana döndükten sonra OK butonuna tıkladığımızda site collection’ı düzgün bir şekilde değiştirmiş olacağız:

Aktivasyon ekranında OK butonuna tıkladığımzda form template’i onaylanmış ve kullanıma hazır hale gelmiş olacaktır. Sharepoint site’ında da Form Templates kütüphanesinde görüntüleyebiliriz.

Formun üzerine gelip tıkladığımızda açılan menüden Edit in Browser’a tıkladığımızda formumuz browser’da doldurulmaya hazır halde açılacaktır. Formu doldurup Submit butonuna tıkladığımızda web servis aracılığıyla formumuz kaydedilecektir:

Umarım faydalı olmuştur.

Işıl Orhanel
isil@isilorhanel.net