Skip to main content

Anlık Bildirim

Akış belirli bir adıma geldiğinde seçtiğiniz kullanıcı ve pozisyonlara anlık (push) bildirim gönderen nesnedir. Onay beklemez, akışı durdurmaz: bildirimi yollar ve akış bir sonraki adıma devam eder. Mesajın konusu ile gövdesi çok dilli tanımlanır, böylece her alıcı kendi dilinde görür.

Ne zaman kullanılır?

İlgili kişileri bir gelişmeden hızlıca haberdar etmek istediğinizde kullanın: talep onaylandı, belge bir sonraki birime düştü, süreç tamamlandı gibi. Yalnızca bildirim yeterliyse bu nesne idealdir. Aynı anda hem e-posta hem bildirim göndermek, ek dosya iliştirmek ya da daha zengin alıcı çözümlemesi gerekiyorsa Bilgilendirme (FlowMail) nesnesini tercih edin.

Ayarlar

Anlık Bildirim nesnesi seçildiğinde tasarımcıda şu başlıklar düzenlenir:

AyarAçıklama
IsEnabledBildirimin etkin olup olmadığı; kapatıldığında adım bildirim göndermeden geçilir.
MembersBildirimin gideceği alıcıları (kullanıcı/pozisyon) tutan üye seçenekleri.
SubjectBildirim başlığı; çok dilli (Dictionary<string, string>).
MessageBildirim gövdesi; çok dilli (Dictionary<string, string>).
UsersÇözümlenmiş kullanıcı alıcıları (salt okunur liste).
PositionsÇözümlenmiş pozisyon alıcıları (salt okunur liste).

Akıştaki yeri

Anlık Bildirim, akışın ortasında bekletmeyen bir geçiş adımıdır: önceki adım tamamlanınca alıcılara bildirim düşer ve akış hemen bir sonraki nesneye ilerler. Onay ya da kullanıcı kararı toplamaz. Alıcıları sabit olarak tasarımcıda tanımlayabilir ya da bu nesnenin kendi kod bloğunda dinamik olarak ekleyebilirsiniz.

Kod örnekleri

Alıcılar nesnenin adıyla eklenir. Sunucu (akış) kodu turuncu çerçevelidir.

Sabit kullanıcı ve pozisyon ekleme

// Önce mevcut üyeleri temizle (yeniden çalışan adımlarda birikmeyi önler)
p_Bildirim.ClearMembers();

// CSP kullanıcı kimliğiyle alıcı ekle
p_Bildirim.AddConstantUser(Convert.ToInt64(talepSahibiId));

// Bir pozisyonu alıcı olarak ekle
p_Bildirim.AddConstantPosition(1024, "MUD", "Birim Müdürü");

Çok dilli başlık ve gövde

p_Bildirim.Subject["tr-TR"] = "Talebiniz onaylandı";
p_Bildirim.Message["tr-TR"] = "Satın alma talebiniz bir sonraki adıma iletildi.";
Yalnız bildirim mi, e-posta da mı?

Sadece uygulama içi anlık bildirim için Anlık Bildirim kullanın. Aynı mesajı e-posta olarak da göndermek, ek dosya iliştirmek veya akışı başlatanı listeye dahil etmek isterseniz Bilgilendirme nesnesine geçin. İkisinde de alıcı API'si (AddConstantUser / AddConstantPosition / ClearMembers) aynı şekilde çalışır.

İpuçları

  • AddConstantUser bir CSP kullanıcı kimliği bekler; datasource'tan gelen değeri Convert.ToInt64(...) ile çevirin.
  • Adım tekrar çalışabiliyorsa (geri dönüşlü akışlar) önce ClearMembers() çağırıp alıcıları yeniden ekleyin; aksi halde liste birikebilir.
  • Subject ve Message çok dilli sözlüklerdir; kullandığınız her dil kodu için ayrı ayrı değer atayın ("tr-TR", "en-US" gibi).
  • Bildirimi koşula göre kapatmak için IsEnabled değerini bir önceki adımda ayarlayabilirsiniz.
Doğrulanmış kod arayüzü (FlowPushNotification)

Sınıf: FlowObjectDesigner<FlowPushNotificationProperties>

Özellikler: IsEnabled (Boolean), Members (IFlowMembersOptions), Subject (Dictionary<string, string>), Message (Dictionary<string, string>), Users (List<UserInfo>, salt okunur), Positions (List<UserPosition>, salt okunur).

Alıcı metotları: AddConstantUser(Int64), AddConstantUser(Int64, string, string), AddConstantPosition(Int64), AddConstantPosition(Int64, string, string), ClearMembers().

Motor geri çağrısı: SendPushNotification(UserInfo, ProcessRequestItem) — akış motorunun bildirimi gönderirken çağırdığı yöntemdir; akış kodundan doğrudan çağrılması beklenmez. TODO: doğrulanacak.

Alıcı ekleme şekli FlowMail ile aynıdır (AddConstantUser / ClearMembers).

Kaynak: synergy-csp references/flow-objects.md (FlowPushNotification) + _harvest/flow-knowledge.md (örnekle doğrulanmış).