Akış Tetikleyici
Çalışmakta olan bir akışın içinden başka bir akışı başlatan nesnedir. Mevcut akışı bir üst (parent) akış gibi düşünün; bu nesne, hedef olarak seçtiğiniz akışı yeni bir süreç olarak tetikler ve dilerseniz ona parametre geçirebilirsiniz. Başlatılan akışlar, tetikleyen sürece çocuk (child) süreç olarak bağlanır.
Ne zaman kullanılır?
Bir akış adımına gelindiğinde ikinci, bağımsız bir sürecin de başlamasını istediğinizde kullanın. Örneğin bir satınalma talebi onaylandığında ayrı bir tedarikçi bilgilendirme akışını ya da bir muhasebe kayıt akışını tetiklemek için. Hedef akışa kayıt/talep bilgisini parametre olarak geçirerek iki süreci birbirine bağlarsınız.
Ayarlar
Akış Tetikleyici nesnesi seçildiğinde tasarımcıda şu başlıklar düzenlenir:
| Ayar | Açıklama |
|---|---|
FlowId / FlowName | Tetiklenecek hedef akışın kimliği ve adı. |
ProjectId / ProjectName | Hedef akışın bulunduğu projenin kimliği ve adı. |
Parameters | Hedef akışa geçirilecek parametreler (ad → değer eşlemesi). |
StarterUser / StarterUserType | Yeni akışı başlatan kullanıcı ve bu kullanıcının kimlik türü. |
Source | Tetikleme kaynağı seçenekleri. |
TriggeredProcessCountVariable | Tetiklenen süreç sayısının yazılacağı değişken. |
ShowFlowHistory | Tetiklemenin akış geçmişinde görünüp görünmeyeceği. |
Akıştaki yeri
Akış Tetikleyici, akışın akışını durdurmadan yan bir süreç başlatan bir köprü adımıdır: bu noktaya gelindiğinde hedef akış yeni bir süreç olarak başlatılır, başlatılan akış mevcut sürece çocuk olarak bağlanır ve ana akış kendi yoluna devam eder. Tetiklenen sürecin numarasını ParentProcessId ve ilgili metotlarla geri izleyebilirsiniz.
Kod örnekleri
Bu nesnenin kod arayüzü FlowTrigger sınıfından gelir; sunucu (akış) kodu turuncu çerçevelidir.
Aşağıdaki üyeler dump'tan birebir alınmıştır ve gerçektir, ancak çalışma zamanındaki kullanım biçimi (idiom) henüz örnekle doğrulanmadı. Aşağıdaki kullanım iskeleti yön göstericidir; tetikleme genellikle nesnenin tasarımcı ayarlarıyla yapılandırılır. Kesin imzalar ve çağrı sırası IDE'de doğrulanmalıdır.
// Üst (parent) süreç kimliğini geri oku
long ustSurecId = p_AltAkis.GetParentProcessId();
// Üst süreç kimliğini ayarla
p_AltAkis.SetParentProcessId("12345");
İpuçları
- Hedef akış ve proje, tasarımcıdaki
FlowId/FlowNameveProjectId/ProjectNameayarlarıyla belirlenir; kod yerine bu ayarları kullanmak en güvenli yoldur. - Hedef akışa veri taşımak için
Parametersayarını kullanın; iki süreci bu parametreler üzerinden ilişkilendirirsiniz. - Kaç sürecin tetiklendiğini bir akış değişkeninde tutmak için
TriggeredProcessCountVariableayarını doldurun. - Tetiklenen süreç, mevcut sürece çocuk olarak bağlanır; ilişkiyi
ParentProcessId/GetParentProcessId()üzerinden izleyebilirsiniz.
Doğrulanmış kod arayüzü (FlowTrigger)
FlowTrigger : FlowObjectDesigner<FlowTriggerProperties>: başka bir akışı (parent/child) tetikler.
Özellikler: FlowId (string), FlowName (string), ProjectId (string), ProjectName (string), Parameters (Dictionary<string, IFlowParameter>), StarterUser (string), StarterUserType (UserIdentifierType), TriggeredProcessCountVariable (string), ParentProcessId (Nullable<Int64>, salt okunur), Source (IFlowTriggerSourceOptions), ShowFlowHistory (bool)
Metotlar: Execute(Context workflowUserContext, Action<FlowStartResponse> processResponse) → Task, GetParentProcessId() → Int64, SetParentProcessId(string parentProcessId)
Kaynak: synergy-csp references/flow-objects.md (FlowTrigger, dump-only: doğrulanmış kullanım idiomu yok). Üyeler gerçektir; çalışma zamanı kullanımı IDE'de doğrulanmalıdır.