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
 NodeHedef 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

If

Set

SetVariable

WorkItem

Greater

Insert

ProcessWorkItem

StringConcat

 

  • No labels