DBPlugin
    • 22 Jan 2024
    • 2 Minutes to read
    • Dark
      Light

    DBPlugin

    • Dark
      Light

    Article summary

    Geliştirme Katmanının “rAdo“ parçasını kullanılarak PaperWork veri tabanı üzerinde çalışılabilir. Eğer Geliştirme Katmanı ile harici bir veri tabanı üzerinde çalışmanız gerekiyor ise veri tabanı eklentisi kullanılması gerekir. Tanımlamalar ekranında MS SQL, ORACLE ve DB2 için DBPlugin tanımı direk yapılabilir. Onun haricindeki veri tabanları üzerinde işlem yapmak için ayrıca DBPlugin geliştirmek gerekir. Bu sayfada nasıl geliştirilebileceği detaylı olarak açıklanmıştır.

    İlk önce .Net geliştirme ortamında yeni bir kütüphane oluşturulmalıdır. PaperWork eklenti kütüphaneleri “Paperwork.” ön eki ile başlamalıdır ve oluşturduğunuz kütüphane X64 ve .Net Framework 4.6.2 veya üst versiyonları olarak ayarlanmalıdır. Daha sonra   kütüphaneye “Paperwork.PlugIn.dll” kütüphanesini referans olarak eklenmelidir. Bu kütüphane yazılacak eklentinin tanımlanacağı “IDBPlugIn” interface ini içerir.

    Proje adımızı “Paperwork.” ekinden sonra kendi belirleyeceğimiz isim ile başlatıyoruz. Bu örnekte “PluginExm” tercih ettik.

     

    Daha sonra kütüphaneye yeni bir sınıf eklemeli ve oluşturulan sınıf “IDBPlugIn” interface’ini kullanacak şekilde tanımlanmalıdır. Interface tanımlaması ile gelen metotlar hedeflenen veri tabanı üzerinde işlem yapacak şekilde düzenlenmelidir. 

    Hazırlanan eklentiyi kullanmak için öncelikle kütüphane derlenmeli ve oluşan kütüphane içerik sunucusunun kurulu olduğu makine üzerine varsayılan olarak “C:\Paperwork\Bin\Plugins” dizini altına taşınmalıdır.

    “Plugins" klasörü içerisine taşınan eklentinin aktif hale gelmesi için içerik sunucusunun yeniden başlatılması gerekir. Geliştirme katmanı ile hedeflenen veri tabanı üzerinde işlem yapmak için rAdo bölümü altında bulunan metotların “pluginName” parametrelerine tanımladığımız eklentinin adını vermemiz gerekir.

    Geliştirilecek örnek plugin aşağıdaki gibi olabilir.

    “IDBPlugIn” interface’i unutulmamalıdır.

    using System;using System.Collections.Generic;
    using System.Data.SqlClient;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Paperwork.PlugIn;
    
    namespace Paperwork.PluginExm
    {
        public class CustomDB : IDBPlugIn
        {
    
            private const string ConnStr = "Data Source=ARGUSDB;Initial Catalog=EXAMPLES;Persist Security Info=True;User ID=paperwork;Password=argusadmin";
            private SqlConnection getNewConnection()
            {
                SqlConnection sqlConnection = new SqlConnection(ConnStr);
                sqlConnection.Open();
                return sqlConnection;
            }
            public int Execute(string sql)
            {
                int retval;
                using (var conn = this.getNewConnection())
                {
                    using (var cmd = new SqlCommand(sql, conn))
                    {
                        retval = cmd.ExecuteNonQuery();
                    }
                }
                return retval;
            }
            public DataSet Query(string sql)
            {
                DataSet retval = new DataSet();
                using (var conn = this.getNewConnection())
                {
                    using (var da = new SqlDataAdapter(sql, conn))
                    {
                        da.Fill(retval);
                    }
                }
                return retval;
            }
            public void DisConnect()
            { }
            public void Init(string[] args)
            { }
        }
    }
    Önemli

    pluginName değişkeni oluşturduruğumuz plugin adı + sınıf adı olacak şekilde verilmelidir.

    “PluginName.ClassName”

    Yukarıdaki örnek koda göre şu şekilde olmalıdır:

    Paperwork.PluginExm.CustomDB

    Plugin adımız : Paperwork.PluginExm

    Class adımız : CustomDB

    Önemli
    Tanımlamalar ekranından Plugin tanımı oluşturmaya ihtiyaç yoktur. Farklı bir veritabanına ihtiyaç olduğunda buraya kadar anlatığımız örnekler yapıldıktan sonra aşağıdaki kod örnekleri ile belirlenen veritabanına erişilebilir.

    DBPlugin ile ürün içi kullanım örnekleri aşağıdaki gibidir. 

    string pluginName = "Paperwork.PluginExm.CustomDB";
    string sql = "SELECT * FROM SIPARISLER (NOLOCK)";DataSet dset = productivity.rAdo.Query(sql, 0, true, pluginName);
    var pluginName = " Paperwork.PluginExm.CustomDB ";
    
    PwForm.Query(SELECT * FROM SIPARISLER (NOLOCK)', pluginName).then(result => {
      Console.log(result); 
        });
    

    What's Next