Ana içeriğe geç

Webhook Mimarisi

  • Webhook : yapı aslında kullanıcıların bir işlemi yapması bu sistemde herhangi bir işlem olabilir bu işlem gerçekleştikten sonra dinamik olarak yeni bir işlem tetikleme tanımlama mimarisidir.
  • Örnek olarak kullanıcı bir fatura oluşturur bu işlem aslında Source SatisFaturaMaster Event EbelgeOlustur olarak tanımlanabilir bu kurallar doğrudan geliştiricilerin kabul ilkeleridir. İlgili işlem oluşturuğunda aşağıda görünen akış işler

notification yonlendirme.drawio.png

  • Başka bir akış olarakta aşağıdaki resim örnek verilebilir.

ornek islem.drawio

  • Sistemde aslında 3 rol vardır. Tetikleme, Filtreleme ve İşleme:

Tetikleme

  • Tetikleme : Geliştiricinin Filtreleme Yapısına kayıt göndermesidir.

var q = new SatisFaturaMaster();
var groupGuid = Guid.NewGuid();

await q.SendWebhookRequest("EBelgeEvrakTetikleme", q.EntegreSeri + q.EntegreNo, q.Tarih, groupGuid);
- Yukarda gördüğünüz gibi bir model bu SatisFaturaMaster, bir groupGuid bu değişken aslında ortak takip edilmek istenen kayıtları ayırır ve EBelgeEvrakTetikleme yani bir event oluşturarak SendWebhookRequest methodunu kullanır

Filtreleme

  • Filtreleme : Gönderilen kayıtlarla eşleşen bir webhook bulma işlemidir.

https://sfa.octapull.com/notification/alpata/webhook-tanim

webhooktanimlama

  • Yukarda göründüğü gibi webhook hedef bilgilerini içeririr.

webhookfiltre

  • Asıl filtre kısmı önemlidir çünkü Source Event ve modelin içindeki alanların değerlerine göre eşleştirme işlemi yapılabilir.
  • Bir event için birden fazla tanım yapılabilir.
  • Bu kısımda loglar oluşur

İşleme

  • İşleme aslında kendisine rabbitmq üzerinden gönderilen url, secret ve body bilgileri ile httprequest atan bir yapıdır.
  • Rabbitmq üzerinden tek tek kayıtları çeker ve sonuçlarını yine ona o sırada gönderilen dblog kaydına yazar.