使用 Apex 指令檔建立標題評估問題
執行 Apex 指令檔以建立符合用於標題的評分整合程序的問題。
必要版本
| 提供版本:Lightning Experience |
| 提供版本:具備 Education Cloud 的 Enterprise、Performance、Unlimited 及 Developer Edition |
| 所需的使用者權限 | |
|---|---|
| 若要使用 Apex 指令檔將問題新增至標題: | Education Cloud 完整存取權 |
// Controls whether this script will delete records matching this data on developer name before attempting to insert.
// This should only be enabled if you are ok removing the data already present, if it was previously inserted
// Note: It will fail if assessment and/or assessment question responses are present
Boolean doDeletes = false;
// Controls whether data should be inserted.
Boolean doInserts = true;
// Assessment Question Set Name & Dev Name
String aqsDevName = 'XApplication_Review_Questions';
String aqsName = 'Application Review Questions';
// Default Response Options
String defaultResponseOpts = 'Incomplete or Unacceptable\nAcceptable\nSatisfactory\nExemplary';
// All Question Defaulted Field Values
String questionDataType = 'Radio';
String questionQuestionCategory = :alert_spin:'Admissions';
String questionFormulaResponseType = 'Text';
Boolean isQuestionActive = true;
Boolean isQuestionOptionSourceResponseValue = false;
Map<String, String> questionNameByQDevName = new Map<String, String>();
Map<String, String> questionByQDevName = new Map<String, String>();
Map<String, String> responseOptsByQDevName = new Map<String, String>();
// Assessment Question 1 Definition
String q1DevName = 'Application_Review_Criterion_Profile';
questionNameByQDevName.put (q1DevName, 'Application Review Criterion: Profile');
questionByQDevName.put (q1DevName, 'Is the Profile section complete?');
responseOptsByQDevName.put (q1DevName, 'Incomplete\nPartly Complete\nComplete');
// Assessment Question 2 Definition
String q2DevName = 'Application_Review_Criteria_Test_Result';
questionNameByQDevName.put (q2DevName, 'Application Review Criteria: Test Result');
questionByQDevName.put (q2DevName, 'Rate the applicant’s test results.');
responseOptsByQDevName.put (q2DevName, defaultResponseOpts);
// Assessment Question 3 Definition
String q3DevName = 'Application_Review_Criteria_College_History';
questionNameByQDevName.put (q3DevName, 'Application Review Criteria: College History');
questionByQDevName.put (q3DevName, 'Rate the applicant’s college history.');
responseOptsByQDevName.put (q3DevName, defaultResponseOpts);
// Assessment Question 4 Definition
String q4DevName = 'Application_Review_Criteria_Secondary_School';
questionNameByQDevName.put (q4DevName, 'Application Review Criteria: Secondary School');
questionByQDevName.put (q4DevName, 'Rate the applicant’s secondary school history.');
responseOptsByQDevName.put (q4DevName, defaultResponseOpts);
// Assessment Question 5 Definition
String q5DevName = 'Application_Review_Criteria_References';
questionNameByQDevName.put (q5DevName, 'Application Review Criteria: References');
questionByQDevName.put (q5DevName, 'Rate the applicant’s references.');
responseOptsByQDevName.put (q5DevName, defaultResponseOpts);
// Assessment Question 6 Definition
String q6DevName = 'Application_Review_Criteria_Family';
questionNameByQDevName.put (q6DevName, 'Application Review Criteria: Family');
questionByQDevName.put (q6DevName, 'Is the Family section complete?');
responseOptsByQDevName.put (q6DevName, 'Incomplete\nPartly Complete\nComplete');
// Assessment Question 7 Definition
String q7DevName = 'Application_Review_Criteria_Files';
questionNameByQDevName.put (q7DevName, 'Application Review Criteria: Files');
questionByQDevName.put (q7DevName, 'Have all required files been provided?');
responseOptsByQDevName.put (q7DevName, 'Not Provided\nPartly Provided\nFully Provided');
// Delete Assessment Question Set, if enabled
if (doDeletes) {
// Delete Assessment Question Assignment records, if any
List<AssessmentQuestionAssignment> aqasForDel = [Select Id from AssessmentQuestionAssignment where AssessmentQuestion.DeveloperName in :questionByQDevName.keyset()];
if (aqasForDel.size() > 0) {
delete aqasForDel;
}
// Delete Assessment Question Set record, if present
List<AssessmentQuestionSet> aqsForDel = [select Id from AssessmentQuestionSet where DeveloperName = :aqsDevName];
if (aqsForDel.size() > 0) {
delete aqsForDel;
}
// Delete Assessment Questions if present
List<AssessmentQuestion> assessmentQuestionsForDel = [select Id, DeveloperName from AssessmentQuestion where DeveloperName in :questionNameByQDevName.keyset()];
if (assessmentQuestionsForDel.size() > 0) {
delete assessmentQuestionsForDel;
}
}
if (doInserts) {
// Define and Insert Assessment Question Set
AssessmentQuestionSet assessmentQuestionSet = new AssessmentQuestionSet(
Name = aqsName,
DeveloperName = aqsDevName
);
insert assessmentQuestionSet;
// Insert Questions
List<AssessmentQuestion> assessmentQuestions = new List<AssessmentQuestion>();
for (String qDevName : questionNameByQDevName.keyset()) {
assessmentQuestions.add(
new AssessmentQuestion(
Name = questionNameByQDevName.get(qDevName),
DeveloperName = qDevName,
DataType = questionDataType,
QuestionCategory = questionQuestionCategory,
FormulaResponseDataType = questionFormulaResponseType
)
);
}
insert assessmentQuestions;
// Build Map of Assessment Questions By Question Dev Name
Map<String, AssessmentQuestion> assessmentQuestionsByDevName = new Map<String, AssessmentQuestion>();
for (AssessmentQuestion aq : assessmentQuestions) {
assessmentQuestionsByDevName.put(aq.DeveloperName, aq);
}
// Insert Assessment Question Versions
List<AssessmentQuestionVersion> assessmentQuestionVersions = new List<AssessmentQuestionVersion>();
for (String qDevName : questionNameByQDevName.keyset()) {
assessmentQuestionVersions.add(
new AssessmentQuestionVersion(
Name = questionNameByQDevName.get(qDevName),
AssessmentQuestionId = assessmentQuestionsByDevName.get(qDevName).Id,
ResponseValues= responseOptsByQDevName.get(qDevName),
QuestionText = questionByQDevName.get(qDevName),
IsActive = isQuestionActive,
IsOptionSourceResponseValue = isQuestionOptionSourceResponseValue
)
);
}
insert assessmentQuestionVersions;
// Associate Question with Question Set via Assessment Question Assignment
List<AssessmentQuestionAssignment> assessmentQuestionAssignments = new List<AssessmentQuestionAssignment>();
for (String qDevName : questionNameByQDevName.keyset()) {
assessmentQuestionAssignments.add (
new AssessmentQuestionAssignment(
assessmentQuestionId = assessmentQuestionsByDevName.get(qDevName).Id,
assessmentQuestionSetId = assessmentQuestionSet.Id
)
);
}
insert assessmentQuestionAssignments;
}
此文章是否解決您的問題?
請讓我們知道,以便我們改進!

