Atama
Bir organizasyon değerini (kullanıcı, pozisyon, departman, meslek ya da değişken) bir kaynaktan alıp akıştaki bir hedef nesneye toplu olarak kopyalayan adımdır. Örneğin akışı başlatan kişiyi bir pozisyon nesnesine, bir departmanın yöneticisini bir onaycı pozisyonuna ya da bir değişkenin değerini başka bir değişkene yazmak için kullanılır.
Bu adım, değer atamalarını ayrı bir Fonksiyon bloğunda elle yazmak yerine, tasarımcıda kaynak ve hedef seçilerek yapılandırılan hazır bir atama kutusudur.
Ne zaman kullanılır?
Sonraki adımlarda kullanılacak bir org değerini (onaycı, departman, meslek) önceden bir nesneye yerleştirmek istediğinizde kullanın. Tek bir kişiyi doğrudan onaycı yapacaksanız çoğu zaman Pozisyon nesnesinin kendi atama metotları yeterlidir; Atama adımı, kaynak nesneden hedef nesneye kopyalama mantığı gerektiğinde (ör. "şu departmanın yöneticisini şu onay pozisyonuna ata") veya birden çok atamayı tek bir adımda toplamak istediğinizde tercih edilir.
Ayarlar
Atama nesnesi seçildiğinde tasarımcıda kaynak/hedef eşlemesi ve hata davranışı düzenlenir:
| Ayar | Açıklama |
|---|---|
AssignmentName | Atamanın adı. |
SourceType | Kaynağın türü (kullanıcı / pozisyon / departman / meslek / değişken / sabit). |
SelectedObjectName / SelectedObjectProperty | Kaynak olarak okunacak nesne ve özelliği. |
TargetObjectName / TargetObject / TargetObjectTypeCode | Değerin yazılacağı hedef nesne ve türü. |
ConstantUser / ConstantPosition / ConstantDepartment / ConstantProfession | Sabit değer atanacaksa ilgili org sabiti. |
ConstantValue | Sabit metin değeri. |
SelectedManagerProfile / ManagerAccordingToTitle | Yönetici profili / unvana göre yönetici seçim seçenekleri. |
ResumeOnError | Atama sırasında hata olursa akışın durmak yerine devam edip etmeyeceği. |
ErrorOptions / ErrorDescriptionObjectName | Hata yönetimi yapılandırması ve hata açıklamasının yazılacağı nesne. |
Akıştaki yeri
Atama, akışın ortasında çalışan bir işlem adımıdır: önceki adım tamamlandığında yapılandırılan kaynak değeri okunur, hedef nesneye yazılır ve akış bir sonraki adıma geçer. Genellikle bir onay adımından (ör. Pozisyon) önce konumlandırılır; böylece o adıma gelindiğinde onaycı çoktan atanmış olur.
ResumeOnError ile yapılandırıldığında, kaynak değer bulunamadığında akış durmadan ilerleyebilir.
Kod örnekleri
Atama adımının kod arayüzünde TARGET (hedef) nesne parametre olarak verilir; iki argümanlı metotlarda sıra (kaynak, hedef) şeklindedir. Bu, bir nesnenin kendisini değiştiren Pozisyon Set* metotlarının tersidir. Sunucu (akış) kodu turuncu çerçevelidir.
Akışı başlatan kişiyi bir pozisyona atama
// Akışı başlatan kullanıcıyı hedef pozisyona yaz
p_Atama.SetUserFromFlowInitiator(p_Mudur);
// Atamayı çalıştır
await p_Atama.Assign();
Bir departmanın yöneticisini onay pozisyonuna atama
// Kaynak departmanın yöneticisini hedef pozisyona kopyala
p_Atama.SetDepartmentManagerUserFromDepartment(p_Departman, p_Mudur);
await p_Atama.Assign();
Değişkenden değişkene değer kopyalama
// Bir değişkenin değerini başka bir değişkene yaz
p_Atama.SetVariableFromVariable(p_Kaynak, p_Hedef);
await p_Atama.Assign();
Yukarıdaki çağrı sırası (Set* ile eşleme yapıp ardından Assign() çağırma) metot imzalarından çıkarılmıştır; çalışan bir akıştan birebir teyit edilmemiştir. TODO: doğrulanacak.
İpuçları
- Hedef nesne her zaman parametredir:
SetUserFromFlowInitiator(p_Mudur)çağrısı, akış başlatıcıyıp_Mudurpozisyonuna yazar. - İki argümanlı metotlarda sıra
(kaynak, hedef)'tir, ör.SetUserFromVariable(p_Degisken, p_Pozisyon). - Atama tamamlanması için
Assign()çağrılır; bu metotTaskdöndürür, dolayısıylaawaitile beklenmelidir. - Sayaç mantığı gerektiğinde değişkenler
IncrementVariable/DecrementVariableile bir artırılıp azaltılabilir. - Kaynak değerin bulunmama ihtimaline karşı
ResumeOnErrorayarını değerlendirin; aksi halde atama başarısız olduğunda akış durabilir.
Doğrulanmış kod arayüzü (FlowAssign)
Temel metot: Task Assign()
Atama metotları (Void): SetConstantDepartment(FlowDepartment), SetConstantPosition(FlowPosition), SetConstantProfession(FlowProfession), SetConstantUser(FlowPosition), SetConstantVariable(Variable), SetDepartmentFromFlowInitiator(FlowDepartment), SetDepartmentFromOther(FlowDepartment, FlowDepartment), SetDepartmentFromPosition(FlowPosition, FlowDepartment), SetDepartmentFromVariable(Variable, FlowDepartment), SetDepartmentManagerUserFromDepartment(FlowDepartment, FlowPosition), SetManagerDepartmentFromDepartment(FlowDepartment, FlowDepartment), SetManagerUserAccordingToProfession(FlowPosition, FlowPosition, FlowAssign), SetManagerUserFromUser(FlowPosition, FlowPosition), SetPositionFromOther(FlowPosition, FlowPosition), SetPositionFromVariable(Variable, FlowPosition), SetProfessionFromFlowInitiator(FlowProfession), SetProfessionFromPosition(FlowPosition, FlowProfession), SetProfessionFromVariable(Variable, FlowProfession), SetUserFromFlowInitiator(FlowPosition), SetUserFromFlowInitiatorManager(FlowPosition), SetUserFromImpersonatingUser(FlowPosition), SetUserFromLogonUser(FlowPosition), SetUserFromVariable(Variable, FlowPosition), SetVariableFromDepartment(FlowDepartment, Variable), SetVariableFromPosition(FlowPosition, Variable), SetVariableFromProfession(FlowProfession, Variable), SetVariableFromProjectName(Variable), SetVariableFromVariable(Variable, Variable), SetVariableProfession(FlowProfession, FlowProfession), SetVariableUser(Int32, FlowPosition), IncrementVariable(Variable), DecrementVariable(Variable)
Tasarımcı özellikleri: AssignmentName, SourceType, SelectedObjectName, SelectedObjectProperty, TargetObjectName, TargetObject, TargetObjectTypeCode, ConstantUser, ConstantPosition, ConstantDepartment, ConstantProfession, ConstantValue, SelectedManagerProfile, ManagerAccordingToTitle + miras alınan ResumeOnError, ErrorOptions, ErrorDescriptionObjectName (BaseErrorManagedApiStep).
Sınıf: FlowAssign : BaseErrorManagedApiStep<FlowAssignProperties>.
Kaynak: synergy-csp references/flow-objects.md (FlowAssign, [dump-only: çalışma zamanı idiomu doğrulanmamış]).