Difference between revisions of "DCS Using Script"

From Catglobe Wiki
Jump to: navigation, search
Line 72: Line 72:
 
</source>
 
</source>
  
Let continue with another example using parameter
+
After rebuild DCS, we have the DCS like this:
 +
 
 +
[[File:2018-10-25_11-22-00.png]]
 +
 
 +
 
 +
2. Let continue with another example using parameter
 +
 
 
Add another column "Order" in to the above DCS, value for each row is a text: "Order number 1" to "Order number 5"
 
Add another column "Order" in to the above DCS, value for each row is a text: "Order number 1" to "Order number 5"
 +
 
[[File:2018-10-26_10-34-42.png]]
 
[[File:2018-10-26_10-34-42.png]]
  
 
+
How to do:
Add custom column name "Order", type full column on the DCS:
+
- Add custom column name "Order", type full column on the DCS:
  
 
[[File:2018-10-26_10-35-15.png]]
 
[[File:2018-10-26_10-35-15.png]]
Line 101: Line 108:
  
  
In workflow, add 1 more line:
+
- In workflow, add 1 more line to set value:
  
 
<source lang="javascript">
 
<source lang="javascript">
Line 113: Line 120:
 
[[File:2018-10-26_10-34-42.png]]
 
[[File:2018-10-26_10-34-42.png]]
  
Let add one more column order same with the column Order above, name "Order1"
+
 
 +
3. Let add one more column order same with the column Order above, name "Order1"
  
 
[[File:2018-10-26_11-48-55.png]]
 
[[File:2018-10-26_11-48-55.png]]
  
But this time row value will be gotten from parameter
+
But this time row value will be set from parameter.
 +
 
 +
How to do:
 +
 
 +
- Put parameter on DCS:
  
 
[[File:2018-10-26_12-00-04.png]]
 
[[File:2018-10-26_12-00-04.png]]
  
Also need use cgscript to create full custom column "Order1"
+
- Create a full custom column name "Order1"  
  
 
[[File:2018-10-26_11-56-05.png]]
 
[[File:2018-10-26_11-56-05.png]]
  
On workflow need adding code for get parameter  
+
- On workflow need adding code for get parameter  
 
<source lang="javascript">
 
<source lang="javascript">
 
array param = Workflow_getParameters();// array param with 5 items
 
array param = Workflow_getParameters();// array param with 5 items
Line 133: Line 145:
 
</source>
 
</source>
  
and alse need add one line for setting value
+
And also need add one line for setting value
 
<source lang="javascript">
 
<source lang="javascript">
 
res.AddVariableForFullCustomColumns("y", value );
 
res.AddVariableForFullCustomColumns("y", value );
 
</source>
 
</source>
 
  
 
[[File:2018-10-26_12-04-45.png]]
 
[[File:2018-10-26_12-04-45.png]]
Line 145: Line 156:
 
[[File:2018-10-26_11-48-55.png]]
 
[[File:2018-10-26_11-48-55.png]]
  
DCS can also get value while buiding DCS, by using the fifth parameter
+
 
 +
4. DCS can also get value while buiding DCS, by using the fifth parameter
  
 
Let make an example, add another column name "Date" to the DCS, value for each row is current dateTime when build DCS
 
Let make an example, add another column name "Date" to the DCS, value for each row is current dateTime when build DCS
Line 151: Line 163:
 
[[File:2018-10-26_13-43-15.png]]
 
[[File:2018-10-26_13-43-15.png]]
  
First, add a full custom column  
+
How to do:
 +
 
 +
- First, add a full custom column name "Date"
  
 
[[File:2018-10-26_13-48-18.png]]
 
[[File:2018-10-26_13-48-18.png]]
  
On workflow add a line to the fifth parameter
+
- On workflow add a line to get the fifth parameter
  
 
<source lang="javascript">
 
<source lang="javascript">
Line 161: Line 175:
 
</source>
 
</source>
  
and also add a line for set the parameter
+
And also add a line for set the parameter
  
 
<source lang="javascript">
 
<source lang="javascript">
Line 169: Line 183:
 
[[File:2018-10-26_13-55-24.png]]
 
[[File:2018-10-26_13-55-24.png]]
  
Values will be set when rebuild DCS by dcs.Rebuild
+
- Values will be set when rebuild DCS by dcs.Rebuild
 
<source lang="javascript">
 
<source lang="javascript">
 
DataCacheSpecification dcs = new DataCacheSpecification(DCSRid);
 
DataCacheSpecification dcs = new DataCacheSpecification(DCSRid);

Revision as of 08:53, 26 October 2018

DCS now can have data without using questionnaire, it's setting by script:

2018-10-23 11-04-50.png


DCS using with script, required a workflow:

- The workflow must return CustomDataCacheSpecificationBuildResult

- The workflow get 5 parameters:

  • 1: Any parameter you have specified in the setup
  • 2: The DateTime (or Empty) from which to include data in a partial rebuild
  • 3: The Entire array of Non Unique Ids from last rebuild (or empty if full rebuild)
  • 4: The Entire array of Unique Ids from last rebuild (or empty if full rebuild)
  • 5: The extraParameter, can be set when the rebuild is instanciated from cgscript

The first parameter can be set on UI:

2018-10-23 12-20-06.png


Or can be set by cgscript:

Dictionary d1 = {"Key1":99, "Key2": "xxx"};
Dictionary d2 = {"": "yyy"};
DataCacheSpecification dcs = new DataCacheSpecification(dcsRId);
dcs.BuildUsingWorkflowScriptResourceId = workflowRId;
dcs.BuildUsingWorkflowScriptParameter={d1,d2};
dcs.Save();

The fifth parameter can be set when rebuild DCS

dcs.Rebuild(true, true, 0, true, extraParameter);

Example:

1. A simple DCS with one column name "test" and 5 rows, value for each row is a random number. Like this:

2018-10-25 11-22-00.png

How to do it:

- Create a new DCS:

+ Choose using script

+ Add a custom column

2018-10-25 11-29-38.png


- Create a workflow and insert the workflow in to the DCS

2018-10-25 11-40-05.png

Code on workflow must return CustomDataCacheSpecificationBuildResult, how many rows on DCS belonging the length of res. In this example, res is returned with array 5 items, therefor the DCS have 5 rows

CustomDataCacheSpecificationBuildResult res = new CustomDataCacheSpecificationBuildResult();
res.NonUniqueIds.AddRange({1,2,3,4,5});
res.Ids.AddRange({5,6,7,8,9});
return res;

After rebuild DCS, we have the DCS like this:

2018-10-25 11-22-00.png


2. Let continue with another example using parameter

Add another column "Order" in to the above DCS, value for each row is a text: "Order number 1" to "Order number 5"

2018-10-26 10-34-42.png

How to do: - Add custom column name "Order", type full column on the DCS:

2018-10-26 10-35-15.png

Because on script of Order custom column, have an undefined variables x, therefore we can not create that Order column on UI, just make by cgscrip:

DataCacheSpecification dcs = new DataCacheSpecification(15640179);
QcsCustomColumn cc = new QcsCustomColumn("Order", "string", true, dcs);
cc.CgScript = "array param = Workflow_getParameters();
Dictionary localCache = param[0];
FullCustomColumnSettings fs = param[1];
array result = {};
number numberRows = fs.UpdatedNumberOfRows;
for(number i = 0; i < numberRows; i++) {

    result.Add(x + convertToString(i+1));
}
return result;";
cc.Save();
dcs.Save();


- In workflow, add 1 more line to set value:

res.AddVariableForFullCustomColumns("x", "Order number ");

2018-10-26 10-36-36.png

After rebuild the DCS, "x" will be replace by "Order number "

2018-10-26 10-34-42.png


3. Let add one more column order same with the column Order above, name "Order1"

2018-10-26 11-48-55.png

But this time row value will be set from parameter.

How to do:

- Put parameter on DCS:

2018-10-26 12-00-04.png

- Create a full custom column name "Order1"

2018-10-26 11-56-05.png

- On workflow need adding code for get parameter

array param = Workflow_getParameters();// array param with 5 items
array a = param[0];// array a with 1 item type dictionary 
Dictionary d = a[0];
string value = d["key"];

And also need add one line for setting value

res.AddVariableForFullCustomColumns("y", value );

2018-10-26 12-04-45.png

After rebuilding DCS, value for row will be replace "y" by value "Order number " which was wet from DCS parameter

2018-10-26 11-48-55.png


4. DCS can also get value while buiding DCS, by using the fifth parameter

Let make an example, add another column name "Date" to the DCS, value for each row is current dateTime when build DCS

2018-10-26 13-43-15.png

How to do:

- First, add a full custom column name "Date"

2018-10-26 13-48-18.png

- On workflow add a line to get the fifth parameter

array extraParameter = param[4];

And also add a line for set the parameter

res.AddVariableForFullCustomColumns("z", extraParameter );

2018-10-26 13-55-24.png

- Values will be set when rebuild DCS by dcs.Rebuild

DataCacheSpecification dcs = new DataCacheSpecification(DCSRid);
array extraParameter = getCurrentDateTime();
dcs.Rebuild(true, true, 0, true, extraParameter);

DCS will look like below after rebuiding:

2018-10-26 13-43-15.png