Nedir?
Form Verisi içerisindeki bir düğümdeki tüm kayıtları tek tek dolaşır.
Sentaks
<ForEach Node="/*/Person/Data/Template"> <Expressions /> </ForEach>
Form Verisi
<Person> <Template> <Name></Name> <Surname></Surname> <Visit></Visit> <Aktif></Aktif> </Template> <Data> <Template> <Name>Ahmet</Name> <Surname>Yılmaz</Surname> <Visit>12</Visit> <Aktif>1</Aktif> </Template> <Template> <Name>Ali</Name> <Surname>Çelik</Surname> <Visit>7</Visit> <Aktif>1</Aktif> </Template> </Data> </Person>
Özellikler
Adı | Açıklama | |
---|---|---|
Node | Hedef form verisi yolunu belirler. |
Örnekler
/*/Person/Data/Template yolu döngüsel olarak gezerek her bir Aktif nodu 0 değerini atama yapar.
Sentaks
<ForEach Node="/*/Person/Data/Template"> <Set Node="./Aktif"> <Value Culture="" Target="Integer">0</Value> </Set> </ForEach>
Süreçlerin aktif WorkItemId lerini Sonlandır aksiyon butonu ile süreci ilerletir.
Süreç ilerletme ile kullanımı
<ForEach Node="TeklifToplamaAltAkisi/SubWorkflows/WorkflowStartInfo"> <ProcessWorkItem Action="Sonlandır"> <WorkItem Type="Waiting" IncludeChildren="False" Instance=""> <Value Culture="" Target="Guid">eval::AktifWorkItemId</Value> </WorkItem> </ProcessWorkItem> </ForEach>
Form verisi içerisinde completedby de bulunan kişileri aralarına ; koyarak Bilgilendirilecekler e ekleyerek atama yapar.
Form verisi içerisindeki kişileri kullanma
<ForEach Node="/*/processingInfo/workItem[not(completedBy = preceding-sibling::workItem/completedBy)]"> <SetVariable Name="$(Bilgilendirilecekler)"> <StringConcat> <Value>$(Bilgilendirilecekler)</Value> <Evaluate Target="None" Culture="">completedBy</Evaluate> <Value>;</Value> </StringConcat> </SetVariable> </ForEach>
Bir üstte bulunan örnek benzer fakat farklı bir concat fonksiyonu kullanılıyor. Ayrıca ForEach Nodu içerisinde IsSelected='false' ve ApplyUserId değerleri ile koşuk yerleştirilebiliyor.
Koşullu FOrEach Döngüsü
<ForEach Node="/*/TeklifToplamaAltAkisi/SubWorkflows/WorkflowStartInfo/TeklifBilgileri[IsSelected='false' and ApplyUserId!='']"> <SetVariable Name="$(OtherBankUserList)"> <Value Culture="" Target="None">eval::concat('$(OtherBankUserList)','$(Prefix)', ApplyUserId)</Value> </SetVariable> <SetVariable Name="$(Prefix)"> <Value Culture="" Target="None">;</Value> </SetVariable> </ForEach>
TeklifGondermeListesi düğümündeki tüm kayıtları dolaşarak BankUserList düğümünde kayıt varsa, her kayıt için TeklifToplamaAltAkisi adımını başlatır.
Karşılaştırma ile kullanımı
<ForEach Node="/*/TeklifGondermeListesi/Data/Template"> <If> <Then> <Condition> <Greater Equal="False"> <Value Culture="" Target="Integer">eval::./BankUserList/Count</Value> <Value Culture="" Target="Integer">0</Value> </Greater> </Condition> <Perform> <Insert Into="/*/TeklifToplamaAltAkisi/SubWorkflows">::/*/TeklifToplamaAltAkisi/WorkflowStartInfo</Insert> <Set Node="/*/TeklifToplamaAltAkisi/SubWorkflows/WorkflowStartInfo[last()]/TeklifBilgileri/FinancialQuotationId"> <Value Culture="" Target="None">eval::/*/FinancialQuotation/Id</Value> </Set> </Perform> </Then> </If> </ForEach>
Ayrıca Bakınız