Ana içeriğe geç

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ğrudan Document1.UpdateState(...) yazar.

Süreç durumu nerede belirlenir?

Akışın sonundaki Akış Bitişi nesnesi, sürecin nasıl kapatılacağını iki bayrakla belirler:

ÜyeTipAnlamı
UpdateFlowStatusAsFinishedboolSüreci tamamlandı (bitmiş) olarak işaretler.
SetFlowStatusAsDeletedboolSü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:

DurumNe zaman oluşur
Devam ediyorAkış 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.
SilindiSetFlowStatusAsDeleted = 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 bir State değ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.

uyarı

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
not

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.
  • State ve UpdateState(int) bir Int32 bekler; 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 UpdateFlowStatusAsFinished hem SetFlowStatusAsDeleted ayarlamayı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]).