Senkronize Edici
Bir kaynak dokümanın (ya da detayın) alanlarını, kurduğunuz alan eşlemesine göre bir hedefe kopyalayan nesnedir. Hedef; başka bir doküman, bir detay (grid), bir veritabanı tablosu veya bir sorgu olabilir. Akış bu adıma ulaştığında eşlenen alanlar kaynaktan okunup hedefe yazılır.
Ne zaman kullanılır?
Bir akış içinde bir dokümandaki verileri başka bir yere taşımanız ya da yansıtmanız gerektiğinde kullanın: form alanlarını bir veritabanı tablosuna aktarmak, bir ana dokümandaki değerleri başka bir dokümana kopyalamak veya bir detay satırlarını hedef bir grid'e geçirmek gibi. Eşlemeyi tek tek alan bazında tanımladığınız için yalnızca seçtiğiniz alanlar aktarılır.
Ayarlar
Senkronize Edici nesnesi seçildiğinde tasarımcıda şu başlıklar düzenlenir:
| Ayar | Açıklama |
|---|---|
SourceDocumentObjectName | Kaynak dokümanın nesne adı. |
SourceDetailName | Kaynak taraftaki detay (grid) adı. |
SourceType | Kaynağın türü (DocumentSynchronizerSourceType). |
TargetType | Hedefin türü (DocumentSynchronizerTargetType): doküman, tablo, sorgu vb. |
TargetDocumentObjectName | Hedef doküman nesnesinin adı. |
TargetDetail | Hedefe yazarken kullanılacak detay (grid) adı. |
TargetTableName | Hedef veritabanı tablosunun adı. |
TargetQueryName | Hedef sorgunun adı. |
TargetConnectionName | Hedef için kullanılacak bağlantı adı. |
Fields | Kaynak ↔ hedef alan eşleme listesi (List<FlowMatchingOptionsField>). |
HideSystemFields | Eşleme arayüzünde sistem alanlarının gizlenmesi. |
Value / ValueSourceType / ValueType | Değişken kaynaklı değer üçlüsü. |
ResumeOnError | Hata olursa akışın durmak yerine devam etmesi (hata yönetimli adım). |
ErrorOptions / ErrorDescriptionObjectName | Tasarımcının belirlediği ayrıntılı hata yapılandırması. |
Akıştaki yeri
Senkronize Edici, akışın akıp giden bir ara adımıdır: önceki adım tamamlanınca eşlenen alanlar kaynaktan hedefe kopyalanır ve akış bir sonraki adıma devam eder. Onay beklemez. Hata yönetimli bir adım olduğu için, kopyalama sırasında bir hata oluşursa ResumeOnError ayarına göre akış ya durur ya da devam eder.
Kod örnekleri
Bu nesne, alan kopyalamayı çalıştıran tek bir Synchronize() metodu sunar. Sunucu (akış) kodu turuncu çerçevelidir.
// Eşlenen alanları kaynaktan hedefe kopyalar (asenkron)
await p_SenkronizeEdici.Synchronize();
Yukarıdaki çağrı, sınıf üzerinde doğrulanmış Task Synchronize() imzasına dayanır. Kaynak/hedef ve alan eşlemesi genellikle adımın tasarımcı ayarlarından gelir; bu yüzden çoğu durumda kodla ek bir şey yapmanız gerekmez.
TODO: doğrulanacak — Synchronize() metodunun akış kodundan elle çağrılıp çağrılmadığı ve Value / ValueSourceType / ValueType üçlüsünün tipik kullanımı IDE'de doğrulanmalı.
İpuçları
- Hedef türünü (
TargetType) doğru seçin: doküman, detay, tablo ve sorgu için farklı hedef ayarları (TargetDocumentObjectName,TargetDetail,TargetTableName,TargetQueryName) devreye girer. - Bir detaya (grid) yazıyorsanız
TargetDetailile hedef detayın adını belirtin. Fieldslistesindeki her satır bir kaynak alanını bir hedef alanına bağlar; yalnızca eşlenen alanlar aktarılır.- Kopyalama hatasında akışın durmasını istemiyorsanız
ResumeOnErrorayarını kullanın; bu nesne hata yönetimli bir adımdır. ValueTypeburada bir enum değil,Nullable<Int32>tipindedir; değişken kaynaklı değer üçlüsüyle (Value/ValueSourceType/ValueType) birlikte kullanılır.
Doğrulanmış kod arayüzü (FlowDocumentSynchronizer)
Taban sınıf: BaseErrorManagedApiStep<FlowDocumentSynchronizerProperties>.
Kaynak özellikleri: SourceDocumentObjectName (String), SourceDetailName (String), SourceType (DocumentSynchronizerSourceType)
Hedef özellikleri: TargetDocumentObjectName (String), TargetTableName (String), TargetDetail (String), TargetQueryName (String), TargetConnectionName (String), TargetType (DocumentSynchronizerTargetType)
Eşleme: Fields (List<FlowMatchingOptionsField>), HideSystemFields (Boolean)
Değer kaynağı: Value (Object), ValueSourceType (Int32), ValueType (Nullable<Int32>)
Metot: Synchronize() → Task
Miras alınan (hata yönetimi): ResumeOnError, ErrorOptions (IFlowErrorOptions), ErrorDescriptionObjectName
Kaynak: synergy-csp references/flow-objects.md (FlowDocumentSynchronizer, [dump-only: çalışma zamanı idiyomu doğrulanmamış]).