- 09 Nov 2023
- 2 Minutes to read
- DarkLight
PaperWork .NET Geliştirme kütüphanesi
- Updated on 09 Nov 2023
- 2 Minutes to read
- DarkLight
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;
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.