Metot Tanımları
    • 25 Jun 2024
    • 5 Minutes to read
    • Dark
      Light

    Metot Tanımları

    • Dark
      Light

    Article summary

    Metot Tanımları Nedir ?

    Metot, PaperWork mimarisinden çalıştırılabilen, Microsoft .Net kod kütüphaneleridir. İki şekilde metot tanımlayabilirsiniz :

    A.Tanımlama arayüzünde editör ve metot şablonları yardımı ile kodlarınızı oluşturup, test ettikten sonra sisteme kaydedebilirsiniz.

    1) Metot Tanımlamaları Kod bölümünde .Net geliştirme ortamı ile kod yazabildiğiniz bölüm bulunur.

    2) Metotunuz için 5 adede kadar sınıf (class) oluşturabilirsiniz. (Bu düzen için oluşturulmuş bir kuraldır. Dilerseniz aynı sekme içinde birden fazla sınıf da oluşturulabilir)

    3) Buton özellikleri şu şekildedir :  

        Ara : Sınıflarınız içersinde arama paneli ile text  arayabilirsiniz. 

        Ekle : Yeni bir sınıf ekleyebilirsiniz. 

        Çıkar : En son sınıfı kaldırabilirsiniz. 

        Yardım : Şablon olarak oluşturulmuş çok yaygın kullanılan örneklerden yararlanabilirsiniz.

    Metot Şablon Ekranı

    4) Editör yardımyla .net geliştirme ortamı  ve PaperWork geliştirme ortamı kullanımı ile kod yazımı gerçekleştirilebilir.

    5) Metotlarınızı test ve sonuç ekranı ile kontrol edebilirsiniz.

    B. VS ortamında geliştirdiğiniz kütüphanelerinizi sisteme yükleyip, daha önceden oluşturduğunuz iş kurallarınızı ve nesnelerinizi PaperWork'te kullanabilirsiniz.


    Ekle : Kütüphanenizi dizin üzerinden seçtikten sonra listeye ekler.

    Düzenle : Listeye daha önce eklediğiniz kütüphaneyi dizin üzerinden seçtiğiniz ile günceller.

    Sil : Listeye daha önce eklediğiniz kütüphaneyi siler.

    İptal : Seçimle metot eklemeyi iptal edip, başlangıç ekranına döner. Bu durumda kod penceresi tekrar aktif olur.

    Oluşturulan bir metot tanımı kaydedildikten sonra, bir elektronik form içerisinden ya da iş akışından çalıştırılabilir.  Ayrıca mimaride Job Server adı verilen, tanımlara göre metotları zaman bazlı çalıştırabilen bir mekanizma da bulunmaktadır.

    Metotları için hazırlanmış olan bir kod kütüphanesinin en yaygın kullanım amaçları aşağıdaki gibi sıralanabilir;

    ✔ Müşterinin kendi sistemi ile PaperWork platformunun senkronize edilmesi için kullanılabilir. Örneğin her gece 00:00'da çalışarak müşterinin sisteminden belirli bir listeyi okuyup PaperWork sistemindeki liste ile senkronize edebilir. Ya da son bir saat içinde açılmış olan müşteri kayıtları için otomatik olarak PaperWork sisteminde dosya kartı kayıtları oluşturmak için kullanılabilir. Müşteri organizasyon şemasını PaperWork sisteminde güncelleyebilir.

    ✔ Raporlama için kullanılabilir. Örneğin her gece son 24 saat içinde oluşmuş olan kayıtların listesini mail ile ilgili personellere göndermek için kullanılabilir.

    ✔ Müşterinin kendi iş kurallarını içeren kod kütüphaneleri ile birlikte derlenerek, PaperWork içinde çağrıldığı yerde müşterinin kendi iş kurallarını işletmesi için kullanılabilir.

    ✔ Network ya da sunucu üzerinde bulunan bir klasör, belirli periyodlarla kontrol edilerek içinde bulunan belgelerin PaperWork sistemine alınması sağlanabilir.

    ✔ Belirli bir mail adresi dinlenerek ekinde bulunan belgelerin PaperWork sistemine kaydedilmesi sağlanabilir.

    PaperWork sistem sayaçlarının istenilen periyodlarla sıfırlanması için kullanılabilir.

    Karmaşık iş kurallarının formlar ve/veya akışlar arasında paylaşılması için kullanılabilir.

    Erişilmesi için ek Microsoft .Net kütüphanelerine ihtiyaç duyulan sistemlere erişim için elektronik formlarda veya iş akışında kullanılabilir. (Örneğin AS400 erişimlerinde)

    Metot Dönüş Değeri

    Bir metot, sayı veya yazı türünde tek sonuç dönebilir. Sayı türünde cevap dönen bir metot hazırlamak için, yazılacak metotun Paperwork.Methods namespace içinde bulunan PWMethod sınıfından türetilmesi gerekir. Yazı türünde cevap dönen bir metot hazırlamak için aynı namespace içinde bulunan PWRuntimeMethod sınıfından türetilmesi gerekir.

    Metot içinden bir nesne dönmek istiyorsanız, PWRuntimeMethod sınıfını kullanarak, dönüş değeri nesnesinin serialize edilmiş xml'ini dönülebilir. Metotu kullanılan yerde dönen xml'i deserialize ederek tekrar nesne olarak kullanılabilir.

    Serialize / Deserialize Nedir?

    Kısaca bahsedecek olursak serialize ya da serialization, bir veriyi kolayca ulaşılabilir hala getirmek ya da bir veriyi platform bağımsız hale getirmektir (json, xml, binary). Bu durumda deserialize ise: Ulaşılabilir hale gelmiş veriyi tekrardan hangi dilde yazıyorsak o dildeki objeye çevirmektir.

    Yeni Bir Metot Tanımlama (Detay Ekranı)

    Metot oluşturulurken bazı alanların kullanılması gerekir. Aşağıdaki tabloda söz konusu olan alanların adları ve açıklamaları verilmiştir :

    Metot Adı : Tanımlanacak metoda isim verilir, bu isim metot çağırılırken kullanılacaktır. Hatırlanması ve kullanım kolaylığı açısından uygun bir isim verilmesi tavsiye edilir.

    Kütüphane Adı : Metotta kullanılacak olan .Net kütüphanesinin adıdır.

    Sınıf Adı : Bu ad .NET platformunda geliştirilen assembly'de tanımlanan sınıfın adıdır. 

    Akış Metodu : Süreç taslaklarında otomatik adım nesnelerinde kullanılacağını belirtir.

    Kullanım Yeri : Tanımın sistem üzerinde makro veya formlarda mı yoksa tanımlı iş içerisinde mi kullanılacağını belirtir.

    Çalışma Süresi : Metotun çalışması sırasında oluşturulan iş parçacığının en uzun çalışma süresini saniye cinsinden gösterir. Bu süre içerisinde tamamlanmayan metot için sistem bir uyarı gönderir. Bu uyarının amacı bir performans sorunu olup olmadığını veya metodun döngüde kalıp kalmadığını tespit etmektir. Uyarı, kullanım yeri tanımlı iş olarak belirlendi ise, ilgili tanımlı işte belirtilen kullanıcıya, sistem olarak belirlendi ise, akışın ilgili adımındaki hata kullanıcısına gönderilir.

    Çalışma süresi alanına;

    "-1" değeri verilirse, herhangi bir zaman aşımı süresi dikkate alınmaz. 

    "0" değeri verilirse varsayılan değer olarak bir saat zaman aşımı süresi işler. 

    Bunların dışında bir değer verilir ise,  belirtilen süre sonunda bilgilendirme yapılır.

    Çalışma Süresi
    Çalışma süresi PW_METHODS tablosunda EXEC_TIMEOUT kolonuna yazılır. Ara yüzlerden minimum 300 saniye değeri girilebilir. bu değer -1 olduğu durumda metot çalışması bitene kadar beklenir. Bu değer ara yüzden verilemez, veri tabanı üzerinden manuel verilmelidir.

    Dikkat:
    -1 değeri verildiğinde metot eğer çok uzun çalışıyor ise bir sonraki çalışma dönemi geldiğinde de çalışmaz. Bu nedenle dikkatli kullanılması gerekir.

    Açıklama : Metot için bilgi veya çalışma şeklinin özeti gibi bilgilerin girilmesi içindir, html tabanlıdır.

    Dış Kaynak Yolu : Metot içinde kullanılmak istenen ancak PaperWork üzerinde tanımlı olmayan kütüphaneler, "Paperwork\Bin\Libs" dizinine atılarak kullanılabilir. Birden fazla kütüphane kullanılacak ise, noktalı virgül ile ayırlabilir. Eğer "test et" butonu kullanılarak test etme işlemi yapılacak ise, bu işlem IIS tarafında yapılacağı için dosyaların "inetpub\wwwroot\Paperwork\bin" klasörüne de atılması gerekmektedir. "inetpub\wwwroot\Paperwork\bin" klasörüne atıldıktan sonra IIS tekrar başlatılmalıdır.

    Örnek: 

    C:\Paperwork\Bin\Libs\ExcelLibrary.dll; C:\Paperwork\Bin\Libs\WordLibrary.dll

    C:\inetpub\wwwroot\Paperwork\bin. (Test İşlemi için)

    Parametreler : Metotun ihtiyaç duyduğu parametrelerin tanımlandığı alandır.

    Bu verileri girilerek metot kaydedilir ve kullanıma hazır hale getirilmiş olur.

    Metot Kütüphanesi Oluşturma

    PaperWork sistemine kaydedilecek bir metot kütüphanesi hazırlamak için aşağıdaki adımlar takip edilmelidir :

    Microsoft .Net geliştirme ortamında yeni bir kütüphane oluşturulmalıdır. Oluşturulan kütüphane X64 ve Microsoft .Net Framework 4.6.2 olarak ayarlanmalıdır.

    Kütüphaneye, metodu türeteceğimiz temel sınıfları içeren “Paperwork.Server.Library.dll” kütüphanesi referans olarak eklenmelidir. Bu kütüphanenin güncel hali PaperWork kurulum dizini altında, “C:\Paperwork\Bin\PWLibs” klasörü içinde bulunur.

    Eğer metot içerisinde geliştirme katmanı ile işlem yapılacak ise ek olarak geliştirme katmanının ihtiyaç duyduğu diğer kütüphaneler de eklenmelidir.  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

    PaperWork sistemine kayıtlı bir metot çalıştırıldığında, metodun “Execute” metodu tetiklenir.

     public class TestMethod : PWMethod
        {
            private const string appName = "Eğitim-TestMethod-V5.0";
            public override int Execute(Dictionary<string, object> _paramList)
            {
                Log("TestMethod.Execute başladı.");
                var retval = base.Execute(_paramList);
                try
                {
                    var lf = ConnectServer("kullanici", "gg", appName);
                  // ConnectServer(); 
                  // Kullanıcı girilmezse MethodUser tarafından işlemler yapılır.
                    if (lf.ErrorCode.Equals(Definitions.NOERROR))
                    {
                        //...Your Code
                    }
                }
                catch (Exception e)
                {
                    Log(e.Message);
                    ErrorMessage=e.Message;//Hatanın takip edilmesine yardımcı olur
                    retval = -1;
                }
                finally
                {
                    DisConnectServer();
                    Log("TestMethod.Execute bitti.");
                }
                return retval;
            }
        }

    Geliştirme katmanı kullanılarak tanımlı olan metot çalıştırılabilir. Elektronik form içinden tanımlanan metodu çalıştırmak için aşağıdaki kod kullanılabilir :

    function FindSlaTime(createDate) {
        var prms = [];
        var obj = { paramName: 'WorkingType', paramValue: 'Day' };
        prms.push(obj);
        obj = { paramName: 'startDate', paramValue: createDate };
        prms.push(obj);
        obj = { paramName: 'timeAmount', paramValue: '1' };
        prms.push(obj);
        PwForm.ExecuteMethod('UpdateSLATime2', prms).then(result => {
            console.Log(result);
        })
    }

    Aynı metot iş akışından iki türlü çalıştırılabilir. Otomatik aktivite kullanılarak hiç kod yazmadan çalıştırılabilir. Veya Makro adımında aşağıdaki kod bloğu ile metot çalıştırılabilir :

    var prms = new Dictionary<string, object>();
    prms.Add("SUNUCU", "training");
    string result =  Server.productivity.rAssembly.ExecuteMethod ("TestMethod", prms);

    Nasıl Yaparım?

    Metotlar ile ilgili nasıl yaparım makalelerine şu sayfadan erişebilirsiniz.