PaperWork .NET Geliştirme kütüphanesi
    • 09 Nov 2023
    • 2 Minutes to read
    • Dark
      Light

    PaperWork .NET Geliştirme kütüphanesi

    • Dark
      Light

    Article Summary

    PaperWork Doküman Yönetimi ve İş Akış Sistemi çok katmanlı geliştirilmiştir. Uygulama Sunucusu (Content Server) tüm iş objelerini içerir. Bu iş objelerinin SOAP 1.2 uyumlu web servisi kütüphanesi ve C#’da geliştirilen Productivity Layer adı verilen .NET kütüphanesi vardır. PaperWork son kullanıcı ara yüzleri ve Windows Service katmanı Productivity Layer üzerinde geliştirilmiştir.

    Bu yardım dosyası Productivity Layer içerisinde bulunan tüm fonksiyonları ve örneklerini içerir.

    Geliştirme katmanını kullanmak için eklenmesi gereken gerekli kütüphaneler aşağıdaki gibidir;

    Uyarı
    Microsoft .Net projesi X64 ve minimum .Net Framework 4.6.2 olarak ayarlanmalıdır.


    C:\Paperwork\Bin\Libs

    • RemObjects.SDK
    • Log4Net

    C:\Paperwork\Bin\PWLibs

    • Paperwork.Connect
    • Paperwork.Library
    • Paperwork.Library.Shared
    • Paperwork.Types
    • Paperwork.TypeUtil
    • Paperwork.Server.Library

    Dokümanlara şu adresten erişebilirsiniz.

    Productivity Layer Kullanılarak Proje Oluşturma

    Visual Studio üzerinden proje oluştururken birkaç noktaya dikkat edilmesi gerekmektedir.

        Oluşturulan projenin fremawork bilgisi minimum .NET FremaWork 4.6.2 olmalıdır

        Platform bilgisi x64 seçilmelidir.

        .NET Core desteklenmemektedir. Productivity Layer .NET Core projelerde kullanılamaz.

    Productivity Layer (Geliştirme Katmanı) kullanırak yapılacak olan geliştirmelerde geliştirme katmanının ihtiyaç duyduğu kütüphaneler de eklenmelidir.

    Yeni Proje Oluşturma

    .Net FrameWork 4.6.2 kullanılarak yeni bir proje oluşturulur.(ConsoleApp,ASP.NET Web App,Windows Form App vs)

    Projeye Referans Ekleme

    PaperWork’ün kurulu olduğu sunucudan yukarıda belirtilen dizinlerden belirtilen kütüphaneler projeye eklenir.

    PL ile PaperWork’e Oturum Açma

    Bu kod parçacığı ile bağlanılacak olan sunucuya girilen kullanıcı bilgisi ile oturum açılır.

    bool SSLEnable = true;
    string CertFile = @"C:\Paperwork\Certs\ggsoft.cer";
    string server = "argusdev.g-gsoft.com";
    string port = "8099";
    Productivity productivity = new Productivity(ClientTypes.ProductivityLayer, SSLEnable, CertFile);
    productivity.InitRemObjects(server, port);
    a_LoginInfo loginInfo = productivity.rLogin.Login("trainer", "gg", "PL Akış Başlatma Uygulaması");
    if (loginInfo.ErrorCode != "0")
        throw new Exception(loginInfo.LMessage);
    

    PL ile Akış Başlatma

    Bu kod parçacığı ile Gelen Fatura Sürecinden bir akış başlatılır.

    productivity.InitAssemblies();
    
    var result = new a_GenericResult();
    var prcs = productivity.rWorkflow.GetProcesses(2);
    var prc = prcs.Items.FirstOrDefault(k => k.ProcessTitle == "GELEN_FATURA_SURECI");
    a_Workflow flwData = new a_Workflow();
    flwData.WorkflowName = string.Format("PL Akış Örneği - {0}",DateTime.Now.ToString());
    flwData.ProcessId = new ObjectID(prc.ProcessId);
    flwData.AclId = new ObjectID(prc.AclId);
    flwData.WorkflowId = new ObjectID(string.Empty);
    flwData.FormName = new ObjectName(prc.FormName);
    flwData.FormVersion = "1";
    flwData.TypeName = new ObjectName(prc.ObjectType);
    flwData.Version = string.Empty;
    flwData.Owner = UserLogin;
    flwData.State = WORKFLOWState.Init;
    flwData.CreateDate = DateTime.Now;
    flwData.Priority = 3;
    flwData.AttachmentId = new ObjectID(string.Empty);
    ITypes fObject = productivity.rDocument.getDocument(new ObjectID(string.Empty), prc.ObjectType);
    PW_SYSOBJECT sObject = fObject as PW_SYSOBJECT;
    sObject.FORM_NAME = flwData.FormName.Value;
    sObject.FORM_VERSION = flwData.FormVersion;
    sObject.OBJECT_NAME = flwData.WorkflowName;
    sObject.ACL_ID = flwData.AclId.Value;
    sObject.OWNER = UserLogin;
    sObject.FOLDER_ID = DefaultObjects.WorkflowDir;
    sObject.OBJECT_TYPE = flwData.TypeName.Value;
    sObject.CONTENT_TYPE = Definitions.CONTENT_TYPE_FLOW;
    sObject.VIRTUAL_DOC_ID = string.Empty;
    sObject.IS_FTS = true;
    sObject.IS_VIRTUAL_DOC = false;
    sObject.IS_LAST_VERSION = true;
    fObject.Set("ETTN", "000d322a-9884-4b2f-93cc-4ba03d68a94d");
    fObject.Set("FATURA_NO", "IPA2050000002634");
    fObject.Set("FATURA_TIPI", "IADE");
    fObject.Set("SATICI_FIRMA_ADI", "GGOSFT");
    fObject.Set("SATICI_FIRMA_VKN", "3390198159");
    flwData.FormData = fObject;
    var createRes = productivity.rWorkflow.CreateWorkflow(flwData, string.Empty);
    if (createRes.ErrorCode != 0)
        throw new Exception(createRes.Message);
    

    PL ile Aktif Oturumu Kapatma

    Bu kod parçacığı ile aktif oturumu sonlandırmak için kullanılır. Her açılan oturumun mutlaka kaptılması gerektiğini unutmayalım!

    a_GenericResult lo = productivity.rLogin.Logout(loginInfo.SessionId);
    if (lo.ErrorCode != 0)
        throw new Exception(lo.Message);

    Bu projenin dosyasına aşağıdaki zip dosyasından ulaşabilirsiniz.