Bu belge AI tarafından çevrilmiştir. Herhangi bir yanlışlık için lütfen İngilizce sürümüne bakın
İşlem Öncesi Olayı eklentisi, işlemler için bir engelleme mekanizması sağlar. Bu mekanizma, yeni kayıt oluşturma, güncelleme veya silme işlemlerine yönelik bir istek gönderildikten ancak işlenmeden önce tetiklenebilir.
Tetiklenen iş akışında bir "İş akışını sonlandır" düğümü yürütülürse veya başka bir düğüm yürütülemezse (bir hata nedeniyle veya tamamlanamama durumu), ilgili form işlemi engellenecektir. Aksi takdirde, planlanan işlem normal şekilde yürütülür.
"Yanıt mesajı" düğümüyle birlikte kullanarak, istemciye döndürülecek bir yanıt mesajı yapılandırabilir ve bu sayede istemciye uygun bildirimler sunabilirsiniz. İşlem Öncesi Olayları, istemci tarafından gönderilen oluşturma, güncelleme ve silme gibi işlem isteklerini onaylamak veya engellemek amacıyla iş doğrulama veya mantık kontrolleri için kullanılabilir.
Bir iş akışı oluştururken, tür olarak "İşlem Öncesi Olayı"nı seçin:

Engelleme iş akışının tetikleyicisinde ilk olarak yapılandırılması gereken, işlemin karşılık geldiği koleksiyondur:

Ardından engelleme modunu seçin. Bu iş akışına bağlı olan işlem düğmesini engellemeyi seçebileceğiniz gibi, bu koleksiyon için seçilen tüm işlemleri engellemeyi de seçebilirsiniz (hangi formdan geldiğine bakılmaksızın ve ilgili iş akışını bağlamaya gerek kalmadan):

Şu anda desteklenen işlem türleri "Oluştur", "Güncelle" ve "Sil"dir. Aynı anda birden fazla işlem türü seçilebilir.
Tetikleyici yapılandırmasında "Engellemeyi yalnızca bu iş akışına bağlı bir form gönderildiğinde tetikle" modu seçiliyse, form arayüzüne geri dönerek ilgili işlem düğmesine bu iş akışını bağlamanız gerekir:

İş akışı bağlama yapılandırmasında, ilgili iş akışını seçin. Genellikle, tetikleyici veri için varsayılan bağlam seçimi olan "Tüm form verileri" yeterlidir:

İşlem Öncesi Olayı'na bağlanabilecek düğmeler şu anda yalnızca yeni kayıt oluşturma veya güncelleme formlarındaki "Gönder" (veya "Kaydet"), "Veriyi güncelle" ve "Sil" düğmelerini desteklemektedir. "İş akışını tetikle" düğmesi desteklenmez (bu düğme yalnızca "İşlem Sonrası Olayı"na bağlanabilir).
"İşlem Öncesi Olayı"nda, ilgili işlemin engellenmesine neden olacak iki koşul vardır:
Engelleme koşulları karşılandıktan sonra, ilgili işlem artık yürütülmez. Örneğin, bir sipariş gönderimi engellenirse, ilgili sipariş verileri oluşturulmaz.
"İşlem Öncesi Olayı" türündeki bir iş akışında, farklı işlemler için tetikleyiciden gelen farklı veriler iş akışında değişken olarak kullanılabilir:
| İşlem Türü \ Değişken | "Operatör" | "Operatör rolü tanımlayıcısı" | İşlem parametresi: "ID" | İşlem parametresi: "Gönderilen veri nesnesi" |
|---|---|---|---|---|
| Bir kayıt oluştur | ✓ | ✓ | - | ✓ |
| Bir kaydı güncelle | ✓ | ✓ | ✓ | ✓ |
| Tek veya çoklu kayıtları sil | ✓ | ✓ | ✓ | - |
İşlem Öncesi Olayı'ndaki "Tetikleyici verisi / İşlem parametreleri / Gönderilen veri nesnesi" değişkeni, veritabanındaki gerçek veri değil, işlemin gönderilmesiyle ilgili parametrelerdir. Veritabanındaki gerçek verilere ihtiyacınız varsa, bunları iş akışı içinde bir "Veri sorgula" düğümü kullanarak sorgulamanız gerekir.
Ayrıca, silme işlemi için, işlem parametrelerindeki "ID" tek bir kaydı hedeflerken basit bir değerdir, ancak birden fazla kaydı hedeflerken bir dizidir.
Tetikleyiciyi yapılandırdıktan sonra, iş akışında ilgili karar mantığını özelleştirebilirsiniz. Genellikle, belirli iş koşullarının sonuçlarına göre "İş akışını sonlandır"ıp sonlandırmayacağınıza karar vermek ve önceden ayarlanmış bir "Yanıt mesajı" döndürmek için "Koşul" düğümünün dallanma modunu kullanırsınız:

Bu noktada, ilgili iş akışının yapılandırması tamamlanmıştır. Artık iş akışının koşul düğümünde yapılandırılan koşulları karşılamayan verileri göndermeyi deneyerek engelleme mantığını tetikleyebilirsiniz. Bu durumda döndürülen yanıt mesajını göreceksiniz:

"İş akışını sonlandır" düğümü "Başarılı" durumuyla çıkacak şekilde yapılandırılmışsa ve bu düğüm yürütüldüğünde, işlem isteği yine de engellenecektir, ancak döndürülen yanıt mesajı "Başarılı" (hata yerine) durumuyla görüntülenecektir:

Yukarıdaki temel talimatları birleştirerek, bir "Sipariş Gönderimi" senaryosunu örnek alalım. Kullanıcı bir sipariş gönderdiğinde, seçilen tüm ürünlerin stoklarını kontrol etmemiz gerektiğini varsayalım. Seçilen herhangi bir ürünün stoğu yetersizse, sipariş gönderimi engellenir ve ilgili bir uyarı mesajı döndürülür. İş akışı, tüm ürünlerin stoğu yeterli olana kadar her ürünü döngüsel olarak kontrol edecek, bu noktada devam edecek ve kullanıcı için sipariş verilerini oluşturacaktır.
Diğer adımlar talimatlardakiyle aynıdır. Ancak, bir sipariş birden fazla ürün içerdiğinden, veri modelinde "Sipariş" <-- M:1 -- "Sipariş Kalemi" -- 1:M --> "Ürün" şeklinde çoktan çoğa bir ilişki eklemenin yanı sıra, "İşlem Öncesi Olayı" iş akışına, her ürünün stoğunun yeterli olup olmadığını yinelemeli olarak kontrol etmek için bir "Döngü" düğümü eklemeniz gerekir:

Döngü için nesne, gönderilen sipariş verilerindeki "Sipariş Kalemi" dizisi olarak seçilir:

Döngü içindeki koşul düğümü, döngüdeki mevcut ürün nesnesinin stoğunun yeterli olup olmadığını belirlemek için kullanılır:

Diğer yapılandırmalar temel kullanımdaki yapılandırmalarla aynıdır. Sipariş nihayet gönderildiğinde, herhangi bir ürünün stoğu yetersizse, sipariş gönderimi engellenecek ve ilgili bir uyarı mesajı döndürülecektir. Test sırasında, birinin stoğu yetersiz, diğerinin stoğu yeterli olan birden fazla ürün içeren bir sipariş göndermeyi deneyin. Döndürülen yanıt mesajını görebilirsiniz:

Gördüğünüz gibi, yanıt mesajı ilk ürün olan "iPhone 15 pro"nun stoğunun yetersiz olduğunu belirtmezken, yalnızca ikinci ürün olan "iPhone 14 pro"nun stoğunun yetersiz olduğunu belirtmiştir. Bunun nedeni, döngüde ilk ürünün stoğunun yeterli olması nedeniyle engellenmemesi, ikinci ürünün stoğunun yetersiz olması nedeniyle sipariş gönderiminin engellenmesidir.
İşlem Öncesi Olayı, istek işleme aşamasında enjekte edildiği için HTTP API çağrıları aracılığıyla da tetiklenmeyi destekler.
İşlem düğmelerine yerel olarak bağlı iş akışları için, bunları şu şekilde çağırabilirsiniz (posts koleksiyonunun oluşturma düğmesini örnek alarak):
URL parametresi triggerWorkflows, iş akışının anahtarıdır; birden fazla iş akışı anahtarı 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ı yapıldıktan sonra, ilgili posts koleksiyonunun İşlem Öncesi Olayı tetiklenecektir. İlgili iş akışı senkronize olarak işlendikten sonra, veriler normal şekilde oluşturulacak ve döndürülecektir.
Yapılandırılan iş akışı bir "Son düğüm"e ulaşırsa, mantık arayüz işlemiyle aynıdır: istek engellenecek ve hiçbir veri oluşturulmayacaktır. Son düğümün durumu başarısız olarak yapılandırılırsa, döndürülen yanıt durum kodu 400 olacaktır; başarılı olursa 200 olacaktır.
Son düğümden önce bir "Yanıt mesajı" düğümü de yapılandırılırsa, oluşturulan mesaj yanıt sonucunda da döndürülecektir. Hata durumundaki yapı şöyledir:
"Son düğüm" başarılı olarak yapılandırıldığında mesaj yapısı şöyledir:
Bir iş akışına birden fazla "Yanıt mesajı" düğümü eklenebildiği için, döndürülen mesaj veri yapısı bir dizidir.
İşlem Öncesi Olayı global modda yapılandırılmışsa, HTTP API'yi çağırırken ilgili iş akışını belirtmek için triggerWorkflows URL parametresini kullanmanıza gerek yoktur. İlgili koleksiyon işlemini doğrudan çağırmanız tetikleyecektir.
HTTP API çağrısı aracılığıyla bir işlem öncesi olayını tetiklerken, iş akışının etkinleştirme durumuna ve koleksiyon yapılandırmasının eşleşip eşleşmediğine de dikkat etmeniz gerekir, aksi takdirde çağrı başarılı olmayabilir veya bir hata oluşabilir.