Akış Durumları
Bir akış (süreç) ve ona bağlı belge, yaşam döngüsü boyunca farklı durumlar alır: süreç hâlâ devam ediyor olabilir, tamamlanmış olabilir ya da silinmiş olabilir. Belge tarafında ise süreç "onay bekliyor", "onaylandı", "iade edildi" gibi sayısal bir durum koduyla işaretlenir. Bu sayfa, bu durumların ne anlama geldiğini ve koddan hangi nesnelerle yönetildiğini anlatır.
İki ayrı durum kavramı vardır ve karıştırılmamalıdır:
- Süreç durumu (akış durumu): Tüm akış nesnesinin yaşam döngüsü; akış devam mı ediyor, bitti mi, silindi mi. Bunu akışın bitiş nesnesi (Akış Bitişi /
FlowEnd) belirler. - Belge durumu: Sürece bağlı formun aldığı sayısal durum kodu. Bunu Akış Durumu (
FlowState) adımı, Belge Durumu (FlowDocumentState) adımı ya da doğrudanDocument1.UpdateState(...)yazar.
Süreç durumu nerede belirlenir?
Akışın sonundaki Akış Bitişi nesnesi, sürecin nasıl kapatılacağını iki bayrakla belirler:
| Üye | Tip | Anlamı |
|---|---|---|
UpdateFlowStatusAsFinished | bool | Süreci tamamlandı (bitmiş) olarak işaretler. |
SetFlowStatusAsDeleted | bool | Süreci silinmiş olarak işaretler. |
Bir bitiş nesnesi süreci ya "tamamlandı" ya da "silindi" olarak kapatır; akış bu noktaya gelene kadar süreç devam ediyor kabul edilir. Yani günlük kullandığınız üç temel süreç durumu şudur:
| Durum | Ne zaman oluşur |
|---|---|
| Devam ediyor | Akış başlatıldıktan sonra, henüz bir Akış Bitişi nesnesine ulaşılmamışken. |
| Tamamlandı | UpdateFlowStatusAsFinished = true olan bir Akış Bitişi'ne ulaşıldığında. |
| Silindi | SetFlowStatusAsDeleted = true olan bir Akış Bitişi'ne ulaşıldığında. |
Belge durumu nerede yazılır?
Belge durumu, süreç içindeki formun aldığı sayısal bir koddur (Int32). Bunu üç yoldan biriyle yazarsınız:
- Akış Durumu (
FlowState) adımı: tek birStatedeğeri atar, akışı durdurmaz. - Belge Durumu (
FlowDocumentState) adımı: bir veya birden çok belgenin durumunu toplu günceller. - Doğrudan belge nesnesinden:
Document1.UpdateState(durumKodu).
Sayısal değerlerin ("onay bekliyor", "onaylandı", "iade" gibi) anlamı sabit değildir; her projede kendi durum kodu tablonuzu siz tanımlarsınız.
Süreç ve belge durumlarının somut sayısal kodları (örneğin "tamamlandı" = hangi sayı) projeye ve sürüme göre değişir; doğrulanmış bir sabit değer listesi yoktur. TODO: durum kodları IDE/veritabanından doğrulanacak.
Kod örnekleri
Durumlar akış kodunda nesnelerin kendi üyeleriyle yazılır. Sunucu (akış) kodu turuncu çerçevelidir.
Belge durumunu atama (FlowState)
// Akış Durumu adımının sayısal durum değeri (anlamı kendi kod tablonuzda)
p_AkisDurumu.State = 20;
Belge durumunu doğrudan güncelleme (Document)
// Sürece bağlı belgenin durumunu sayısal koda taşır
await Document1.UpdateState(20);
Süreci tamamlandı / silindi olarak kapatma (FlowEnd)
// Akış Bitişi nesnesinin durum bayrakları
p_AkisBitisi.UpdateFlowStatusAsFinished = true; // süreç tamamlandı
p_AkisBitisi.SetFlowStatusAsDeleted = false; // silinmiş olarak işaretleme
Bu üyeler nesnelerde mevcuttur ve derlenir, ancak akış kodundan bu şekilde atanması dump bilgisine dayanır; durum normalde tasarımcıdaki ayarlardan sürülür. TODO: doğrulanacak (IDE'de kod kullanımı teyit edilecek).
İpuçları
- Süreç durumu (devam/tamamlandı/silindi) ile belge durumu (sayısal kod) ayrı kavramlardır: ilki Akış Bitişi, ikincisi Akış Durumu / Belge Durumu ile yönetilir.
StateveUpdateState(int)birInt32bekler; durumları sabit sayılarla (ör. 10, 20, 30) temsil edip projede tutarlı bir kod tablosu tutun.- Tek bir belge için
Document1.UpdateState(...)ya da Akış Durumu; birden çok belgeyi tek adımda taşımak için Belge Durumu (FlowDocumentState.UpdateStates()) kullanın. - Bir Akış Bitişi'nde aynı anda hem
UpdateFlowStatusAsFinishedhemSetFlowStatusAsDeletedayarlamayın; süreci tek bir sonuca kapatın.
Doğrulanmış kod arayüzü (durum üyeleri)
FlowState (FlowObjectDesigner<FlowStateProperties>) — belge/sürece durum işaretler:
State (Int32), ShowInFlowHistory (Nullable<Boolean>)
FlowDocument (Document1) — belge durumunu günceller:
UpdateState(Int32 state) → Task<Boolean>
FlowDocumentState — toplu belge durumu güncelleyici: UpdateState(FlowDocument, Int32 state) → Task<Boolean>, UpdateStates() → Task
FlowEnd (FlowObjectDesigner<FlowEndProperties>) — süreç durumunu kapatır:
UpdateFlowStatusAsFinished (Boolean), SetFlowStatusAsDeleted (Boolean)
Somut sayısal durum kodları doğrulanmamıştır; her projede kendi kod tablonuzla eşleştirin.
Kaynak: synergy-csp references/flow-objects.md (FlowState, FlowDocument, FlowDocumentState, FlowEnd; [dump-only: doğrulanmış üyeler, çalışma zamanı idiomu teyitsiz]).