Skip to content

Commit a9d4dc7

Browse files
authored
Create FlowAction.js
1 parent 3cee3e2 commit a9d4dc7

File tree

1 file changed

+46
-0
lines changed
  • Specialized Areas/Flow Actions/Group similar assessments using flow designer action: Native UI

1 file changed

+46
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
(function execute(inputs, outputs) {
2+
// ... code ...
3+
4+
//Get Source ids from existing Attestation;
5+
//Check if an assessable record exists for all attestations in the group if not, throw an error message.
6+
var sources = '';
7+
var asmtmetricType = inputs.metricType; //Assessment metric type sys_id
8+
var asmtAssignee =inputs.AttestationAssignee.sys_id.toString(); //Assessment assignee.
9+
var assessmentList =inputs.AttestationList.trim(); //comma separated individual assessment.
10+
11+
var asmt = new GlideRecord("asmt_assessment_instance"); //Assessment instance table
12+
asmt.addQuery("sys_id", "IN", assessmentList);
13+
asmt.query();
14+
while (asmt.next()) { //Need this while loop to check 1)check state and Assessable record.
15+
if ((asmt.state == "complete" || asmt.state == "canceled")) {
16+
outputs.out = "can't proceed, Attestation states are in Complete or Canceled, Please review.";
17+
return;
18+
}
19+
//for each assessment check if assessable record exist
20+
var assessableRecord = new GlideRecord("asmt_assessable_record"); //assessment assessable table
21+
assessableRecord.addQuery("source_id", asmt.sn_grc_item);
22+
assessableRecord.query();
23+
if (assessableRecord.next()) {
24+
sources = sources + "," + asmt.sn_grc_item;
25+
} else {
26+
outputs.out = "can't proceed, Assesssable record doesn't for this inntance please " + asmt.number + " review";
27+
return;
28+
}
29+
}
30+
sources = sources.slice(1); //Comma separated source sys_ids where assessment exist
31+
32+
//Create Grouped Attestation using below api
33+
var result = new global.AssessmentUtils().createAssessments(asmtmetricType, sources + '', asmtAssignee, '');
34+
35+
//set grouped assessmemt as parent to all the instance
36+
var asmtFinal = new GlideRecord("asmt_assessment_instance");
37+
asmtFinal.addQuery("sys_id", "IN", assessmentList);
38+
asmtFinal.query();
39+
while(asmtFinal.next()){
40+
asmtFinal.setValue("sn_grc_parent", result.split(',')[0]);
41+
asmtFinal.update(); //set parent on to the each assessment
42+
}
43+
44+
outputs.out = result.split(',')[0]; //return the grouped attestation instance id.
45+
46+
})(inputs, outputs);

0 commit comments

Comments
 (0)