Use Case Diagram System provides use cases for two roles: 'Authorized User' may initiate 'DistributeJob' for chosen job over chosen jobDistributionChannels. This use case detailed in 'Sequence Diagram' below. Also, 'Authorized User' may query for list of jobDistributionTracks. Another role – 'Anonymous User' may apply for job – jobApplicationTrack created to track this.
Class Diagram Class diagram shows domains introduced to system (JobDistributionChannel, JobDistributionTrack and JobApplicationTrack) and their relation to existing domains. JobDistributionTrack created with state=init and then updated to state=done upon completion of distribution task.
Sequence Diagram Sequence Diagram for 'DistributeJob' use case. First part of distributeJobService method distributeJob executes synchronously. It saves jobDistributionTrack for each jobDistributionChannel requested to distribute over. Next part – executes asynchronously. It runs actual distrbution task calling jobDistributionPlugin appropriate to jobDistributionChannel type.