Difference between revisions of "DCS Using Script"
(13 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
[[Category:Answer_sheet_data_caches]] | [[Category:Answer_sheet_data_caches]] | ||
+ | |||
+ | =DCS Using Script= | ||
+ | |||
+ | == <span style="color:#DF8621">'''Overview'''</span> == | ||
+ | |||
DCS now can have data without using questionnaire, it's setting by script: | DCS now can have data without using questionnaire, it's setting by script: | ||
Line 7: | Line 12: | ||
DCS using with script, required a workflow: | DCS using with script, required a workflow: | ||
− | - The workflow must return CustomDataCacheSpecificationBuildResult | + | - The workflow must return [[CustomDataCacheSpecificationBuildResult class|CustomDataCacheSpecificationBuildResult]] with UniqueIds and NonUniqueIds |
- The workflow get 5 parameters: | - The workflow get 5 parameters: | ||
Line 36: | Line 41: | ||
</source> | </source> | ||
− | The fifth parameter can be set when rebuild DCS | + | The fifth parameter can be set when rebuild DCS, see more on the dcs.Rebuild on [[DataCacheSpecification class|DCS class]] |
<source lang="javascript"> | <source lang="javascript"> | ||
dcs.Rebuild(true, true, 0, true, extraParameter); | dcs.Rebuild(true, true, 0, true, extraParameter); | ||
</source> | </source> | ||
− | Example | + | Note: ''Also support to select Ids and NonUniqueIds of DCS'': |
+ | <source lang="javascript"> | ||
+ | selectMultiColumn(SYS_SCRIPT_NONUNIQUEID_SYS, SYS_SCRIPT_UNIQUEID_SYS) where true; | ||
+ | </source> | ||
+ | |||
+ | == <span style="color:#DF8621">'''Example'''</span> == | ||
+ | |||
+ | ===<span style="color:#DF8621"> Example 1 </span>=== | ||
+ | |||
− | A simple DCS with | + | A simple DCS with one column name "test" and 5 rows, value for each row is a random number. Like this: |
[[File:2018-10-25_11-22-00.png]] | [[File:2018-10-25_11-22-00.png]] | ||
Line 56: | Line 69: | ||
[[File:2018-10-25_11-29-38.png]] | [[File:2018-10-25_11-29-38.png]] | ||
+ | |||
- Create a workflow and insert the workflow in to the DCS | - Create a workflow and insert the workflow in to the DCS | ||
Line 61: | Line 75: | ||
[[File:2018-10-25_11-40-05.png]] | [[File:2018-10-25_11-40-05.png]] | ||
− | Code on workflow must return CustomDataCacheSpecificationBuildResult, how many rows on DCS belonging the length of | + | Code on workflow must return [[CustomDataCacheSpecificationBuildResult class|CustomDataCacheSpecificationBuildResult]], how many rows on DCS belonging the length of array Ids and NonUniqueIds. |
In this example, res is returned with array 5 items, therefor the DCS have 5 rows | In this example, res is returned with array 5 items, therefor the DCS have 5 rows | ||
Line 71: | Line 85: | ||
</source> | </source> | ||
− | + | After rebuild DCS, we have the DCS like this: | |
+ | |||
+ | [[File:2018-10-25_11-22-00.png]] | ||
+ | ===<span style="color:#DF8621"> Example 2 </span>=== | ||
+ | |||
+ | |||
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]] | ||
+ | |||
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: | 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: | ||
Line 99: | Line 121: | ||
</source> | </source> | ||
+ | ( ''On the above script is used FullCustomColumnSettings for getting row number, see more the class [[FullCustomColumnSettings class|FullCustomColumnSettings]]'' ) | ||
− | In workflow, add 1 more line: | + | - In workflow, add 1 more line to set value: |
<source lang="javascript"> | <source lang="javascript"> | ||
Line 107: | Line 130: | ||
[[File:2018-10-26_10-36-36.png]] | [[File:2018-10-26_10-36-36.png]] | ||
+ | |||
After rebuild the DCS, "x" will be replace by "Order number " | After rebuild the DCS, "x" will be replace by "Order number " | ||
[[File:2018-10-26_10-34-42.png]] | [[File:2018-10-26_10-34-42.png]] | ||
+ | |||
+ | |||
+ | |||
+ | ===<span style="color:#DF8621"> Example 3 </span>=== | ||
Let add one more column order same with the column Order above, name "Order1" | Let add one more column order same with the column Order above, name "Order1" | ||
Line 116: | Line 144: | ||
[[File:2018-10-26_11-48-55.png]] | [[File:2018-10-26_11-48-55.png]] | ||
− | But this time row value will be | + | 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]] | ||
− | + | ||
+ | - 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 132: | Line 165: | ||
</source> | </source> | ||
− | + | 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]] | ||
− | |||
After rebuilding DCS, value for row will be replace "y" by value "Order number " which was wet from DCS parameter | After rebuilding DCS, value for row will be replace "y" by value "Order number " which was wet from DCS parameter | ||
[[File:2018-10-26_11-48-55.png]] | [[File:2018-10-26_11-48-55.png]] | ||
+ | |||
+ | |||
+ | |||
+ | ===<span style="color:#DF8621"> Example 4 </span>=== | ||
DCS can also get value while buiding DCS, by using the fifth parameter | DCS can also get value while buiding DCS, by using the fifth parameter | ||
Line 150: | Line 187: | ||
[[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 160: | Line 201: | ||
</source> | </source> | ||
− | + | And also add a line for set the parameter | |
<source lang="javascript"> | <source lang="javascript"> | ||
Line 168: | Line 209: | ||
[[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 [[DataCacheSpecification class|dcs.Rebuild]] | ||
<source lang="javascript"> | <source lang="javascript"> | ||
DataCacheSpecification dcs = new DataCacheSpecification(DCSRid); | DataCacheSpecification dcs = new DataCacheSpecification(DCSRid); | ||
Line 174: | Line 216: | ||
dcs.Rebuild(true, true, 0, true, extraParameter); | dcs.Rebuild(true, true, 0, true, extraParameter); | ||
</source> | </source> | ||
+ | |||
DCS will look like below after rebuiding: | DCS will look like below after rebuiding: | ||
[[File:2018-10-26_13-43-15.png]] | [[File:2018-10-26_13-43-15.png]] |
Latest revision as of 10:17, 26 October 2018
Contents
DCS Using Script
Overview
DCS now can have data without using questionnaire, it's setting by script:
DCS using with script, required a workflow:
- The workflow must return CustomDataCacheSpecificationBuildResult with UniqueIds and NonUniqueIds
- 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:
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, see more on the dcs.Rebuild on DCS class
dcs.Rebuild(true, true, 0, true, extraParameter);
Note: Also support to select Ids and NonUniqueIds of DCS:
selectMultiColumn(SYS_SCRIPT_NONUNIQUEID_SYS, SYS_SCRIPT_UNIQUEID_SYS) where true;
Example
Example 1
A simple DCS with one column name "test" and 5 rows, value for each row is a random number. Like this:
How to do it:
- Create a new DCS:
+ Choose using script
+ Add a custom column
- Create a workflow and insert the workflow in to the DCS
Code on workflow must return CustomDataCacheSpecificationBuildResult, how many rows on DCS belonging the length of array Ids and NonUniqueIds. 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:
Example 2
Add another column "Order" in to the above DCS, value for each row is a text: "Order number 1" to "Order number 5"
How to do:
- Add custom column name "Order", type full column on the DCS:
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();
( On the above script is used FullCustomColumnSettings for getting row number, see more the class FullCustomColumnSettings )
- In workflow, add 1 more line to set value:
res.AddVariableForFullCustomColumns("x", "Order number ");
After rebuild the DCS, "x" will be replace by "Order number "
Example 3
Let add one more column order same with the column Order above, name "Order1"
But this time row value will be set from parameter.
How to do:
- Put parameter on DCS:
- Create a full custom column name "Order1"
- 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 );
After rebuilding DCS, value for row will be replace "y" by value "Order number " which was wet from DCS parameter
Example 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
How to do:
- First, add a full custom column name "Date"
- 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 );
- 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: