Fired when a learner's progress on a learning module changes, for example starting, completing, saving, languishing without completion, renewing, expiring or submitting a module. Raised throughout learning module processing in LearningManager and ModuleFolder, one instance per progress change, with the specific change identified by the action. The attributes map contains the ModuleFolder under the key "module" when one is available. A listener can use this event to drive triggers, funnels and the social recognition wall.

Group: Journeys

Implements: TriggerEvent, FunnelEvent, ShareableItemEvent


Properties

PropertyReturnsDescription
actionModuleProgressActionThe kind of progress change that occurred, eg module started, completed, renewed or expired.
attributesMap<String,Object>Extra properties associated with this event. Contains the ModuleFolder under the key "module" when one is available.
contentIdsList<String>The content walls where this achievement should be shared. This event does not specify any, so the default behaviour of posting to the team organisation wall applies.
courseCodeStringThe course code of the course containing the module, if the module belongs to a course.
eventIdStringThe persistence-friendly identifier for this event type.
itemDescriptionStringA human-readable description of the achievement, either the completed module's title or, if the module folder is not available in the attributes, a fallback message built from the module status's module code.
leadProfileProfileThe learner associated with this event, for funnel processing.
moduleCodeStringThe code of the module whose progress changed.
moduleStatusModuleStatusThe learner's status record for the module at the time of this event, if one was available when the event was raised.
programCodeStringThe program code of the program containing the module.
relatedAppNameStringThe name of the app that can locate the source activity, always the learning app's instance ID.
relatedIdStringThe ID of the module status record for this progress change.
relatedLeadLeadThis event is not created from an existing funnel lead, so there is no related lead to return.
shareablebooleanTrue if this event represents an achievement worth sharing on the social wall, which is the case only when the action is MODULE_COMPLETE.
shareableItemWebsiteWebsiteThe website this shareable item should be associated with.
sourceProfileProfileThe learner whose progress triggered this event.
triggerItem1StringA concatenated string combining the website name with the program, course and module codes, used as a trigger key.
triggerItem2StringThe name of the ModuleProgressAction that describes what happened, eg MODULE_STARTED, MODULE_COMPLETE, MODULE_LANGUISHING or MODULE_SAVED.
triggerItem3StringNot used by this event; always null.
triggerItem4StringNot used by this event; always null.
triggerItem5StringNot used by this event; always null.
websiteWebsiteThe website that owns the module the learner is progressing through.

Inherited from TriggerEvent

Properties

PropertyReturnsDescription
serialisablebooleanWhether this event's attributes were built to survive being persisted, ie every value is a plain serialisable value rather than a persistent entity or some other object that only makes sense inside the firing transaction. Only the firing app can know this, so it declares it - see EventBuilder. An agent that subscribes to an event does not run when it fires. The event is written to storage as JSON, buffered with others, and read back minutes later in a different session, so a value that cannot be written and read back is not merely awkward, it breaks the whole delivery. The agent framework therefore ignores any event which does not say yes here.

Methods

isSerialisable()

Returns: boolean

Whether this event's attributes were built to survive being persisted, ie every value is a plain serialisable value rather than a persistent entity or some other object that only makes sense inside the firing transaction. Only the firing app can know this, so it declares it - see EventBuilder. An agent that subscribes to an event does not run when it fires. The event is written to storage as JSON, buffered with others, and read back minutes later in a different session, so a value that cannot be written and read back is not merely awkward, it breaks the whole delivery. The agent framework therefore ignores any event which does not say yes here.


Methods

toProps() · getSourceProfile() · getEventId() · getWebsite() · getProgramCode() · getCourseCode() · getModuleCode() · getAction() · getTriggerItem1() · getTriggerItem2() · getTriggerItem3() · getTriggerItem4() · getTriggerItem5() · getModuleStatus() · getAttributes() · getLeadProfile() · getRelatedLead() · isShareable() · getItemDescription() · getRelatedAppName() · getRelatedId() · getContentIds() · getShareableItemWebsite()

toProps()

Returns: Map<String,Serializable>

Builds the serialisable properties map for this event, including the moduleStatus URN and the action name, for use where the event needs to be passed to external systems such as an LLM.

getSourceProfile()

Returns: Profile

The learner whose progress triggered this event.

getEventId()

Returns: String

The persistence-friendly identifier for this event type.

getWebsite()

Returns: Website

The website that owns the module the learner is progressing through.

getProgramCode()

Returns: String

The program code of the program containing the module.

getCourseCode()

Returns: String

The course code of the course containing the module, if the module belongs to a course.

getModuleCode()

Returns: String

The code of the module whose progress changed.

getAction()

Returns: ModuleProgressAction

The kind of progress change that occurred, eg module started, completed, renewed or expired.

getTriggerItem1()

Returns: String

A concatenated string combining the website name with the program, course and module codes, used as a trigger key.

getTriggerItem2()

Returns: String

The name of the ModuleProgressAction that describes what happened, eg MODULE_STARTED, MODULE_COMPLETE, MODULE_LANGUISHING or MODULE_SAVED.

getTriggerItem3()

Returns: String

Not used by this event; always null.

getTriggerItem4()

Returns: String

Not used by this event; always null.

getTriggerItem5()

Returns: String

Not used by this event; always null.

getModuleStatus()

Returns: ModuleStatus

The learner's status record for the module at the time of this event, if one was available when the event was raised.

getAttributes()

Returns: Map<String,Object>

Extra properties associated with this event. Contains the ModuleFolder under the key "module" when one is available.

getLeadProfile()

Returns: Profile

The learner associated with this event, for funnel processing.

getRelatedLead()

Returns: Lead

This event is not created from an existing funnel lead, so there is no related lead to return.

isShareable()

Returns: boolean

True if this event represents an achievement worth sharing on the social wall, which is the case only when the action is MODULE_COMPLETE.

getItemDescription()

Returns: String

A human-readable description of the achievement, either the completed module's title or, if the module folder is not available in the attributes, a fallback message built from the module status's module code.

getRelatedAppName()

Returns: String

The name of the app that can locate the source activity, always the learning app's instance ID.

getRelatedId()

Returns: String

The ID of the module status record for this progress change.

getContentIds()

Returns: List<String>

The content walls where this achievement should be shared. This event does not specify any, so the default behaviour of posting to the team organisation wall applies.

getShareableItemWebsite()

Returns: Website

The website this shareable item should be associated with.

To get full access to the Kademi Hub existing customers can login here, or new customers can register here.