WoodWing Help Center

Message format specification of Enterprise Server 9

Message format specification of Enterprise Server 9

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:

The messaging format

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.

Was this article helpful?
0 out of 0 found this helpful / Created: / Updated:
Have more questions? Submit a request

0 Comments

Please sign in to leave a comment.