17-Makro
    • 03 Oct 2024
    • 2 Minutes to read
    • Dark
      Light

    17-Makro

    • Dark
      Light

    Article summary

    Makro Aktivitesi

    İş akışlarında kod yazma ihtiyacınız olduğunda kullanılan aktivitedir. İş akışında kod yazma esnasında dikkat edilmesi gereken konu şudur;

    Bir iş akışında iki mantık bulunur;

    UI Logic: (Ara yüz mantığı) Bir listeden seçildiğinde verinin bir alana yazılması, bazı alanların duruma göre zorunlu olması, bazı alanların seçime göre görünürlüğünün kaybolması gibi sadece ara yüzü ilgilendiren kodlar "Ara yüz mantığı" olarak adlandırılır ve Elektronik Formlarda kodlanmalıdır. Elektronik Form tasarım ara yüzünde bulunan sihirbaz ile bu kodların çok büyük bir bölümü üretilmektedir.

    Business Logic: (İş Mantığı) Herhangi bir kullanıcı seçimi gerektirmeyen, son kullanıcının mantığını bilmesine gerek duyulmayan, ara yüzde çalıştığında zaman kaybı olarak görülebilecek, gerçek iş kurallarını içeren kodlar iş mantığı olarak adlandırılır.

    Bu iki kod parçacığı keskin bir bıçak gibi ikiye ayrılamaz, "Ara yüzlerde (Elektronik Formlarda) ne kadar az kod bulunur ise o kadar sağlıklı olur" yaklaşımı genel prensiptir.

    Ara Yüz ve İş Mantığı
    ASP.NET gibi platformlarda geliştirme yapmış geliştiriciler genelde kolay olduğu için her türlü kodu tek sayfa içinde yazmaya alışmışlardır. Modern geliştirme ortamlarında olduğu gibi PaperWork bu kodları 2 parçaya ayırır.

    Makro aktivitesinin bir giriş ve bir çıkışı bulunur.

    Makro

    Bu sekme içerisinde C# dilinde kod yazılabilir. Kod yazım esnasında PaperWork geliştirme katmanı ve standart .NET kütüphaneleri metodları kullanılabilir. Bu bölümün intellisense özelliği bulunur. Sekmenin yanında bulunan kavuniçi ikona tıklanarak kod yazma ekranı tam ekran haline getirilebilir.

    Makro ve Kural aktivitelerinde aşağıda belirtilen komut ve değişkenler de kullanılabilir. Daha detaylı bilgi Eğitimler sayfasında kısa yolu bulunan Geliştirme Katmanı Yönetim Kılavuzunda verilmiştir.

    String actId(Activity ID) İş adımının bulunduğu adımın numarasıdır.
    string TypeNameAkışın Tip Adı.
    string WorkflowIdÇalışan İş Akışının Nesne Numarası. (Instance)
    string ProcessIdÇalışan İş Akışı Tasarımının Nesne Numarası(Tasarım)
    string WorkItemIdBulunulan adımın Nesne Numarası.
    string CalendarIdİş Akışının Takvim Nesne Numarası.
    string AttachmentIdİş Akışının var ise ekinin Nesne Numarası
    Paperwork.Types.ITypes FormDataAkış tipinin bilgilerinin bulunduğu sınıf.
    MainRule RuleEngineKural Motoru
    object getAttribute(string AttributeName)Akış Tipinin alanlarının bilgilerini almak için kullanılır. AttributeName, alınacak alanın adıdır.
    object ConvertData(object value, string DestType)Bir veri tipini başka bir veri tipine çevirmek için kullanılır.
    void Log(string message)Tarihçe oluşturmak için kullanılır. WorkFlow Servisi loglarına yansır.
    bool LoadObject()Akış tipi verisini yükler.
    ITypes LoadObject(string DocId, string typeName)Verilen parametreye göre bir Tip verisini yükler.
    bool SaveObject()Yüklenen akış verisini değişiklikler sonucu kaydeder.
    bool SaveObject(ITypes DocData)Parametrede verilen tipin verileri değiştirildikten sonra kaydeder.
    bool LoadAttachment()İş Akışı eki olan tipin verilerini yükler.
    bool SaveAttachment()İş Akışı eki olan tipin verilerini değişiklik sonrası kaydeder.
    String getPerformer()Verilen parametrelere göre akışın bulunduğu adıma göre istenilen kullanıcının bulunmasını sağlar. Aşağıdaki PERFORMERType isimli enumaration, bulunabilecek kullanıcıları içerir. actId yukarıda da belirtilen sabit bir değerdir. Aşağıdaki bölümde 
    public enum PERFORMERType
      {
        [Description("Onceki Kullanıcı")]
        PreviousUser = 1,
        [Description("Onceki Kullanıcı Yoneticisi")]
        PreviousUserManager = 2,
        [Description("Akış Sahibi")]
        WorkflowOwner = 6,
        [Description("Akış Sahibi Yöneticisi")]
        WorkflowOwnerManager = 7,  }
    Kullanıcı
    Makro adımları sunucu tarafında  "İş Akış Sunucusu"  kullanıcısı yetkileri ile çalıştırılır ve bu kullanıcının her türlü işlemi yapmaya yetkisi vardır. Eğer bu adımda maskelenen veri üzerinde işlem yapılıyor ise veriler maskelenmez. Maskeli bir veri alanı kopyalanarak maskesiz bir veri alanına eşitleniyor ise veri maskelenmeden eşitlenir.
    Hata Takibi
    Makro aktivitesi için Hata Takibi sayfası incelenmelidir. 

    What's Next