Standard workflow steps
Job creation and processing flow
Encoding step
The Content and Product Manager (CPM) (via the Content Workflow Manager – CWM) drives encoding jobs against the encoders using profiles that are pre-configured in the encoder.
An encoding job takes the following as its inputs:
-
A reference to the encoding profile to be applied
-
A source URL that specifies the location of the source asset
-
An output URL that specifies where the generated, multi-bitrate pivot file will be located
The CPM (via CWM) polls the status of the job and when it is done, requests the full URL of the generated pivot file.
This is different from the one-stage workflow in the following respects:
Encoding profiles must be defined at the main content level. (One-step profiles are defined at the content version level.)
A reference asset (the pivot file) is created that is also linked from the main content with an asset-device link (ADL), as this is not a playable asset.
Packaging step
// TODO: update – with JITP, it doesn't work like this.
The CPM (via CWM) drives packaging jobs against the configured packagers using profiles that are preconfigured in the packager.
A packaging job takes the following as its inputs:
-
A reference to the packaging profile to be applied
-
A source URL that specifies the location of the source pivot file
-
A list of DRM identifiers for the DRM schemes to be used to protect the content
The CPM (via CWM) polls the status of the job and when it is done, requests the relative URL of the generated, playable asset.
This interaction is defined by NAGRA via the Packaging API (an extension of the encoder control API). Packagers must implement this API so they can work with the NAGRA CPM/CWM. If that is not the case, a specific API adaptation is required (for example, for Harmonic VOS360).
This is different from the one-stage workflow in the following respects:
-
It uses a new packaging API definition and client-side implementation in CWM (packaging jobs).
-
Packaging profiles are linked to technical versions.
-
The output of the packaging job includes generation of a playable asset.
A packaging profile is associated with each technical version of the asset.
For details of the profile parameters and device parameters, see ml-sp-cwm-generic-encoding_User_Guide.doc. // TODO: change this to a link once the page exists.
External/public interfaces
Workflow manager has following external interfaces
-
Encoder interface
-
Asset Publishing interface (for Purge)
-
Job Management APIs
The CWM interfaces both the external encoder and packager systems via the CPM/CWM "Generic interface for encoder control" SOAP interface and the ‘Asset Publishing Interface”. If these systems do not implement this interface, additional "adaptor" modules are needed to translate to the encoder's or packager's native interfaces.
Job Management APIs
|
API |
URL |
|---|---|
|
GET |
https://hostname/workflow/v1/workflowJobs/ |
Few examples for query filters:
Filter query to retrieve a particular job id:
[<baseurl>/workflowJobs?filter=](http://localhost:8880/workflow/v1/workflowJobs?filter=){ "id": "Prof1_31_tc_TechnicalContent" }
Filter query for selected owner ids:
<baseUrl>/workflowJobs?filter={"ownerId":{"$in":["tcId1","tcId2"]}}
Filter query for jobs start date greater than particular date :
<baseUrl>[/workflowJobs?filter=](http://localhost:8880/workflow/v1/workflowJobs?filter=){ "start" : { "$gt" : { "$date" : "2013-05-09T07:40:56.983Z"}}}
Filter query with pagination and sorting:
[<baseUrl>/workflowJobs?filter=](http://localhost:8880/workflow/v1/workflowJobs?filter=){ "priority": 1 }&sort=[profileData.id](http://profiledata.id/),1&page=1&limit=6
Though there are APIs to Create/Update/Delete Jobs, they should not be used externally by operators as it might cause data discrepancies. These are internally used by CPM.
List of supported adaptors
-
Harmonic VOS 360
-
Elemental
CPM Data Model
Assumptions
-
Packaging profiles are pre-configured in the packager so that the CWM just needs to send a reference to the profile in the packaging job.
-
Consistent DRM signalling with JITP
A license for a piece of content might be requested before a key for the same content is required for encryption (license pre-delivery).
The license server embeds the same key that the KSS returns to the packager no matter which request comes first. -
The workflow manager should be able to communicate with the Encoder via Http.
Limitations
-
This design only supports a two-stage workflow using the Nagra Encoder-Control API.
Third-party encoder APIs are not supported, and a separate effort would be needed (for example, to add an adaptor or to support them natively). -
It covers VOD assets only (no catch-up or nPVR).
BACKUP
A workflow consists of the following:
-
A profile for pivot or package creation
-
A processing device – defined as being of type
processingDevicein Business Configuration Manager (BCM) -
A source device – defined as being of type
sourceDevicein BCM -
A destination device – defined as being of type
destinationDevicein BCM
In addition:
-
The encoding profile must be attached to an
EditorialContentthat has a reference asset. -
The packaging profile must be attached to a
TechnicalContentthat does not have a playable asset. -
The processing device holds the details of the host that provides the server side of the
EncoderControlinterface.