FilePlugIn
    • 09 Jan 2023
    • 1 Minute to read
    • Dark
      Light

    FilePlugIn

    • Dark
      Light

    Article summary

    PaperWork sistemi üzerinde arşivlenecek belgelerin bulunacağı dizinin yönetilmesine olanak tanır. Yeni bir File Plug-In tanımlamasını aşağıdaki şekilde yapabilirsiniz.

    İlk önce .Net geliştirme ortamında yeni bir kütüphane oluşturmalısınız. PaperWork eklenti kütüphaneleri Paperwork ön eki ile başlamalıdır ve oluşturduğunuz kütüphaneyi X64 ve .Net Framework 4.7.2 olarak ayarlanmalıdır. Daha sonra kütüphaneye “Paperwork PlugIn dll ve Paperwork Core kütüphanesi referans olarak eklenmelidir. Bu kütüphane yazılacak eklentinin tanımlanacağı IFileStorePlugIn interface'ini içerir.

    Daha sonra kütüphaneye yeni bir sınıf eklemeli ve oluşturulan sınıf "IFileStorePlugIn" interface’ini kullanacak şekilde tanımlanmalıdır.

    * Interface tanımlaması ile gelen "LoadFile" metodu ile belge yüklenir . Metod byte[] olarak dönüş sağlar.

    * Interface tanımlaması ile gelen “LoadFileByte ” metodu ile byte sayısı kadar data belge yüklenir. Metod byte[] olarak dönüş sağlar.

    * Interface tanımlaması ile gelen “SaveFile ” metodu ile belge kaydedilir. Metod boolean olarak başarılı başarısız dönüş sağlar.

    * Interface tanımlaması ile gelen “DeleteFile ” metodu ile belge silinir.

    * BasePath ve conn değişkenleri ile dizin bilgisi ve veri tabanı bilgileri atanır.


    Interface tanımlaması ile gelen metotlar hedeflenen veri tabanı üzerinde işlem yapacak şekilde düzenlenmelidir :

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.IO;
    using System.Text;
    using System.Threading.Tasks;
    using Paperwork.Core;  
    using Paperwork.PlugIn;
    
    namespace Paperwork.Training.Plugin
    {
     public class MyStorage : IFileStorePlugIn
        {
            string BasePath = "C:\\Shared\\MyStorage\\";
            static int random = 1;
            DBConnection conn = null;
    
            private string getPath(string name)
            {
                return BasePath + name;
            }  
    
            public bool DeleteFile(string objectId, string ext)
            {
                var path = getPath(objectId + "." + ext);
                if (System.IO.File.Exists(path))
                {
                    System.IO.File.Delete(path);
                    return true;
                }
                return false;
            }
            public byte[] LoadFile(string objectId, string ext)
            {
                return System.IO.File.ReadAllBytes(getPath(objectId + "." + ext));
            }
    
            public byte[] LoadFileByte(string objectId, string ext, int byteCount)
            {
                return System.IO.File.ReadAllBytes(getPath(objectId + "." + ext)).Skip(0).Take(byteCount).ToArray();
            }
    
            public bool SaveFile(string objectId, string ext, byte[] fileData, string owner, string fileName, ref string refId)
            {
                try
                {
                    System.IO.File.WriteAllBytes(getPath(objectId + "." + ext), fileData);
                    refId = "" + random++;
                    return true;
                }
                catch { }
                return false;
            }
    
            public void SetDB(DBConnection conn)
            {
                this.conn = conn;
            }
        }
    }

    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. Ayrıca PaperWork Tanımlamalar bölümünde oluşturulan PlugIn Depolama birimi olarak tanımlanmalıdır.