Как же быть, когда возникают задачи отправки нужного количества баллов после некоторых действий пользователя, необязательно связанных со встроенными "квизами"? Если говорить о статусе, то решение появилось, правда, не в версии 3, а в Storyline 360. Наконец-то в группе Project добавился конкретный триггер успешности - Complete course.
Он имеет несколько сочетаний состояний из вариантов:
- Завершен (Completed),
- Незавершен (Incomplete),
- Успешен (Passed),
- Неуспешен (Failed).
А чтобы LMS взяла статус именно из такого триггера, нужно при публикации курса поставить галочку в разделе Tracking и выбрать подходящий для вашей СДО отчет статуса.
Вот только в Storyline 3 нет даже такого триггера, а триггера отправки баллов нет и в 360. На помощь в таком случае приходит волшебная палочка в виде триггера "Execute JavaScript".
В интернете можно найти немало примеров отправки оценок и статусов. Подобный код я приводил и в посте "Articulate Storyline и JavaScript - отслеживание полного просмотра видеоролика в курсе"
var player = GetPlayer();
var currentscore = player.GetVar("visco"); //получаем значение переменной Articulate
lmsAPI.SetScore(currentscore,100,0); //передаем оценку в СДО
lmsAPI.SetReachedEnd(); //устанавливаем в СДО статус завершения
lmsAPI.SetPassed(); //устанавливаем в СДО статус успешности
Если забить такой код в триггер "Execute JavaScript" и поставить в Tracking галочку напротив обязательного просмотра слайдов, то получим искомый результат.
Проверить работоспособность этого примера можно в CLOUD.SCORM, как это сделать - я подробно описывал в статье: "5 причин использования SCORM Cloud при разработке курсов".
Вот только бывают случаи, когда код в таком виде "не доносит" статус и оценку до СДО. Речь идёт о решении организации дистанционного обучения на системах SAP. С таким вариантом столкнулся я сам, найдя решение, делюсь им с вами. Рабочий код JavaScript любезно предложил Олег Буйлов - elearning-разработчик, известный поиском решений для нетривиальных задач. С его уточнениями вышеупомянутый код принимает вид:
var player = GetPlayer();
var currentscore = player.GetVar("visco");
currentscore = parseInt(scoreTotal);
function findLMSAPI(win) {
if (win.hasOwnProperty("GetStudentID")) return win;
else if (win.parent == win) return null;
else return findLMSAPI(win.parent);
}
var lmsAPI = findLMSAPI(this);
SCORM2004_SetScore(currentscore, 100, 0);
lmsAPI.SetScore(currentscore, 100, 0); //передаем оценку в СДО
SCORM2004_CallSetValue("cmi.completion_status", "completed");
SCORM2004_CallSetValue("cmi.success_status", "passed");
SetStatus("passed"); //устанавливаем в СДО статус успешности
Результат получен при публикации курса в SCORM "2004 ed.4" и LMS reporting "Passed/Incomplete".