Pozisyon
Akışta bir adımın tek bir kişi tarafından onaylanmasını sağlayan nesnedir. Akış bu nesneye ulaştığında, atadığınız kullanıcıya bir onay isteği düşer ve kişi onaylayana (ya da reddedene) kadar akış bu adımda bekler.
Ne zaman kullanılır?
Bir adımda yalnızca bir onaycı olduğunda kullanın: bir yöneticinin talebi onaylaması, bir kontrolörün belgeyi incelemesi gibi. Aynı anda birden çok kişinin onayı gerekiyorsa Pozisyon Grubu nesnesini tercih edin.
Ayarlar
Pozisyon nesnesi seçildiğinde tasarımcıda şu başlıklar düzenlenir:
| Ayar | Açıklama |
|---|---|
AutoOpenApprovalOption | Onay ekranının kullanıcıya otomatik açılıp açılmayacağı. |
DoNotSendRequestIfProcessed | Kişi belgeyi daha önce işlediyse yeniden istek gönderilmez. |
RequestIsNecessaryIfDocumentChanged | Belge değiştiyse onayın tekrar istenmesini sağlar. |
HideApporoverInHistory | Onaycıyı akış geçmişinde gizler. |
ShowInFlowHistory | Adımın akış geçmişinde görünüp görünmeyeceği. |
TimeoutDay / TimeoutHour / TimeoutMinute | Onay için süre sınırı; süre dolarsa akış yönlendirilebilir. |
CalculateUsingHolidays / CalculateUsingWorkingHours | Süre hesabında resmi tatilleri / mesai saatlerini dikkate alır. |
EnableSendMail / EnablePushNotification | Onaycıya e-posta ve anlık bildirim gönderilsin mi. |
MailSubject / MailMessage | Onay isteğiyle gidecek e-postanın konusu ve gövdesi (çok dilli). |
ForwardingOptions | Onaycının isteği başkasına yönlendirme (vekâlet) seçenekleri. |
Akıştaki yeri
Pozisyon, akışın ortasında bir bekleme noktasıdır: önceki adım tamamlanınca onaycıya istek gider, kişi karar verene kadar akış burada durur, karardan sonra bir sonraki adıma geçilir. Onaycıyı genellikle bu nesnenin kendi _Execute kod bloğunda ya da bir önceki Fonksiyon adımında atarsınız.
Kod örnekleri
Onaycı, akış kodunda nesnenin adıyla atanır. Sunucu (akış) kodu turuncu çerçevelidir.
Onaycıyı atama
// Bir kullanıcı kimliğiyle ata (datasource'tan gelen sicil/CSP id)
p_Mudur.SetFromUser(Convert.ToInt32(mudurSicilleri[0]));
// Akışı başlatan kişiyi onaycı yap
p_Mudur.SetUserFromFlowInitiator();
// Sabit bir pozisyonu onaycı yap
p_Mudur.SetConstantPosition(1024, "MUD", "Birim Müdürü");
Slottaki kişiyi geri okuma
// Bu pozisyona atanmış kullanıcının kimliği
long kullaniciId = p_Mudur.GetUserInfo().Id;
Tek bir onaycı için Pozisyon, aynı adımda birden çok onaycı için Pozisyon Grubu kullanın. Pozisyon Grubu'nda onaycılar AddConstantUser / ClearGroup ile doldurulur; Pozisyon'da tek kişi SetFromUser ile atanır.
İpuçları
SetFromUserbir CSP kullanıcı kimliği bekler; datasource'tan gelen değeriConvert.ToInt32(...)/Convert.ToInt64(...)ile çevirin.- Onaycıyı koşula göre belirleyeceksiniz (ör. tutara göre farklı yönetici): atamayı bir Fonksiyon adımında yapın.
AutoOpenApprovalOptionbu nesnedetrue/falsedeğeridir (Pozisyon Grubu'nda ise bir seçenek kodudur).- Bu nesnede
EventFormIddiye bir özellik yoktur; olay/form kimliğini pozisyon üzerinden aramayın.
Doğrulanmış kod arayüzü (FlowPosition)
Atama metotları: SetFromUser(Int64), SetFromPosition(Int64), SetConstantUser(Int64, string, string), SetConstantPosition(Int64, string, string), SetUserFromLogonUser(), SetUserFromFlowInitiator(), SetUserFromFlowInitiatorManager(string), SetUserFromImpersonatingUser(), SetUserFromVariable(Variable), SetPositionFromVariable(Variable, string), SetReferredUser(UserInfo), SetDepartmentManagerUserFromDepartment(FlowDepartment)
Okuma: GetUserInfo() → UserInfo, GetUserInfoWithPositionId()
Özellikler: Id, Code, Description, Email (salt okunur), ValueType, ForwardingOptions, Events (salt okunur), EventsToCheck + miras alınan onay/zaman aşımı/mesaj ayarları.
Kaynak: synergy-csp references/flow-objects.md (FlowPosition, örnekle doğrulanmış) + Bimser.CSP.Workflow.Api.api.txt.