Expand my Community achievements bar.

Announcing the launch of new sub-community for Campaign Web UI to cater specifically to the needs of Campaign Web UI users!
SOLVED

keep the results of interim population between two executions

Avatar

Level 3

Hi Team,

I want to uncheck all the "keep the results of interim population between two executions" in all workflows. So i planned to create a workflow to update @keepResult to "No".

In Data schema > xtk:workflow > structure > Display advanced field, I can see @keepResult (keep interim result) attribute.

1836409_pastedImage_2.png

But when i open Query activity or Update Data activity and select xtk:workflow as filtering dimension, in Display advanced field i am unable to find @keepResult attribute.

1836408_pastedImage_1.png

I found this link in forums Unchecking keep result filed in a workflow through javascript  where we can update @keepResult to "No".

But please help me to solve this issue using Query and update data activity.

Thanks and Regards,

Partha Sarathy.

1 Accepted Solution

Avatar

Correct answer by
Level 3

yeah thank you. I done this successfully using below code,

Start > Query > JavaScript code activity > End

1) Query: (query internal name: allWorkflowQuery)

This retrieve all workflows. (xtk:workflow -> primary key is not empty)

2) JavaScript code activity:

/*********************************************************************************************************/

var query = xtk.queryDef.create(

<queryDef schema="temp:allWorkflowQuery" operation="select">

     <select>

          <node expr="@id"/>

     </select>

</queryDef>

);

var record = query.ExecuteQuery();

for each (var variable in record) {

var primaryKey = variable.@id;

var keepInterimResult = 0;

xtk.session.Write(<workflow xtkschema="xtk:workflow" _operation="update" id={primaryKey} keepResult={keepInterimResult} />); 

/*********************************************************************************************************/

Regards,

ParthaSarathy

View solution in original post

5 Replies

Avatar

Community Advisor

Hi Partha,

Reason it's not visible directly in query activity because for this attribute xml="true" . Any specific requirement why you wanted to use this by query activity only? As you shared solution is defined by using JavaScript activity.

Avatar

Level 3

kapscool

Hi,

Thanks for responding! This JS works for updating only current workflow where i run the JS. But i want to update for all the workflows in our instance. (i.e) keepResult=No.

I tried below code. But it doesnt work.

var query = xtk.queryDef.create(

<queryDef schema="xtk:workflow" operation="select">

  <select>

    <node expr="@keepResult"/>

    <node expr="@id"/>

  </select>

</queryDef>

);

var record = query.ExecuteQuery();

for each (var variable in record) {

var keepResultIn = 0;

xtk.session.Write(<workflow xtkschema="xtk:workflow" _operation="update" id={variable.id} keepResult={keepResultIn} _key="@id"/>); 

please help me to acheive this function!

Thanks and Regards,

Partha

Avatar

Level 5

Try this:

var query = xtk.queryDef.create(

<queryDef schema="xtk:workflow" operation="select">

  <select>

    <node expr="@keepResult"/>

    <node expr="@id"/>

    <node expr="@label"/>

  </select>

  <where>

    <condition expr="@id!=''"/>

  </where>

</queryDef>

);

var record = query.ExecuteQuery();

for each (var variable in record) {

xtk.session.Write(<workflow xtkschema="xtk:workflow" _operation="update" id={variable.@id} keepResult='0' _key="@id"/>);

}

keepResult='0'  means 'No'

keepResult='1' means 'Yes'

Avatar

Correct answer by
Level 3

yeah thank you. I done this successfully using below code,

Start > Query > JavaScript code activity > End

1) Query: (query internal name: allWorkflowQuery)

This retrieve all workflows. (xtk:workflow -> primary key is not empty)

2) JavaScript code activity:

/*********************************************************************************************************/

var query = xtk.queryDef.create(

<queryDef schema="temp:allWorkflowQuery" operation="select">

     <select>

          <node expr="@id"/>

     </select>

</queryDef>

);

var record = query.ExecuteQuery();

for each (var variable in record) {

var primaryKey = variable.@id;

var keepInterimResult = 0;

xtk.session.Write(<workflow xtkschema="xtk:workflow" _operation="update" id={primaryKey} keepResult={keepInterimResult} />); 

/*********************************************************************************************************/

Regards,

ParthaSarathy

Avatar

Level 1

@Partha18 ,

 

Not sure if you ever got this figured out, but we're looking for a solution currently.

 

Based on the available documentation:

  "xml (boolen): if this option is activated, the values of the field don't have a linked SQL field. Adobe Campaign creates a Text type "mData" field for record storage. This means there is no filtering or sorting on these fields."

 

If you look in the Workflow schema and search "keepResult", it's set as xml="true". As it's highly recommended that you don't adjust anything in the out of the box schemas, the only other option could possibly be to create an extension which removes that piece, but without testing I'm not sure how exactly that works.