Ana içeriğe geç
Doğrulama: Gerçek akış örnekleriyle doğrulandı

Doküman

Akışa bağlı form dokümanını temsil eden nesnedir. Süreci başlatan formun kontrollerine bu nesne üzerinden ulaşır, değerlerini okur veya değiştirir ve dokümanı kaydedersiniz. Form verisiyle ilgilenen hemen her akışta yer alır; tasarımda genellikle Document1 gibi bir adla görünür.

Ne zaman kullanılır?

Akış kodunda formdaki bir alanı okumak ya da yazmak istediğiniz her yerde kullanın: bir tutarı kontrol etmek, durum alanını güncellemek, bir veri tablosundaki satırları dolaşmak veya yapılan değişikliği kalıcı hâle getirmek için. Yeni bir doküman oluşturmak ya da silmek gibi işler için ayrı nesneler vardır (Doküman Oluştur, Doküman Silme); bu nesne mevcut, sürece bağlı doküman üzerinde çalışır.

Ayarlar

Doküman nesnesinde tasarımcıda düzenlenebilen başlıca özellikler:

AyarAçıklama
FormNameDokümanın dayandığı form.
ViewNameDokümanın hangi eForm görünümüyle açılacağını belirler.
DocumentIdDokümanın kimliği (okunup atanabilir).
ProcessNameDokümanın bağlı olduğu süreç adı.

Akıştaki yeri

Doküman, akışın başından sonuna kadar erişilebilen sabit bir referanstır: bir bekleme noktası değildir, akışı durdurmaz. Diğer adımların (Fonksiyon, onay nesneleri) kod bloklarında form verisini okumak ve yazmak için bu nesnenin adını (Document1 gibi) kullanırsınız. Kontrol değerlerini değiştirdikten sonra değişikliğin kalıcı olması için SaveDocument() çağırmanız gerekir.

Kod örnekleri

Form kontrollerine Controls["KONTROL_ADI"] indeksleyicisiyle ulaşılır; dönen kontrolün .Value (nesne) ve .Text (metin) üyeleri okunup yazılır. Sunucu (akış) kodu turuncu çerçevelidir.

Kontrol okuma

// Değeri oku (Value bir object döner, gerektiğinde çevirin)
string satNo = Document1.Controls["SATNO"].Value?.ToString();
string aktaran = Document1.Controls["GORAKTAR"]?.Text?.ToString();
string byd = Convert.ToString(Document1.Controls["BELGE_SICIL"].Value);

Kontrol yazma

// Hem Value hem Text set etmek yaygin pratik (goruntu + veri birlikte)
Document1.Controls["DURUM"].Value = "1";

// Bir listeyi sifirla
Document1.Controls["GORAKTAR"].Value = new List<object>();
Document1.Controls["GORAKTAR"].Text = "";

Veri tablosu sütununu okuma

// GridData.FromControl ile satir/hucre dolasimi
Control control = Document1.Controls["DT_MALZEME"];
GridData grid = GridData.FromControl(control);
foreach (GridDataRow row in grid.Rows)
{
string yer = row.Cells.FirstOrDefault(c => c.Name == "URTMYER")?.Value?.ToString();
}

Kaydetme

Document1.Controls["BYDDE"].Value = "BYD";

// SaveDocument bir Task<Boolean> doner; orneklerde .Result ile beklenir
var isDone = Document1.SaveDocument().Result;
Yazdıktan sonra kaydedin

Controls[...] üzerinden yaptığınız değişiklikler ancak SaveDocument() çağrılınca kalıcı olur. Bir kontrolü değiştirip kaydetmezseniz değişiklik sonraki adımlara taşınmayabilir.

İpuçları

  • Controls["X"].Value bir object döner; sayı ya da metne ihtiyaç duyduğunuzda Convert.ToInt32(...) / ?.ToString() ile çevirin.
  • Görüntüyle veriyi birlikte tutmak için örneklerde çoğu zaman hem .Value hem .Text set edilir.
  • GetControlValue / SetControlValue / SetControlText metotları derlenir ve mevcuttur, ancak örnek akışlarda kullanılmaz; baskın kullanım Controls indeksleyicisidir.
  • GetDataGridCellValues("DT_MALZEME", "URTMYER") bir sütunu tek çağrıda List<Object> olarak döndürür ve yukarıdaki döngünün yerine geçebilir, fakat örneklerde denenmemiştir. TODO: doğrulanacak.
  • UpdateState, SetUniqueId, ResetDocument, DeleteDocument üyeleri vardır; ancak durum/numara işleri genellikle Belge Durumu ve Doküman No Atama gibi ayrı nesnelerle yapılır.
Doğrulanmış kod arayüzü (FlowDocument)

Sınıf: Bimser.CSP.Workflow.Api.Steps.FlowDocument : FlowObjectDesigner<FlowDocumentProperties>

Kontrol erişimi (örnekle doğrulanmış): Controls["ad"].Value (object), Controls["ad"].Text (string); veri tablosu için GridData.FromControl(control) + grid.Rows / row.Cells.

Metotlar: GetControlValue(String) → FormGetControlValueResponse, SetControlValue(String, Object), SetControlText(String, String), GetDataGridCellValues(String, String) → List<Object>, SaveDocument() → Task<Boolean>, SaveDocumentAsync(), ResetDocument() → Boolean, UpdateState(Int32) → Task<Boolean>, SetUniqueId(String) → Task<Boolean>, DeleteDocument() → Task<Boolean>, SetExistingDocumentByPathAsync(String), ToLiquid()

Özellikler: Controls (salt okunur), FormInstance (salt okunur), DocumentId, FileId, FormName, FormCaption, ProcessName, ViewName, ExistingDocumentPath, PanelSize, Parameters, Type.

Kaynak: synergy-csp references/flow-objects.md (FlowDocument, örnekle doğrulanmış kontrol/kaydet idiyomları + dump'tan doğrulanmış üyeler).