Bu belge AI tarafından çevrilmiştir. Herhangi bir yanlışlık için lütfen İngilizce sürümüne bakın
Sistemdeki tüm kullanıcı kaynaklı veri değişiklikleri genellikle bir işlem aracılığıyla gerçekleştirilir. Bu işlem genellikle bir düğmeye tıklama şeklinde olur; bu düğme bir formdaki gönder düğmesi veya bir veri bloğundaki bir işlem düğmesi olabilir. İşlem sonrası olaylar, bu düğme işlemlerine ilgili iş akışlarını bağlamak için kullanılır, böylece kullanıcı işlemi başarıyla tamamladığında belirli bir sürecin tetiklenmesi sağlanır.
Örneğin, veri eklerken veya güncellerken, kullanıcılar bir düğmenin "İş akışı bağla" seçeneğini yapılandırabilirler. İşlem tamamlandıktan sonra, bağlı iş akışı tetiklenir.
Uygulama düzeyinde, işlem sonrası olayların işlenmesi ara katman yazılımı (Koa'nın ara katman yazılımı) seviyesinde gerçekleştiği için, NocoBase'e yapılan HTTP API çağrıları da tanımlanmış işlem sonrası olayları tetikleyebilir.
Bu, yerleşik bir eklentidir, kurulum gerektirmez.
Bir iş akışı oluştururken, tür olarak "İşlem Sonrası Olay" seçeneğini belirleyin:

İşlem sonrası olaylar için, oluştururken çalıştırma modunu "Senkron" veya "Asenkron" olarak da seçebilirsiniz:

Kullanıcı işlemi sonrasında hemen yürütülmesi ve sonuç döndürmesi gereken bir süreçse senkron modu kullanabilirsiniz; aksi takdirde varsayılan olarak asenkron mod kullanılır. Asenkron modda, iş akışı tetiklendikten hemen sonra işlem tamamlanır ve iş akışı uygulamanın arka planında bir kuyrukta sırayla yürütülür.
İş akışı tuvaline girin, yapılandırma açılır penceresini açmak için tetikleyiciye tıklayın ve öncelikle bağlanacak koleksiyonu seçmeniz gerekir:

Ardından, yerel veya global olmak üzere iki tetikleme modundan birini seçin:

Bunlar:
Yerel modda, şu anda bağlanmayı destekleyen işlem düğmeleri şunlardır:
Global modu seçtiyseniz, işlem türünü de seçmeniz gerekir. Şu anda "Veri oluşturma işlemi" ve "Veri güncelleme işlemi" desteklenmektedir. Her iki işlem de başarılı olduktan sonra iş akışını tetikler.
Tetikleyici verinin ilişkili verilerini sonraki süreçlerde kullanmanız gerekiyorsa, ön yüklenmesi gereken ilişkisel alanları seçebilirsiniz:

Tetiklendikten sonra, bu ilişkili verileri süreç içinde doğrudan kullanabilirsiniz.
Yerel tetikleme modundaki işlemler için, iş akışı yapılandırıldıktan sonra kullanıcı arayüzüne geri dönmeniz ve ilgili veri bloğunun form işlem düğmesine bu iş akışını bağlamanız gerekir.
"Gönder" düğmesi (ve "Veriyi kaydet" düğmesi dahil) için yapılandırılan iş akışları, kullanıcı ilgili formu gönderdikten ve veri işlemi tamamlandıktan sonra tetiklenecektir.

Düğme yapılandırma menüsünden "İş akışı bağla" seçeneğini seçerek bağlama yapılandırma açılır penceresini açabilirsiniz. Bu pencerede, tetiklenecek istediğiniz sayıda iş akışını yapılandırabilirsiniz; hiçbiri yapılandırılmazsa, tetiklemeye gerek olmadığı anlamına gelir. Her bir iş akışı için, öncelikle tetiklenecek verinin tüm form verisi mi yoksa formdaki belirli bir ilişkisel alanın verisi mi olduğunu belirtmeniz gerekir. Ardından, seçilen veri modeline karşılık gelen koleksiyona göre, bu koleksiyon modeline uygun olarak yapılandırılmış form iş akışını seçin.


İş akışının yukarıdaki arayüzde seçilebilmesi için etkinleştirilmiş olması gerekir.
Burada, bir oluşturma işlemi aracılığıyla bir gösterim yapılacaktır.
Bir "Masraf Talep" senaryosu düşünelim. Bir çalışanın masraf talebini göndermesinin ardından, tutarın otomatik olarak incelenmesi ve limitin üzerindeki tutarlar için manuel inceleme yapılması gerekmektedir. Yalnızca incelemeyi geçen talepler onaylanır ve ardından finans departmanına işlenmek üzere iletilir.
Öncelikle, aşağıdaki alanlara sahip bir "Masraf Talebi" koleksiyonu oluşturabiliriz:
Ardından, "İşlem Sonrası Olay" türünde bir iş akışı oluşturun ve tetikleyicideki koleksiyon modelini "Masraf Talebi" koleksiyonu olarak yapılandırın:

İş akışını etkin duruma getirdikten sonra, sürecin belirli işlem düğümlerini daha sonra yapılandırmak üzere geri döneceğiz.
Daha sonra arayüzde "Masraf Talebi" koleksiyonu için bir tablo bloğu oluşturur, araç çubuğuna bir "Ekle" düğmesi ekler ve ilgili form alanlarını yapılandırırız. Formun "Gönder" işlem düğmesinin yapılandırma seçeneklerinde, düğmenin "İş akışı bağla" yapılandırma iletişim kutusunu açar, tüm form verisini bağlam olarak seçer ve daha önce oluşturduğumuz iş akışını belirleriz:

Form yapılandırması tamamlandıktan sonra, iş akışının mantık düzenlemesine geri dönün. Örneğin, tutar 500 TL'den fazla olduğunda bir yöneticinin manuel inceleme yapmasını isteriz, aksi takdirde doğrudan onaylanır. Onaylandıktan sonra bir masraf talebi kaydı oluşturulur ve finans departmanı tarafından daha fazla işlenir (atlandı).

Finans departmanının sonraki işlemlerini göz ardı edersek, masraf talebi sürecinin yapılandırması tamamlanmış olur. Bir çalışan masraf talebini doldurup gönderdiğinde, ilgili iş akışı tetiklenecektir. Eğer masraf tutarı 500'den az ise, otomatik olarak bir kayıt oluşturulacak ve finansın daha fazla işlem yapması beklenecektir. Aksi takdirde, bir yönetici tarafından incelenecek ve onaylandıktan sonra yine bir kayıt oluşturularak finans departmanına teslim edilecektir.
Bu örnekteki süreç, normal bir "Gönder" düğmesi üzerinde de yapılandırılabilir. Belirli iş senaryosuna göre, sonraki süreçleri yürütmeden önce bir kayıt oluşturmanın gerekip gerekmediğine karar verebilirsiniz.
İşlem sonrası olayların tetiklenmesi yalnızca kullanıcı arayüzü işlemleriyle sınırlı değildir; HTTP API çağrıları aracılığıyla da tetiklenebilir.
Bir HTTP API çağrısı aracılığıyla işlem sonrası bir olayı tetiklerken, iş akışının etkin durumda olup olmadığına ve koleksiyon yapılandırmasının eşleşip eşleşmediğine dikkat etmeniz gerekir, aksi takdirde çağrı başarılı olmayabilir veya bir hata oluşabilir.
Bir işlem düğmesine yerel olarak bağlı iş akışları için, aşağıdaki gibi çağrı yapabilirsiniz (posts koleksiyonunun oluşturma düğmesini örnek alarak):
Burada URL parametresi triggerWorkflows, iş akışının anahtarıdır ve birden fazla iş akışı virgülle ayrılır. Bu anahtar, iş akışı tuvalinin üst kısmındaki iş akışı adının üzerine fareyle gelindiğinde elde edilebilir:

Yukarıdaki çağrı başarılı olduktan sonra, ilgili posts koleksiyonunun işlem sonrası olayı tetiklenecektir.
Harici çağrılar da kullanıcı kimliğine dayanması gerektiğinden, HTTP API aracılığıyla çağrı yaparken, normal arayüzden gönderilen isteklerle aynı şekilde kimlik doğrulama bilgilerinin sağlanması gerekir. Buna Authorization istek başlığı veya token parametresi (giriş yapıldığında elde edilen token) ve X-Role istek başlığı (kullanıcının mevcut rol adı) dahildir.
Bu işlemde bire-bir ilişkisel veriler için bir olayı tetiklemeniz gerekiyorsa (bire-çok henüz desteklenmemektedir), ilişkisel alanın tetikleyici verisini belirtmek için parametrede ! kullanabilirsiniz:
Yukarıdaki çağrı başarılı olduktan sonra, ilgili categories koleksiyonunun işlem sonrası olayı tetiklenecektir.
Eğer olay global modda yapılandırılmışsa, ilgili iş akışını belirtmek için triggerWorkflows URL parametresini kullanmanıza gerek yoktur. İlgili koleksiyon işlemini doğrudan çağırmanız tetikleme için yeterlidir.
Aşağıdaki şekilde gösterildiği gibi:

İşlem sonrası olaylar ve koleksiyon olayları benzerlik gösterir; her ikisi de veri değişikliklerinden sonra tetiklenen süreçlerdir, ancak uygulama düzeyleri farklıdır. İşlem sonrası olaylar API düzeyine odaklanırken, koleksiyon olayları koleksiyondaki veri değişikliklerine yöneliktir.
Koleksiyon olayları sistemin daha alt katmanlarına yakındır. Bazı durumlarda, bir olayın neden olduğu bir veri değişikliği başka bir olayı tetikleyerek zincirleme bir reaksiyon yaratabilir. Özellikle, bazı ilişkili koleksiyonlardaki veriler mevcut koleksiyonun işlemi sırasında değiştiğinde, ilişkili koleksiyonlarla ilgili olaylar da tetiklenebilir.
Koleksiyon olaylarının tetiklenmesi kullanıcıyla ilgili bilgi içermez. Buna karşılık, işlem sonrası olaylar kullanıcı tarafına daha yakındır ve kullanıcı eylemlerinin bir sonucudur. İş akışının bağlamı da kullanıcıyla ilgili bilgileri içereceğinden, kullanıcı eylemleriyle ilgili süreçleri işlemek için daha uygundur. NocoBase'in gelecekteki tasarımında, tetikleme için kullanılabilecek daha fazla işlem sonrası olay genişletilebilir, bu nedenle kullanıcı eylemlerinin neden olduğu veri değişiklikleri süreçlerini yönetmek için işlem sonrası olayları kullanmanız daha çok tavsiye edilir.
Diğer bir fark ise, işlem sonrası olayların belirli form düğmelerine yerel olarak bağlanabilmesidir. Birden fazla form varsa, bazı form gönderimleri bu olayı tetikleyebilirken diğerleri tetiklemeyebilir. Koleksiyon olayları ise tüm koleksiyondaki veri değişiklikleri için geçerlidir ve yerel olarak bağlanamaz.