Sharepoint Series : How to Create Data Connection Library

Artikel kali ini akan menjelaskan langkah – langkah membuat data connection library di sharepoint server. Diharapkan, setelah membaca artikel ini, dapat mempermudah dalam proses development form InfoPath, terutama yang banyak menggunakan koneksi kedatabase. Ok, mari kita mulai… 😀

Step 1 :

Buatlah sebuah Library dari menu Site Action –> Create –> Data Connection Library. Isikan semua property yang dibutuhkan. [ Name and Description, Navigation -> pilih No, Version History -> Pilih No ]

Step 2 :

Buatlah sebuah Data Connection Definition dengan format XML, bisa menggunakan sample berikut :

   1: <?xml version="1.0" encoding="UTF-8"?>
   2: <?MicrosoftWindowsSharePointServices ContentTypeID="0x010100B4CBD48E029A4ad8B62CB0E41868F2B0"?>
   3: <udc:DataSource MajorVersion="2" MinorVersion="0" xmlns:udc="http://schemas.microsoft.com/office/infopath/2006/udc">
   4:     <udc:Name>MyDataDefinition</udc:Name>
   5:     <udc:Description>Format: UDC V2; Connection Type: Database; Purpose: ReadOnly;</udc:Description>
   6:     <udc:Type MajorVersion="2" MinorVersion="0" Type="Database">
   7:         <udc:SubType MajorVersion="0" MinorVersion="0" Type=""/>
   8:     </udc:Type>
   9:     <udc:ConnectionInfo Purpose="ReadOnly" AltDataSource="">
  10:         <udc:WsdlUrl/>
  11:         <udc:SelectCommand>
  12:             <udc:ListId/>
  13:             <udc:WebUrl/>
  14:             <udc:ConnectionString>
  15:                 Provider=SQLOLEDB.1;
  16:                 Initial Catalog=MyTestDB;Data Source=myserver;
  17:                 User ID=myuser;Password=mypassword;Persist Security Info=True;Use Procedure for Prepare=1;Auto Translate=True;
  18:                 Packet Size=4096;Workstation ID=mypc;Use Encryption for Data=False;Tag with column collation when possible=False</udc:ConnectionString>
  19:             <udc:ServiceUrl UseFormsServiceProxy="false"/>
  20:             <udc:SoapAction/>
  21:             <udc:Query>
  22:                 select * from mytable where id=null
  23:             </udc:Query>
  24:         </udc:SelectCommand>
  25:         <udc:UpdateCommand>
  26:             <udc:ServiceUrl UseFormsServiceProxy="false"/>
  27:             <udc:SoapAction/>
  28:             <udc:Submit/>
  29:             <udc:FileName>Specify a filename or formula</udc:FileName>
  30:             <udc:FolderName AllowOverwrite=""/>
  31:         </udc:UpdateCommand>
  32:         <!--udc:Authentication><udc:SSO AppId='' CredentialType='' /></udc:Authentication-->
  33:     </udc:ConnectionInfo>
  34: </udc:DataSource>

Save menjadi file dengan extention udcx. Bagian mana saja yang harus anda modifikasi ?

  • <udc:Name></udc:Name>, ini untuk mendefinisikan nama Connection Library kita. Buatlah berbeda dgn yang lainnya
  • <udc:ConnectionString></udc:ConnectionString>, ini bagian dimana kita mendeklarasikan kemana koneksi akan di lakukan. pastikan semua informasi yang dimasukkan benar ( username, password ) agar bisa konek dengan database yang diinginkan. Bagi yang biasa main-main dengan Connection String di .NET, bentuk ini adalah bentuk yang biasa.
  • <udc:Query></udc:Query>, pada bagian ini, dispesifikasikan data yang ingin di ambil. Ini adalah bentuk SQL statement biasa, yang lazim digunakan. Bagaimana jika kita ingin dinamik ? hehehe,, tunggu saja bagian berikutnya.

Step 3:

Langkah selanjutnya adalah upload file udcx yg telah kita buat tadi, ke library yang kita buat pada langkah 1.  Yang harus diperhatikan adalah, file yang kita upload tidak bisa langsung digunakan, karena statusnya masih pending. So, you must approved it first. Letakkan mouse pointer pada nama file yang baru saja di upload, klik edit -> pilih approve/reject. Akan muncul form approval, pilih approve, kemudian pilih ok. Done. Connection Library kita sudah siap untuk digunakan. Congratulation……

Ok, itu saja dulu. Pada bagian selanjutnya, akan dibahas bagaimana menggunakannya pada InfoPath Form. Selamat Belajar

There is an error in XML document (4, 2), What is it ?

Pertama kali melihat error ini, jadi pusing. Wah, error apa lagi ini. Usut punya usut, ternyata ini adalah error yang ditimbulkan ketika kita mengambil nilai dari sebuah XML file yang di create menjadi object, tetapi tidak ditemukan. Salah satu cara yang saya gunakan ( dapat info nya dari net ), adalah sebagai berikut  ( step lengkap dari create object sampai ambil value ):

–> Initialize Object :

   1: private void LoadInitialInfoItem()
   2: {
   3:     try
   4:     {
   5:         InitForm request = (InitForm)XmlDeserialize(typeof(InitForm), workflowProperties.Item.File);
   6:         userName = request.username;
   7:         total = request.expense;
   8:         WriteLogFilesInfo("LoadInitialInfoItem", request.username);
   9:         WriteLogFilesInfo("LoadInitialInfoItem", request.expense.ToString());
  10:     }
  11:     catch (Exception ex)
  12:     {
  13:         WriteLogFiles("LoadInitialInfoItem", ex.InnerException.ToString());
  14:         userName = "none";
  15:         total = 0;
  16:     }
  17: }

–> Deserialize Object :

   1: public object XmlDeserialize(Type type, SPFile file)
   2: {
   3:     XmlSerializer serializer = new XmlSerializer(type);
   4:     Stream stream = file.OpenBinaryStream();
   5:     XmlTextReader reader = new XmlTextReader(stream);
   6:     object obj = serializer.Deserialize(reader);
   7:     reader.Close();
   8:     stream.Close();
   9:
  10:     return obj;
  11: }

Ok, itu code awalnya… Tapi ketika dijalankan, muncul error ini : “There is an error in XML document (4, 2)”. Wah sempat pusing. setelah tanya sama om Google, akhirnya dapat informasi bahwa dengan menambahkan perintah position=0 pada stream object, akan solve. Yup.. akhirnya di coba :

   1: public object XmlDeserialize(Type type, SPFile file)
   2: {
   3:     XmlSerializer serializer = new XmlSerializer(type);
   4:     Stream stream = file.OpenBinaryStream();
   5:     stream.Position = 0;    // Ini Tambahannya
   6:     XmlTextReader reader = new XmlTextReader(stream);
   7:     object obj = serializer.Deserialize(reader);
   8:     reader.Close();
   9:     stream.Close();
  10:
  11:     return obj;
  12: }

Alhamdulillah, solve juga. Waktunya melaju ke modul selanjutnya. Hope usefull for reader 😀

Bagaimana Loop pada repeating table di Infopath 2007 ?

Masalah ini biasanya ditemui oleh para rekan-rekan yang berkecimpung dalam dunia sharepoint, terutama yang menggunakan Infopath sebagai form inputannya.
Berikut adalah cara untuk looping item pada repeating table di infopath :
Misalkan kita punya sebuah struktur repeating table seperti berikut ini :

maka yang harus dilakukan untuk looping ( untuk ambil semua value fieldnya ) cukup dengan code berikut ini :

   1: XPathNavigator domNav = MainDataSource.CreateNavigator();
   2: XPathNodeIterator rows = domNav.Select("/my:myFields/my:table/my:row", NamespaceManager);
   3:
   4: while (rows.MoveNext())
   5: {
   6:     string field1 = rows.Current.SelectSingleNode("my:field1", NamespaceManager).Value;
   7:     string field2 = rows.Current.SelectSingleNode("my:field2", NamespaceManager).Value;
   8:     string field3 = rows.Current.SelectSingleNode("my:field3", NamespaceManager).Value;
   9: }

semoga berguna….

This task is currently locked by a running workflow and cannot be edited. Apa ini ?

Sudah 2 hari ini utak – atik workflow disharepoint. Kepingin buat sebuah workflow yang simple tapi configurable. setelah pikir sana pikir sini, akhirnya dibuat sebuah workflow seperti ini :

SPSeqWorkflowUpdate

Simple, cuma ada satu task. Workflow ini awalnya begini :

  • Load konfigurasi dari Infoparh form saat workflow aktif, simpan di memori
  • Create task berdasarkan konfigurasi yang ada.
  • saat user approve, ganti property AssignedTo pada workflow task, agar task pindah ke user yang lain
  • Jika sudah tidak ada user yg harus approve, workflow selesai / finish.

Tapi apa nyana… ternyata setelah dicoba, muncul error saat update property di task :

This task is currently locked by a running workflow and cannot be edited.

Upps.. apa yang harus dilakukan ? cari-cari solusi dengan om G, masih belum ada jalan keluar. Ada beberapa referensi yang bilang harus update Service Pack, sudah dilakukan tapi masih belum solve. Huh… nampaknya masih harus explore lebih jauh lagi nih..

Tunggu saja kabarnya, gimana cara solvenya… atau kalau ada masukan, please comment here…

Checklist for Creating SharePoint Web Parts

Development webpart di sharepoint merupakan suatu tantangan tersendiri. Hal utama dikarenakan yaitu  tidak ada UI ( WYSIWYG ) yang dapat dilihat. Semua dalam bentuk code. Selain itu, kompatibilitas dengan browser dan beberapa aspek lain sebenarnya harus menjadi perhatian lebih bagi developer.

Microsoft baru-baru ini merilis checklist, hal-hal yang harus dipaerhatikan dalam proses development webpart disharepoint.

hal-hal yang harus diperhatikan dalam ceklist ini adalah :

  1. Verifying Web Part Rendering
  2. Verify that Web Part Renders Appropriately Based On User permissions.
  3. Verify that Static Web Part Renders Appropriately and Does Not Cause Web Part Page to Fail.
  4. Verify that Web Part Appears Appropriately in Search Results.
  5. Verify that Web Part Previews Properly.
  6. Verifying Web Part Functionality
  7. Verify that Web Part Can Be Added to Web Part Zone.
  8. Verify that Web Part Works Correctly Regardless of Web Part Page Location.
  9. Verify that Web Part Caching Works Correctly.
  10. Verify that Changes Made in Personal View Are Not Reflected in Shared View.
  11. Verify that Web Part Can Handle Asynchronous Calls to Other HTTP Sites and Web Services.
  12. Verify that Web Part Works Correctly With Different Combinations of Zone Settings.
  13. Verify that Web Part Can Access Resources in Different Setup Configurations.
  14. Verify that Web Part Can Be Imported and Exported Correctly.
  15. Verifying Web Part Properties
  16. Verify that Web Part Property Attributes Are Correctly Defined.
  17. Verify that Web Part Properties Displayed in Tool Pane Are User-Friendly.
  18. Verify that Web Part Properties Are Not Dependent On Each Other.
  19. Verifying Web Part Error Handling
  20. Verify that Every Public Property Can Handle Incorrect User Input.
  21. Verify that Adding Several Instances of the Same Web Part to a web Part Page (or to the Same Web Part Zone) Works Correctly.
  22. Verify that Web Part Handles All of its Exceptions.

Penjelasan lebih lengkapnya dapat dilihat disini

Semoga berguna.

10 Tip untuk aplikasi ASP.NET

Bagi para developer ASP.NET, ada tip menarik yang dapat dijadikan referensi pada proses deploy aplikasi ke server production.

Berikut cuplikannya :

1.  Generate new encryption keys

When moving an application to production for the first time it is a good idea to generate new encryption keys.  This includes the machine validation key and decryption key as well as any other custom keys your application may be using.  There is an article on CodeProject that talks about generating machineKeys specifically that should be helpful with this.

2.  Encrypt sensitive sections of your web.config

This includes both the connection string and machine key sections.  See Scott Guthrie’s post for some good references.  Note that if your application runs in a clustered environment you will need to share a custom key using the RSA provider as described in an MSDN article.

3.  Use trusted SQL connections

Both Barry Dorrans and Alex Chang have articles which discuss this in detail.

 

Untuk lebih lengkapnya, cek disini

Semoga berguna 😀

How to Deploy Your webpart to Sharepoint Web?

Ya, kira-kira itulah yang sering muncul di kepala seorang developer yg baru terjun ke dunia webpart development for sharepoint seperti saya. Maklum, karena sebelumnya just copy paste your page/template(ascx) to your website and benk benk…. already done. Tapi di sharepoint, agak sedikit ribet.

So, untuk mengatasi keribetan itu, disarankan menggunakan tool yang namanya WSPBuilder. Cukup download dari CodePlex, install dan sudah bisa dipakai.

Bagaimana menggunakannya ? Cukup simple. Just create your webpart project. Create your own code, on project name, just right click your mouse and tick at WSPBuilder Menu –> Buid Webpart. Kalo mo deploy, cukup pilih menu deploy webpart. Done….

Simple kan ? Hehehe. Hopefully useful…..