Мой вопрос касается библиотеки API Tin Can PHP Person
объект и что из этого можно сделать.
Библиотека Person
Объект (насколько я понимаю) является реализацией ресурса агентов в разделе 2.4 части 3 спецификации xAPI (ссылка: https://github.com/adlnet/xAPI-Spec/blob/master/xAPI-Communication.md#24-agents-resource). Спецификация распознает объект Person и указывает, что целью объекта является
предоставить объединенную информацию об агенте, полученную извне
служба, такая как служба каталогов
Как видно из этого описания и от разработчиков библиотеки (см ссылку), что объект Person спецификации предназначен для предоставления в одном объекте средства сбора информации о человеке, которая распределена среди множества различных объектов Агента.
Мне было трудно следовать примерам в библиотеке, но следующий (слишком упрощенный) код работает в SCORM Cloud LRS:
...
$agent1 = new TinCan\Agent();
$agent1
->setMbox('[email protected]')
->setName('Dr David Jones');
$agent2 = new TinCan\Agent();
$agent2
->setMbox('[email protected]')
->setName('David Jones');
$person = new TinCan\Person();
$person
->setMbox([$agent1->getMbox(), $agent2->getMbox()])
->setName([$agent1->getName(), $agent2->getName()]);
...
Является ли библиотека Person
объект, предназначенный для сохранения в LRS? Если это так, я не смог найти никаких средств сделать это с помощью библиотеки Statement
объект. Если нет, для чего он предназначен?
Буду благодарен за разъяснения. Спасибо.
API не предоставляет средства для сохранения этого объекта. Он предназначен для того, чтобы LRS использовал все возможные средства для объединения нескольких агентов, которые представляют одну и ту же сущность, в объект Person. Предполагаемая цель состоит в том, чтобы позволить системам, имеющим доступ к потоку операторов, иметь возможность комбинировать эти потоки для нескольких агентов, чтобы получить более полное представление об общей активности этого человека.
Например, у меня может быть 3 (или X) идентификатора, которые представляют меня как личность, предположим, что они:
mailto:[email protected]
mailto:[email protected]
{"name": "@dave11785","homePage": "https://twitter.com"}
Передача любого из этих идентификаторов Агента (в виде полного представления Агента) в ресурс «Только для чтения» вернет объект Person, который включает все из них. при условии достаточных знаний LRS сопоставить их вместе. Поэтому для системы отчетности было бы возможно во время чтения потока операторов запрашивать объект Person для каждого нового агента, которого она видит, а затем координировать операторы с разрозненным actor
свойства (например) в единую запись полной активности этого человека. Ключевым моментом здесь является то, что LRS должен был быть разработан (или интегрирован) таким образом, чтобы он обладал необходимыми знаниями для объединения Агентов.
TinCanPHP предоставляет полный спектр объектов модели данных, потому что теоретически он может быть использован для написания LRS так же, как для связи с ним, так и для LRP. Ключевая деталь реализации здесь в том, что она обеспечивает GET /agents
только для чтения ресурса через TinCan\RemoteLRS
класс, который обеспечит обратно TinCan\Person
объект. Поскольку ваш код не взаимодействует с экземпляром TinCan\RemoteLRS
класс он фактически не связывается с LRS, поэтому LRS SCORM Cloud в данном случае не имеет значения. Если бы вы взаимодействовали с использованием доступного ресурса, вы бы получили возвращенный объект Person, который включает в себя только агента, которого вы передали в него, потому что (по крайней мере, на момент написания) Cloud не знает, как связать несколько агентов, но знает, что по умолчанию это Агент, предоставленный ему.
Других решений пока нет …