Cabitaş Mühendislik Tic. Ltd. Şti.

FileMaker: Transaction Logging

  • 25.07.2023
  • 414 Görüntülenme

FileMaker Transaction Logging | FileMaker İşlem Günlüğü

 

Bu blog yazısında, veritabanlarında güvenilirlik ve veri bütünlüğü sağlamada hayati bir rol oynayan 'transaction logging' yöntemini daha detaylı bir şekilde ele alarak, bu scriptin yeteneklerini keşfedeceğiz.

FileMaker script triggerları ilk olarak FileMaker Pro 10 ile gelen önemli gelişmelerden birisiydi. Çok uzun süredir beklediğimiz bir özellik olmasına gerçekten ihtiyaç olmadıkça kullanmamayı tercih ettiğimiz özellik. Kullandığımızda ise bambaşka fırsatlar sunuyor. Tam da bu noktada Script Trigger’ları konu aldığımız mini FileMaker eğitimini anmadan geçemeyiz, YouTube kaydına buradan ulaşabilirsiniz.

Claris FileMaker 2023 sürümünde ise “On Window Transaction” trigger heyecanlandıran yenilik olarak kayıtlarımıza geçti. Bu hafta yayınladığımız mini filemaker eğitiminde bu konuyu temel seviyede ele aldık.

Aman dikkat!

Transaction logging (işlem günlüğü olarak Türkçeye çevirebiliriz), “Audit Log” diye ifade edilen (Türkçe ifadeyle denetim günlüğü) bir loglama sistemi değildir. Resmi FileMaker dökümanlarında da bununla ilgili notlar görebilirsiniz. Kısaca neden olmadığını şu maddelerle özetleyebiliriz:

  • Trigger bir log kaydı oluşturmaz, ama bunun için bir araç olabilir.
  • Truncate table komutu tetiklemez (desteklenmez).
  • Harici bir (external) dosyadan yapılan değişiklikler tetiklemez.
  • DataAPI, ODBC, OData, PHP/XML gibi arayüzleri desteklememesi
  • Oluşturulan log kayıtlarına tam erişim hakkında sahip kullanıcılar müdahale edebilir.

Yukarıda özetlenen başlıca sebepler neden bu özelliği “Audit Log” olarak isimlendirmediğimizi hem de bir log sisteminde olası açıkları ve beraberinde alınabilecek önlemler üzerine kafa yormaya başlamak için değerli.

 

OnWindowTransaction Nasıl Çalışır?

OnWindowTransaction dosya genelinde tanımlanan bir script trigger’dır (betik tetikleycisi). “Transaction olayı” gerçekleştiği anda bir script tetikler.

 

Peki nedir FileMaker’daki Transaction?

Transaction tabiri FileMaker 19.6 sürümünde gelen Open Transaction/Close Transaction/Revert Transaction script adımları ile terminolojiye girmiş oldu. Normalde FileMaker “commit” yani kullanıcının girdiği/düzenlediği verileri sunucu üzerindeki veritabanına işleme operasyonunu çeşitli şekillerde (ekran üzerinde boş bir yere tıkladığınızda, layouttan çıktığınızda, Commit Record komutu çalıştırdığınızda veya pencereyi kapattığınızda) yapar. FileMaker 19.6 ile gelen yeni script adımlarının yaptığı temel şey FileMaker istemcisinde (client) yapılan değişikliklerin sunucu üzerinde işlenmesini yönetmek diyebiliriz. Bu konu ile ilgili mini filemaker eğitimine YouTube kanalımızdan ulaşabilirsiniz.

Olası karışıklığı önlemek adına kısa bir not, Open/Commit Transaction kullanmanızın ya da kullanmamanızın OnWindowTransaction tetikleyicisi için bir etkisi olmaz.

OnWindowTransaction dosya genelinde tanımlı olduğu için herhangi bir pencerede veritabanı işlemi, kayıt ekleme, kayıt düzenleme veya kayıt silme, olduğunda tetiklenir. File/File Options ekranından Trigger’ı aktif hale getirebilirsiniz.

Scriptin bir parametre ile tetiklenmesi bu trigger’a özel bir durumdur. Tetiklediğiniz scriptte Get(ScriptParameter) fonksiyonu ile parameteri alıp işleyebilirsiniz. Otomatik oluşturulan script parametresi varsayılan (default) olarak aşağıdaki değerleri içeren bir JSON verisidir.

{

    "DosyaAdı" :

    {

        "BazTabloAdı" :

        [

            [

                "İşlem (New, Delete, Modify)",

                Kayıt ID’si,

                "Ek bilgiler"

            ]

        ]

    }

}

 

Birden fazla tabloda değişiklik yapıldıysa (örneğin portallar ve ilişkiler kullanarak farklı tablolarda ekleme, silme, değişiklik yaptıysanız) JSON datanız biraz daha kalabalıklaşacaktır. Ama temel JSON veri yapısı korunacağı için bilgileri parçalamak JSON fonksiyonları ile oldukça pratik olacaktır. Benzer şekilde dosyalar arası ilişkiniz varsa JSON datasında diğer dosya isimleri için “key” ve içeriği JSON nesnesi olarak parametreye eklenecektir.

 

Takip Ettiğiniz Verilerin Belirlenmesi

OnWindowTransaction varsayılan parametere ile çok temel bilgiler sunar, bu kayıt değişikliklerini izleyeceğiniz bir log için yeterli değildir. Opsiyonel bir alanla istediğiniz ilave bilgileri JSON parametresine ilave edecektir. Bu ek bilginin neler içereceği konusunda özgürsünüz. Doğrudan metin (text) ifadeler yazabileceğiniz gibi ayıklaması kolay olacak yapısal bir JSON verisini de ek bilgi olarak script parametresine ekleyebilirsiniz.

Ek bilgi alanı her daim güncel bilgileri içermesi bakımından “Unstored Calculation” bir alan olmalıdır. Bu hesaplama (calculation) alanına ilgili tablodaki önemli alanların verilerini içerecek bir JSON verisini üretecek formülü yazabilirsiniz. Mini Eğitimde yaptığımız uygulamada ise yazılım geliştirme sürecini ve bakım işlemlerini hızlandırmak için ExecuteSQL formülünün gizli ama güçlü bazı özellikleri ile tablodaki Calculation ve Summary dışındaki dışındaki tüm alanların JSON formatında global bir değişkene aldık. JSON değişkenindeki belirlenmiş alan isimlerini kullanarak kayıt içindeki bilgileri JSON formatında hesaplamasını sağladık. Tabiki aynı formülü tüm tablolarda yazmak yerine özel fonksiyon (custom function) kullanmak daha akılcı olacaktır. Bu konuyu inceledikleri blog makalesinde Wim Decorte’nin yazdığı harika bir custom function ile örneğimize devam ettik.

 

Script ne yapmalı?

Artık bir işlem yapıldığında bir script tetiklenebilir durumda, ve bu script kayıt içindeki güncel tüm verilere Get(ScriptParameter) fonksiyonu ile ulaşabiliyor. Buradan sonra yapılabilecekler ek bilgilerde olduğu gibi siz FileMaker geliştiricisine bağlı. Konudan çok sapmamak adına kayıt üzerinde bir değişiklik yapıldığı anda bilgileri kayıt altına almak için bir script yazalım. Bunun için bir Log tablosuna ihtiyacımız olacak, ancak Log tablosunu ayrı bir FileMaker dosyasına tanımlamanın avantajları olabilir. Birincisi işlemi diğer dosyada yaparak Log kayıt girişinin log’unu engellemek için ilave bir işleme gerek kalmayacak. Bir diğeri ise zaman içinde büyümesi muhtemel Log dosyasını izole ederek yedekleme prosedürlerini bağımsız yönetebilmek.

Trigger ile tetiklenen script basitçe Log dosyasındaki scripti tetikleyerek aldığı parametreyi diğer dosyaya/scripte iletebilir. Log dosyamızdaki script ise yine çok basit bir görev olarak aldığı parametreyi açacağı yeni kayda yazmış olacak. Mini eğitimde kullandığımız örnek dosyada ise çalışan script sadece parametreyi bir değişkene alıyor ve “New Record” (Yeni Kayıt) script adımı tetikliyor. Log tablosundaki ilgili alanda (örnek dosyadaki adı JsonLogGirisi) Auto Enter marifetiyle değişkene yazılan değerleri otomatik olarak alıyor, otomatik gelen bu değerin kullanıcının müdahale etmesini engellemek için (Full Access kullanıcılar dahil) “Prohibit modification of value during data entry” seçeneği ile sağlayabiliyoruz.

 

Sonuç & Değerlendirme

FileMaker 2023 ile gelen ve bize log tutma imkanı sunan özelliği temel olarak incelemiş olduk. Her nimetin külfeti olduğu gerçeği burada da geçerli. Yapılan her değişiklikte bir script çalıştırmak, yapılanları kayıt altına almak ilave operasyon, IO (input/output, Türkçe ifadeyle giriş/çıkış) işlemi demek. Bazı şartlarda milisaniyeler sürecek bu işlemler, özellikle çoklu işlemlerde, iyi yönetilmediği durumlarda performans sorunlarına sebep olabilir. Hangi detayda ne kadar faydası olacağı ve nasıl uygulanacağı proje özelinde değerlendirilmesi faydalı olacaktır.

OnWindowTransaction’u sadece loglama ile kısıtlı tutmak da doğru değil, ilk akla gelen potansiyel kullanımları şunlar olabilir: 

  • Silinen kayıtları arşivleme
  • Kayıt değişikliklerini izleme
  •  Veritabanı Şema değişikliklerini izleme
  • İlişkiyi kayıtlara göre ana kaydı/özetleme kayıtlarını güncelleme

Mini FileMaker Eğitiminde ele aldığımız OnWindowTransaction konusu ile ilgili örnek dosyaları aşağıdan indirebilir, youtube kaydında uygulamasını görebilirsiniz.

Örnek Dosya 1
Örnek Dosya 2

Eğer Claris FileMaker'ın temel veritabanı ilişkileri ve transaction logging konusundaki bilginizi arttırmak ve veritabanı yönetimi ve geliştirmesi konusunda daha yetkin hale gelmek istiyorsanız bu mini eğitim tam size göre! Hazır mısınız? O zaman, Claris FileMaker ile veritabanı ilişkilerinin dünyasına adım atmaya başlayalım!

Videomuzu izledikten sonra, FileMaker'ın sunduğu yeni özelliklerle uygulama geliştirme konusunda daha iyi bir anlayışa sahip olacaksınız. İşletmeniz için özelleştirilmiş uygulamalar oluşturmak için ihtiyacınız olan araçları ve becerileri öğreneceksiniz.

Ayrıca, FileMaker'ın farklı lisans türleri hakkında daha fazla bilgi edinmek isterseniz, FileMaker Lisans sayfamızı ziyaret edebilirsiniz. Bu sayfada, FileMaker'ın farklı lisans seçenekleri, fiyatlandırma bilgileri ve lisans satın alma işlemi hakkında bilgiler bulabilirsiniz. Eğitimimizle ilgili herhangi bir konuda veya lisans satın alma yardımı gibi konularda yardıma ihtiyacınız olursa, bizimle iletişime geçmekten çekinmeyin. Size yardımcı olmaktan mutluluk duyacağız.

Cabitaş Mühendislik, Claris FileMaker eğitimleri ile çözümlerin nasıl yapıldığından ziyade neyin neden yapıldığına hâkim olun. Kuruma özel ve genel eğitimlerimiz ile ilgili bilgi alın.

Siz de FileMaker ile tanışmak veya FileMaker becerilerinizi geliştirmek istiyorsanız Cabitaş Mühendislik profesyonel Claris FileMaker eğitimlerimize katılın, şirketinize hız katın. Claris FileMaker Eğitimi hakkında detaylı bilgi için FileMaker Eğitim sayfamıza göz atabilirsiniz.

Cabitaş Mühendislik, Claris Türkiye Çözüm ortağı olarak profesyonel FileMaker birikimimizle Claris platformunda eğitimdanışmanlık, özel FileMaker yazılım geliştirme hizmetleri sunuyoruz. Ayrıca Cabitaş Mühendislik çözüm ortağı yapısı ile bölgenize veya çalıştığınız sektöre göre sizi Claris çözüm ortakları ile bir araya getiriyoruz.

Sosyal medya hesaplarımızı takip edin. Mini FileMaker Eğitimlerimizden haberdar olun.

FileMaker projenizde desteğe ihtiyacınız olduğunda doğrudan bizimle iletişim formundan irtibata geçebilirsiniz.

Osman Cabi Profile Picture
Osman Cabi

F. Osman Cabi, değerli FileMaker geliştiricimiz ve şirketimizin İşyeri İnovasyon Mühendisidir. Osman, Çankaya Üniversitesi, Endüstri Mühendisliği mezunu olup, 2007 yılında Cabitaş ekibine katılmıştır.

Osman, FileMaker platformunda uzun yıllar deneyime sahiptir ve bu alanda çalışmak onun tutkusudur. Boş zamanlarını dahi FileMaker ile geçirmeyi sever.

FileMaker: Transaction Logging

İndirme linki mail adresinize gönderilmiştir.

Bu web sayfası kullanıcı deneyiminizi geliştirmek için çerezler kullanır.