Challenges (and rewards for them) are handled by the engagement-manager

Service

Description

AuditLogMessagingService (not implemented yet)

Should be responsible for construction and sending of messages into audit log.

This is a common service and implementation/usage should be similar as in other services.

CustomerChallengeService

Responsible for managing Challenges for each of the customer. Based on defined missions/challenges in DB recognizes which missions/challenges are available to the customer and manges their statuses.

CustomerEventService

Responsible for parsing customer events and putting them into DB for later processing. advantage of having separate methods for each type of event should be that the interface for each of them is clear wich is easier to use/understand than using just some arbitrary maps with undefined structures.

CustomerRewardService

Responsible for managing rewards for each challenge for each customer.

MessagingService

Responsible for sending events and snapshots.

Currently contains these events:

sendCustomerChallengeDeadline

sendExpiredCustomerReward

This is a common service and implementation/usage should be similar as in other services.

NotificationService

Responsible for sending notifications.

This is a common service and implementation/usage should be similar as in other services.

OutputService

Wrapper for output-manager messages.

This is a common service and implementation/usage should be similar as in other services.

ProcessorService

Responsible for processing customers' events and recognizing which missions/challenges are completed. Each of the processors can have their own required parameters (based on its type).