Categorie: reference Bijgewerkt: 2026-04-08 actionfield workflow actionfield1640

ActionField1640

Beschrijving: Add Theme (with Questions linked to this theme) to SurveyTemplate(Line). Custom: Nee

Propertiesbewerken

Property Type Accessor
SurveyTemplate SurveyTemplate Root
SqlWhereClause String Optional

XMLbewerken

<Workflow Name="ActionField1640" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
	<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
	<Description>Add Theme (with Questions linked to this theme) to SurveyTemplate(Line).</Description>
	<Properties>
		<Property	Name="SurveyTemplate"			Type="SurveyTemplate"			Accessor="Root"		Direction="In" />

		<Property	Name="SqlWhereClause"			Type="String"					Accessor="Optional"	Direction="In"		Default="Empty" />

		<Property	Name="OrderByQuestion"			Type="Int16"					Accessor="Internal" />
		<Property	Name="OrderByTheme"				Type="Int16"					Accessor="Internal" />
		<Property	Name="Questions"				Type="List[Question]"			Accessor="Internal" />
		<Property	Name="SqlWhereClauseStandard"	Type="String"					Accessor="Internal"						Default="not exists (select SvyTLSvyTId from dba.SurveyTemplateLine where SvyTLSvyTId = '${SurveyTemplate.Id}' AND SvyTLThmId = ThmId) AND (select count(*) from dba.Question where QstThmId = ThmId and QstRecStatus = 2) &gt; 0 AND ThmRecStatus = 2" />
		<Property	Name="SurveyTemplateLine"		Type="SurveyTemplateLine"		Accessor="Internal" />
		<Property	Name="SurveyTemplateLines"		Type="List[SurveyTemplateLine]"	Accessor="Internal" />
		<Property	Name="Theme"					Type="Theme"					Accessor="Internal" />
	</Properties>
	<Execution>
		<UserContent Name="Pre" />

		<When Name="Name" Condition="${SurveyTemplate.Context} == SurveyTemplateContext.VendorRating">
			<Choose Name="SqlWhereClause">
				<When Name="SqlWhereClause not empty" Condition="${SqlWhereClause} != Empty">
					<Assign Name="SqlWhereClause" Property="${SqlWhereClause}" Value="${SqlWhereClause} AND ThmContext = 1" />
				</When>

				<Otherwise Name="SqlWhereClause empty">
					<Assign Name="SqlWhereClause" Property="${SqlWhereClause}" Value="ThmContext = 1" />
				</Otherwise>
			</Choose>
		</When>

		<When Name="Name" Condition="${SurveyTemplate.Context} == SurveyTemplateContext.ContractAssessment">
			<Choose Name="SqlWhereClause">
				<When Name="SqlWhereClause not empty" Condition="${SqlWhereClause} != Empty">
					<Assign Name="SqlWhereClause" Property="${SqlWhereClause}" Value="${SqlWhereClause} AND ThmContext = 2" />
				</When>

				<Otherwise Name="SqlWhereClause empty">
					<Assign Name="SqlWhereClause" Property="${SqlWhereClause}" Value="ThmContext = 2" />
				</Otherwise>
			</Choose>
		</When>

		<Choose Name="SqlWhereClause">
			<When Name="SqlWhereClause not empty" Condition="${SqlWhereClause} != Empty">
				<Assign Name="SqlWhereClause" Property="${SqlWhereClause}" Value="${SqlWhereClause} AND ${SqlWhereClauseStandard}" />
			</When>

			<Otherwise Name="SqlWhereClause empty">
				<Assign Name="SqlWhereClause" Property="${SqlWhereClause}" Value="${SqlWhereClauseStandard}" />
			</Otherwise>
		</Choose>

		<SystemDialog Name="DialogSelectTheme" DialogName="SelectDomainObject">
			<Parameter	Name="EntityName"					Direction="In"		Value="Theme" />
			<Parameter	Name="SelectionListConfiguration"	Direction="In"		Value="Default" />
			<Parameter	Name="SqlWhereClause"				Direction="In"		Value="${SqlWhereClause}" />
			<Parameter	Name="DomainObject"					Direction="Out"									OutputProperty="${Theme}" />
		</SystemDialog>

		<When Name="Theme choosen" Condition="${Theme} != Empty">
			<Transaction>
				<Assign Name="Set OrderByTheme" Property="${OrderByTheme}" Value="10" />

				<GetList Name="Get SurveyTemplateLine" Type="SurveyTemplateLine" OutputProperty="${SurveyTemplateLines}" OrderBy="OrderByTheme" OrderDirection="Descending" Top="1">
					<Filters>
						<PropertyFilter	PropertyName="Id.SurveyTemplate"	Operator="="		PropertyValue="${SurveyTemplate}" />
					</Filters>
				</GetList>

				<When Name="SurveyTemplateLine found" Condition="${SurveyTemplateLines.Count} &gt; 0">
					<Assign Name="Set OrderByTheme" Property="${OrderByTheme}" Value="${SurveyTemplateLines[0].OrderByTheme}" />

					<Add Name="OrderByTheme + 10" ValueLeft="${OrderByTheme}" ValueRight="10" OutputProperty="${OrderByTheme}" />
				</When>

				<Insert Name="Insert SurveyTemplateLine Theme" ObjectType="SurveyTemplateLine" OutputProperty="${SurveyTemplateLine}">
					<Parameter	Name="Id.SurveyTemplate"	Direction="In"		Value="${SurveyTemplate}" />
					<Parameter	Name="Context"				Direction="In"		Value="SurveyTemplateLineContext.Theme" />
					<Parameter	Name="OrderByQuestion"		Direction="In"		Value="0" />
					<Parameter	Name="OrderByTheme"			Direction="In"		Value="${OrderByTheme}" />
					<Parameter	Name="Theme"				Direction="In"		Value="${Theme}" />
					<Parameter	Name="Weight"				Direction="In"		Value="1" />
				</Insert>

				<GetList Name="Get Questions" Type="Question" OutputProperty="${Questions}" OrderBy="Id" OrderDirection="Ascending">
					<Filters>
						<PropertyFilter	PropertyName="Theme"	Operator="="		PropertyValue="${Theme}" />
						<PropertyFilter	PropertyName="Status"	Operator="="		PropertyValue="QuestionStatus.Approved" />
					</Filters>
				</GetList>

				<Assign Name="Set OrderByQuestion" Property="${OrderByQuestion}" Value="10" />

				<ForEach Name="For all Questions" In="${Questions}" As="Question">
					<Insert Name="Insert SurveyTemplateLine Question" ObjectType="SurveyTemplateLine" OutputProperty="${SurveyTemplateLine}">
						<Parameter	Name="Id.SurveyTemplate"	Direction="In"		Value="${SurveyTemplate}" />
						<Parameter	Name="Context"				Direction="In"		Value="SurveyTemplateLineContext.Question" />
						<Parameter	Name="OrderByQuestion"		Direction="In"		Value="${OrderByQuestion}" />
						<Parameter	Name="OrderByTheme"			Direction="In"		Value="${OrderByTheme}" />
						<Parameter	Name="Question"				Direction="In"		Value="${Question}" />
						<Parameter	Name="Theme"				Direction="In"		Value="${Theme}" />
						<Parameter	Name="Weight"				Direction="In"		Value="1" />
					</Insert>

					<When Name="Question.Open == true" Condition="${Question.Open} == true">
						<Assign Name="Set SurveyTemplateLine.Weight to 0" Property="${SurveyTemplateLine.Weight}" Value="0" />
					</When>

					<Add Name="OrderByQuestion + 10" ValueLeft="${OrderByQuestion}" ValueRight="10" OutputProperty="${OrderByQuestion}" />
				</ForEach>
			</Transaction>
		</When>

		<UserContent Name="Post" />
	</Execution>
</Workflow>