The messaging system of Enterprise is built on network broadcasting or multicasting.
The format of the messages sent by Enterprise Server 9 is described in this article. Use this information when you develop your own client application and you want to receive and interpret such messages.
Note that the Enterprise client applications do exactly the same, implementing the following Enterprise features:
- Hot Inbox
- User Messaging
- Live Update
Message format
A message is always related to a single object (or user). It consists of a header followed by multiple data fields (properties).
The following figure and table shows the format that is respected:
Token | Type | Description |
---|---|---|
format | uint8 | Version number of this format. Should be set to 1 (the current version). |
event | uint8 | Identifier of the message type. Implies which fields are listed. See Events. |
type | uint8 | Type of message. 1 = Server/System. 2 = Client/App. 3 = User. |
reserved | uint8 | Reserved for future purposes. |
field id len | uint16 | Length in bytes of (escaped) field identifier. Integer respects Big Endian notation. |
field id | UTF8 string | Unicode string in UTF-8 notation. Contains the value of the field identifier. These IDs should match field names returned from database queries. Therefore, a new element is introduced in the Property element of WSDL to differentiate between localized and un-localized property names. If the field ID matches one of the Name elements, its value is updated. |
value len | uint16 | Length in bytes of (escaped) field value. Integer respects Big Endian notation. |
value | UTF8 string | Unicode string in UTF-8 notation. Contains the value of the field value. All types of fields are transformed to string notation |
Because messages are broadcasted, the total package size of a single message should NOT exceed the Ethernet frame size (typically 1500 bytes). If fields don’t fit in a message, they are ignored and the message is sent without them.
Events
The following table shows events and their messages that are broadcasted (or multicasted).
ID | Action | Fields | |
---|---|---|---|
1 | Logon | Ticket 9, UserID, FullName (user), Server (name) | |
2 | Logoff | Ticket 9, UserID | |
3 | CreateObject 3) | Ticket 9, ID (object), Type (object) 1, Name (object), PublicationId, IssueIds, EditionIds, SectionId, StateId, Modified, Modifier, RouteTo (user), LockedBy (user), UserId 7 | |
4 | DeleteObject | Ticket 9, ID (object), Type (object) 1, Name (object), PublicationId, IssueIds, EditionIds, SectionId, StateId, Deleted, Deleter, RouteTo (user), LockedBy (user), UserId, Permanent | |
5 | SaveObject 3) | Ticket 9, ID (object), Type (object) 1, Name (object), PublicationId, IssueIds, EditionIds, SectionId, StateId, Modified, Modifier, RouteTo (user), LockedBy (user), Version (object), UserId, OldRouteTo (user) 7 | |
6 | SetObjectProperties | Ticket 9, ID (object), Type (object) 1, Name (object), PublicationId, IssueIds, EditionIds, SectionId, StateId, RouteTo (user), LockedBy (user), Version (object), UserId, OldRouteTo (user) 7 | |
8 | LockObject | Ticket 9, ID (object), LockedBy (user) | |
9 | UnlockObject | Ticket 9, ID (object), LockedBy (user), LockForOffline, RouteTo (user) | |
10 | CreateObjectRelation | Ticket 9, Child (object id), Type (relation) 2, Parent (object id), PlacedOn (parent name) | |
11 | DeleteObjectRelation | Ticket 9, Child (object id), Type (relation) 2, Parent (object id), PlacedOn (parent name) | |
12 | SendMessage | Ticket 9, UserID, ObjectID, MessageID, MessageType 4, MessageTypeDetail, Message, TimeStamp, MessageLevel, FromUser, ThreadMessageID, ReplyToMessageID, MessageStatus, ObjectVersion, IsRead 12 Extra fields for Sticky Notes only: AnchorX, AnchorY, Left, Top, Width, Height, Page, Version, Color, PageSequence | |
13 | UpdateObjectRelation | Ticket 9, Child (placable object id), Type (relation) 2, Parent (layout object id), PlacedOn (layout name) | |
14 | DeadlineChanged | Ticket 9, ID (object), DeadlineHard, DeadlineSoft | |
15 | DeleteMessage | Ticket 9, MessageID | |
16 | AddToQuery | Ticket 9, UpdateID 5, ID (object), Type (object) 1, Name (object), PublicationId, SectionId, StateId, RouteTo (user), LockedBy (user) | |
17 | RemoveFromQuery | Ticket 9, UpdateID 5, ID (object) | |
18 | ReLogOn | Ticket 9, UserId (the full name of the user that should re-logon, without prompting the user with a logon dialog) 8 | |
19 | RestoreVersion | Ticket 9, ID (object), Type (object) 1, Name (object), PublicationId, IssueIds, EditionIds, SectionId, StateId, Modified, Modifier, RouteTo (user), LockedBy (user), Version (object), UserId, OldRouteTo (user) 7 | |
20 | CreateObjectTarget | Ticket 9, UserId 7, ID (object), PubChannelId, IssueId, EditionIds | |
21 | DeleteObjectTarget | Ticket 9, UserId 7, ID (object), PubChannelId, IssueId, EditionIds | |
22 | UpdateObjectTarget | Ticket 9, UserId 7, ID (object), PubChannelId, IssueId, EditionIds | |
23 | RestoreObject | Ticket, ID (object), Type (object) 1, Name (object), PublicationId, IssueIds, EditionIds, SectionId, StateId, Deleted, Deleter, RouteTo (user), LockedBy (user), Modified, Modifier, UserId | |
24 | IssueDossierReorderAtProduction | PubChannelType, IssueId, DossierIds 10 | |
25 | IssueDossierReorderPublished | PubChannelType, PubChannelId, IssueId, EditionId, DossierIds 10 | |
26 | PublishDossier | DossierId, PubChannelType, PubChannelId, IssueId, EditionId, PublishedDate [, specific fields 11] | |
27 | UpdateDossier | DossierId, PubChannelType, PubChannelId, IssueId, EditionId, PublishedDate [, specific fields 11] | |
28 | UnpublishDossier | DossierId, PubChannelType, PubChannelId, IssueId, EditionId [, specific fields 11] | |
29 | SetPublishInfoForDossier | DossierId, PubChannelType, PubChannelId, IssueId, EditionId, PublishedDate [, specific fields 11] | |
30 | PublishIssue | PubChannelType, PubChannelId, IssueId, EditionId, Version, PublishedDate [, specific fields 11] | |
31 | UpdateIssue | PubChannelType, PubChannelId, IssueId, EditionId, Version, PublishedDate [, specific fields 11] | |
32 | UnpublishIssue | PubChannelType, PubChannelId, IssueId, EditionId, Version [, specific fields 11] | |
33 | SetPublishInfoForIssue | PubChannelType, PubChannelId, IssueId, EditionId, Version, PublishedDate [, specific fields 11] | |
34 | CreateObjectLabels | Since 9.1.0 | ObjectId, Labels 13 |
35 | UpdateObjectLabels | Since 9.1.0 | ObjectId, Labels 13 |
36 | DeleteObjectLabels | Since 9.1.0 | ObjectId, Labels 13 |
37 | AddObjectLabels | Since 9.1.0 | ParentId, ChildIds, Labels 13 |
38 | RemoveObjectLabels | Since 9.1.0 | ParentId, ChildIds, Labels 13 |
1 ObjectType as specified in the workflow WSDL. Options are: Article, Layout, Image, and so on.
2 RelationType as specified in the workflow WSDL. Options are: Placed, Planned, Contained, and so on.
3 No relations information provided through messaging.
4 MessageType as specified in workflow WSDL. Options are:
- system. Message generated by system to be shown in GUI.
- client. Client application specific message to be shown in GUI.
- user. Message from user to be shown in GUI.
- sticky. To create or update Sticky Note.
- reply. Reply to a Sticky Note.
5 Query update id, returned as UpdateID in NamedQueryResponse.
7 UserId is a full name that defines the user that initiated the action.
8 Supported by Content Station to allow Content Sources to trigger a re-logon when queries are added/removed.
9 Instead of sending the actual ticket, the first 12 characters of the MD5 hash of the ticket are sent.
10 The Dossier IDs are sent in a binary package of uint32 numbers (so each ID takes 4 bytes). The whole package is base-64 encoded. For DPS, all Dossiers (IDs) are sent that are assigned to an Issue (so a specific sort per Edition/Device is not supported). When there are too many Dossiers to fit into 1K package, the DossierIds field is not sent at all. This is an indication to clients (such as Content Station) to start polling Issue orders instead (through Web services).
11 Specific fields. There can be additional fields depending on the Publishing integration. For example: for the Adobe DPS integration there is one field named ‘PublishStatus’ for all issue events.
12 Only sent when the message is set to “Read”.
13 Labels are comma-separated and each label consists of an id and a name attribute separated by a tab: id\tname.
Comment
Do you have corrections or additional information about this article? Leave a comment! Do you have a question about what is described in this article? Please contact Support.
0 comments
Please sign in to leave a comment.