5 Infrastructure

This section presents the XML structure for Infrastructure common elements, messages and objects in a tabular format for readers less versed in parsing formal XML schema definitions.

The Char(acteristics) column for all of the tables in this section use the following codes:

Code Characteristic
M Mandatory element or attribute
O Optional element or attribute
C Conditional element or attribute
MR Mandatory and repeatable element
OR Optional and repeatable element
CR Conditional and repeatable element

Mandatory elements and attributes MUST be provided in the Infrastructure messages in which they appear. Infrastructure data objects (SIF_ZoneStatus, SIF_AgentACL) can be subject to SIF's request/response and event models; when impacted by these models (in a SIF_Event or in a SIF_Response), these objects follow the same conventions as listed in Data Model.

5.1 Common Elements

5.1.1 SIF_Message

The SIF_Message element is the root element of all SIF messages.

SIF_Message
Figure 5.1.1-1: SIF_Message SIF_Message xmlns Version SIF_Ack SIF_Event SIF_Provide SIF_Provision SIF_Register SIF_Request SIF_Response SIF_Subscribe SIF_SystemControl SIF_Unprovide SIF_Unregister SIF_Unsubscribe SIF_ServiceInput SIF_ServiceOutput SIF_ServiceNotify
 Element/@AttributeCharDescriptionType
 SIF_Message 

Contains one of the SIF message types.

 
choice of:

SIF_Ack
SIF_Event
SIF_Provide
SIF_Provision
SIF_Register
SIF_Request
SIF_Response
SIF_Subscribe
SIF_SystemControl
SIF_Unprovide
SIF_Unregister
SIF_Unsubscribe
SIF_ServiceInput
SIF_ServiceOutput
SIF_ServiceNotify
@xmlnsC

The xmlns attribute specifies the XML namespace for SIF messages. For this version of the specification, the value of this attribute MUST be http://www.sifinfo.org/uk/infrastructure/2.x . This XML namespace value will remain the same until the next major release of SIF (3.0).

Note that one SIF_Message may be contained within another when a ZIS delivers a Pull-Mode Agent's next message in a SIF_Ack response to a SIF_GetMessage from the Pull-Mode Agent. If the default namespace specified for the child SIF_Message is the same as the default namespace of the parent SIF_Message, the xmlns attribute for the child message MAY be omitted.

 
xs:anyURI
@VersionM

The version of the SIF Implementation Specification that defines this message's XML structure. For this version of the specification, the value of this attribute is 2.4. This attribute can be used by ZIS and agent implementations to choose schema files to validate the message's XML.

 
VersionType
Table 5.1.1-1: SIF_Message
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> ... </SIF_Message>
Example 5.1.1-2: SIF_Message

5.1.2 SIF_Header

SIF_Header is a common message header for all SIF messages.

SIF_Header
Figure 5.1.2-1: SIF_Header SIF_HeaderDataModelType SIF_MsgId SIF_Timestamp SIF_Security SIF_SecureChannel SIF_AuthenticationLevel SIF_EncryptionLevel SIF_SourceId SIF_DestinationId SIF_Contexts
 Element/@AttributeCharDescriptionType
 SIF_HeaderM

Header information associated with a message.

 
 
 SIF_MsgIdM

SIF_MsgId is a globally unique message identifier from the Agent or ZIS that sends out the message.

 
MsgIdType
 SIF_TimestampM

Timestamp of when the message was sent.

 
xs:dateTime
 SIF_SecurityO

This element allows an originating agent to specify security requirements that the ZIS must ensure upon delivery of the message to recipient agents. SIF_Security is only examined and processed by a ZIS on SIF_Request, SIF_Response and SIF_Event messages. In this version of the specification, SIF_Security is ignored on all other messages; its use on other messages is reserved for future versions of this specification.

 
 
 SIF_Security/SIF_SecureChannel
     
M

The originating agent uses this element to specify security requirements for the channel between the ZIS and any recipient agents at delivery time. The ZIS must ensure these requirements are met for this message when delivered to other agents.

 
 
 SIF_Security/SIF_SecureChannel/
     SIF_AuthenticationLevel
M

The minimum level of authentication required by the message originator to be considered a secure channel upon message delivery to other agents.

 
SIF_AuthenticationLevel
 SIF_Security/SIF_SecureChannel/
     SIF_EncryptionLevel
M

The minimum level of encryption required by the message originator to be considered a secure channel upon message delivery to other agents.

 
SIF_EncryptionLevel
 SIF_SourceIdM

The SIF_SourceId is the ID of the originator of the message. Each source needs to have a zone unique case-sensitive identifier.

 
xs:token
xs:maxLength64
 SIF_DestinationIdC

This element represents the ID of the recipient of the message and may be present as follows:

SIF_Response messages MUST have this element set to the SIF_SourceId of the originator of the SIF_Request message. The ZIS will use this information to route the SIF_Response to the requesting agent.

SIF_Request messages MAY have this element set to the ID of a specific agent if the requesting agent wishes to direct the SIF_Request to a specific responder. If present, the ZIS will route the SIF_Request to the agent referenced in the element subject to the access control policies in effect for the zone.

This element SHOULD NOT be used in any other SIF Infrastructure messages. If the element is present, it will be ignored by the ZIS.

 
xs:token
xs:maxLength64
 SIF_ContextsO

Contains each SIF Context that applies to the message. If omitted, the applicable context is SIF_Default. SIF_Context is repeatable for SIF_Events, not repeatable for SIF_Request or SIF_Response.

 
SIF_Contexts
Table 5.1.2-1: SIF_Header
<SIF_Header> <SIF_MsgId>A3E90785EFDA330DACB00785EFDA330D</SIF_MsgId> <SIF_Timestamp>2006-02-18T14:30:00-05:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> <SIF_DestinationId>RamseyLIB</SIF_DestinationId> </SIF_Header>
Example 5.1.2-1: SIF_Header
<SIF_Header> <SIF_MsgId>A3E90785EFDA330DACB00785EFDA330D</SIF_MsgId> <SIF_Timestamp>2006-02-18T14:30:00-05:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header>
Example 5.1.2-2: SIF_Header
<SIF_Header> <SIF_MsgId>A3E90785EFDA330DACB00785EFDA330E</SIF_MsgId> <SIF_Timestamp>2006-03-11T08:39:49-08:00</SIF_Timestamp> <SIF_Security> <SIF_SecureChannel> <SIF_AuthenticationLevel>3</SIF_AuthenticationLevel> <SIF_EncryptionLevel>4</SIF_EncryptionLevel> </SIF_SecureChannel> </SIF_Security> <SIF_SourceId>RamseyLIB</SIF_SourceId> <SIF_DestinationId>RamseySIS</SIF_DestinationId> </SIF_Header>
Example 5.1.2-3: SIF_Header

5.1.3 SIF_EncryptionLevel

The minimum level of encryption required by the message originator to be considered a secure channel upon message delivery to other agents.

SIF_EncryptionLevel
Figure 5.1.3-1: SIF_EncryptionLevel SIF_EncryptionLevel
 Element/@AttributeCharDescriptionType
 SIF_EncryptionLevel 

The minimum level of encryption required by the message originator to be considered a secure channel upon message delivery to other agents.

 
values:
0
No encryption required
1
Symmetric key length of at least 40 bits is to be used
2
Symmetric key length of at least 56 bits is to be used
3
Symmetric key length of at least 80 bits is to be used
4
Symmetric key length of at least 128 bits is to be used
Table 5.1.3-1: SIF_EncryptionLevel

5.1.4 SIF_AuthenticationLevel

The minimum level of authentication required by the message originator to be considered a secure channel upon message delivery to other agents.

SIF_AuthenticationLevel
Figure 5.1.4-1: SIF_AuthenticationLevel SIF_AuthenticationLevel
 Element/@AttributeCharDescriptionType
 SIF_AuthenticationLevel 

The minimum level of authentication required by the message originator to be considered a secure channel upon message delivery to other agents.

 
values:
0
No authentication required and a valid certificate does not need to be presented.
1
A valid certificate must be presented.
2
A valid certificate from a trusted certificate authority must be presented.
3
A valid certificate from a trusted certificate authority must be presented and the CN field of the certificate's Subject entry must match the host sending the certificate.
Table 5.1.4-1: SIF_AuthenticationLevel

5.1.5 SIF_Contexts

A list of SIF contexts that applies to a message or operation. Typically where used as an optional element, the omission of this element implies the SIF_Default context applies.

SIF_Contexts
Figure 5.1.5-1: SIF_Contexts SIF_Contexts SIF_Context
 Element/@AttributeCharDescriptionType
 SIF_Contexts 

A list of SIF contexts that applies to a message or operation. Typically where used as an optional element, the omission of this element implies the SIF_Default context applies.

 
List
 SIF_ContextMR SIF_Context
Table 5.1.5-1: SIF_Contexts

5.1.6 SIF_Context

The name of a SIF Context that applies to a message or operation.

SIF_Context
Figure 5.1.6-1: SIF_Context SIF_Context
 Element/@AttributeCharDescriptionType
 SIF_Context 

The name of a SIF Context that applies to a message or operation.

 
xs:token
xs:maxLength64
Table 5.1.6-1: SIF_Context

5.1.7 SIF_Protocol

Contains protocol information regarding a ZIS or Agent.

SIF_Protocol
Figure 5.1.7-1: SIF_Protocol SIF_Protocol Type Secure SIF_URL SIF_Property SIF_Name SIF_Value
 Element/@AttributeCharDescriptionType
 SIF_ProtocolC

Contains protocol information regarding a ZIS or Agent.

 
 
@TypeM

The type of protocol to use (HTTPS, HTTP or an implementation-defined protocol).

 
union of:

DefinedProtocolsType
xs:token
@SecureM

Whether the protocol provides a secure channel.

 
values:
Yes
No
 SIF_URLC

This element is required if the protocol is HTTPS or HTTP. It contains the https or http URL for contacting the agent.

 
xs:anyURI
xs:maxLength256
 SIF_PropertyOR

May contain zero or more SIF_Property elements containing SIF_Name/SIF_Value pairs describing any protocol settings required to ensure proper communication.

 
 
 SIF_Property/SIF_NameM

Property name.

 
xs:token
xs:maxLength64
 SIF_Property/SIF_ValueM

Property value.

 
xs:string
xs:maxLength256
Table 5.1.7-1: SIF_Protocol

5.1.8 SIF_Status

This element is used to signal a successful response.

SIF_Status
Figure 5.1.8-1: SIF_Status SIF_Status SIF_Code SIF_Desc SIF_Data SIF_Message SIF_AgentACL SIF_ZoneStatus
 Element/@AttributeCharDescriptionType
 SIF_Status 

This element is used to signal a successful response.

 
 
 SIF_CodeM InfrastructureStatusCodeType
 SIF_DescO

An optional textual description/equivalent of SIF_Code.

 
xs:string
xs:maxLength1024
 SIF_DataO

Optional element to hold data related to a successful operation. This data is currently limited to a SIF_Message returned by the ZIS in response to a Pull-Mode Agent's SIF_GetMessage, SIF_AgentACL returned by the ZIS in response to SIF_Register and SIF_GetAgentACL, and SIF_ZoneStatus returned by the ZIS in response to SIF_GetZoneStatus.

 
choice of:

SIF_Message
SIF_AgentACL
SIF_ZoneStatus
Table 5.1.8-1: SIF_Status

5.1.9 SIF_Error

This element is used to signal an unsuccessful response.

SIF_Error
Figure 5.1.9-1: SIF_Error SIF_ErrorDataModelType SIF_Category SIF_Code SIF_Desc SIF_ExtendedDesc
 Element/@AttributeCharDescriptionType
 SIF_Error 

This element is used to signal an unsuccessful response.

 
 
 SIF_CategoryM InfrastructureErrorCategoryType
 SIF_CodeM

See Error Codes.

 
union of:

InfrastructureXMLValidationErrorType
InfrastructureEncryptionErrorType
InfrastructureAuthenticationErrorType
InfrastructureAccessAndPermissionErrorType
InfrastructureRegistrationErrorType
InfrastructureProvisionErrorType
InfrastructureSubscriptionErrorType
InfrastructureRequestAndResponseErrorType
InfrastructureEventReportingAndProcessingErrorType
InfrastructureTransportErrorType
InfrastructureSystemErrorType
InfrastructureGenericMessageHandlingErrorType
xs:token
 SIF_DescM

A simple, easy to understand, description of the error. The primary consumer of this message is the application user. Example: "Unable to open database."

 
xs:string
xs:maxLength1024
 SIF_ExtendedDescO

An optional error description that is more complete and technical in nature. It is to be used as a diagnostic message in trouble-shooting procedures. Example: "The 'Students' table is opened in exclusive mode by user 'ADM1' (dbm.cpp, line 300)."

 
xs:string
Table 5.1.9-1: SIF_Error

5.1.10 SIF_Query

SIF's default query mechanism.
SIF_Query
Figure 5.1.10-1: SIF_Query SIF_QueryDataModelType SIF_QueryObject ObjectName SIF_Element SIF_ConditionGroup Type SIF_Conditions Type SIF_Condition SIF_Element SIF_Operator SIF_Value SIF_Example
 Element/@AttributeCharDescriptionType
 SIF_Query SIF's default query mechanism.  
 SIF_QueryObjectM

This is the object that is being queried for.

 
 
@ObjectNameM

The actual name of the object that is being queried for.

 
SIF_RequestObjectNamesType
 SIF_QueryObject/SIF_Element
     
OR

Individual elements/attributes being requested of matching object. See SIF_Element Syntax below. If specified, only the elements/attributes requested are returned in the SIF_Response (with any parent elements/attributes); otherwise, all elements supported by the provider's object are returned.

Note that this is a means to filter or select a subset of elements/attributes from a matching object; specifying elements/attributes here that do not occur in or are not supported in a matching object does not exclude that matching object from being returned. Include any existing parent elements/attributes of the elements/attributes that are requested but not present.

 
xs:normalizedString
 SIF_ConditionGroupC

Either SIF_ConditionGroup or SIF_Example may optionally be specified to present conditions matching objects should satisfy.

SIF_ConditionGroup represents the conditions that the queried object(s) must meet. If conditions are specified, only those objects that meet the conditions are returned; otherwise, all objects of the specified name are returned.

 
 
@TypeM

The Boolean operator for joining conditions (SIF_Conditions elements) within this element. Note that None should be used if there is only one SIF_Conditions element.

 
values:
And
Or
None
 SIF_ConditionGroup/SIF_Conditions
     
MR

This construct allows for nested conditions.

 
 
@TypeM

The boolean operator for joining conditions (SIF_Condition elements) within this element. Note that None should be used if there is only one SIF_Condition element.

 
values:
And
Or
None
 SIF_ConditionGroup/SIF_Conditions/
     SIF_Condition
MR

This element represents an individual condition.

 
 
 SIF_ConditionGroup/SIF_Conditions/
     SIF_Condition/SIF_Element
     
M

This is the element/attribute being queried. See below for syntax.

 
xs:normalizedString
 SIF_ConditionGroup/SIF_Conditions/
     SIF_Condition/SIF_Operator
     
M

The comparison operator for the condition.

 
values:
EQ
Equals
LT
Less Than
GT
Greater Than
LE
Less Than Or Equals
GE
Greater Than Or Equals
NE
Not Equals
 SIF_ConditionGroup/SIF_Conditions/
     SIF_Condition/SIF_Value
M

SIF_Value is the data that is used to compare with the value of the element or attribute.

 
xs:string
 SIF_ExampleC

An example SIF object that serves as a template for matching objects. There is an implied EQ operator for every element/attribute value present and an implied And group of all resulting conditions. Currently this is an experimental feature and limited to use with select objects; wider use may be considered in future versions of this specification.

 
SIF_ExampleObjectType
Table 5.1.10-1: SIF_Query

5.1.10.1 SIF_ConditionGroup

The SIF_Query element may have a SIF_ConditionGroup element that may have one or more SIF_Conditions elements. A SIF_Conditions element may contain one or more SIF_Condition elements. Each SIF_Condition element defines a search criterion, which contains the following sub-elements.

<SIF_ConditionGroup Type="None"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element>@LearnerPersonalRefId</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>9B004AC4F51E4867A2B3B4ED92F46DAE</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup>
Example 5.1.10.1-1
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Request> <SIF_Header> <SIF_MsgId>A3E90785EFDA330DACB00785EFDA330D</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseyLIB</SIF_SourceId> </SIF_Header> <SIF_Version>2.*</SIF_Version> <SIF_MaxBufferSize>1048576</SIF_MaxBufferSize> <SIF_Query> <SIF_QueryObject ObjectName="LearnerPersonal" /> <SIF_ConditionGroup Type="None"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element>PersonalInformation/Name/FamilyName</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>Smith</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Query> </SIF_Request> </SIF_Message>
Example 5.1.10.1-2: SIF_ConditionGroup querying into an object

5.1.10.2 SIF_Element Syntax

To reference individual elements/attributes in query criteria for objects, and in lists of individual elements/attributes to be returned from matching objects, SIF defines a path syntax which is based on a small subset of [XPath], for use in SIF_Element. Elements are specified by name (e.g. Name) and attributes are specified by name, prefixed with @ (e.g. @Type). Namespace prefixes may precede element/attribute names as necessary (e.g. @xml:lang) and reference the current prefix-to-namespace mappings within the XML of the request. To reference child elements or attributes of child elements, a path notation is used where each element/attribute in the path is separated by / (e.g. PersonalInformation/Name/GivenName , PersonalInformation/Name/@Type ). The object's element is the root element and is not included when referencing child elements (e.g. PersonalInformation/Name/FirstName , not LearnerPersonal/PersonalInformation/Name/GivenName ); no / is required when referencing attributes of the object itself (e.g. @RefId, not LearnerPersonal/@RefId) .

SIF_Condition/SIF_Element may also contain XPath predicates (e.g. [@Type='R] ) to allow for more precise matching, especially with regard to repeatable elements with "key" attributes. The following SIF_Condition would match object withs any GivenName of Cameron:

<SIF_Condition> <SIF_Element>PersonalInformation/Name/GivenName</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>Cameron</SIF_Value> </SIF_Condition>
Example 5.1.10.2-1

Using a predicate allows the requester to specifically query the person's name of record ( R ) vs. his/her previous, professional, current legal name, etc.

<SIF_Condition> <SIF_Element>PersonalInformation/Name[@Type='R']/GivenName</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>Cameron</SIF_Value> </SIF_Condition>
Example 5.1.10.2-2

Predicate expressions supported in SIF are limited to or, and, =, element/attribute names with optional prefixes and accessing nested elements/attributes using /.

5.1.11 SIF_ExtendedQuery

SIF's default query mechanism for SIF_Request, SIF_Query, has several limitations that limit its usefulness when creating reporting applications that process data from a SIF zone. SIF_Query is limited to matching only one object type per query, requiring applications to manually join together results as needed for reporting and general data processing. SIF_ExtendedQuery is designed to allow for joins on object identifiers/RefIds and to allow retrieval of data in a row/column fashion similar to SQL. Each returned column may contain hierarchical XML elements/objects. Providers and Responders in a Zone may support SIF_ExtendedQuery in addition to SIF_Query. Support for SIF_ExtendedQuery can be declared in and retrieved from the Zone is various Infrastructure messages and objects.

Note that matching rows are generated solely based on the SIF_From clause, with optional join criteria, optionally limited/filtered by the SIF_Where clause. If a repeatable element is requested as a column in SIF_Select, this does not generate multiple rows for each occurrence of matching elements; all elements are returned in the corresponding column within a single row.

SIF_ExtendedQuery
Figure 5.1.11-1: SIF_ExtendedQuery SIF_ExtendedQueryDataModelType SIF_DestinationProvider SIF_Select Distinct RowCount SIF_Element Alias ObjectName SIF_From ObjectName SIF_Join Type SIF_JoinOn SIF_LeftElement ObjectName SIF_RightElement ObjectName SIF_Where SIF_ConditionGroup Type SIF_Conditions Type SIF_Condition SIF_Element ObjectName SIF_Operator SIF_Value SIF_OrderBy SIF_Element ObjectName Ordering
 Element/@AttributeCharDescriptionType
 SIF_ExtendedQuery 

SIF's default query mechanism for SIF_Request, SIF_Query, has several limitations that limit its usefulness when creating reporting applications that process data from a SIF zone. SIF_Query is limited to matching only one object type per query, requiring applications to manually join together results as needed for reporting and general data processing. SIF_ExtendedQuery is designed to allow for joins on object identifiers/RefIds and to allow retrieval of data in a row/column fashion similar to SQL. Each returned column may contain hierarchical XML elements/objects. Providers and Responders in a Zone may support SIF_ExtendedQuery in addition to SIF_Query. Support for SIF_ExtendedQuery can be declared in and retrieved from the Zone is various Infrastructure messages and objects.

Note that matching rows are generated solely based on the SIF_From clause, with optional join criteria, optionally limited/filtered by the SIF_Where clause. If a repeatable element is requested as a column in SIF_Select, this does not generate multiple rows for each occurrence of matching elements; all elements are returned in the corresponding column within a single row.

 
 
 SIF_DestinationProviderO

If no SIF_DestinationId applies to the request and this element is supplied, the Requester specifies that the extended query be routed to the Provider on record for the given object name. If this element is omitted and no SIF_DestinationId applies to the request, the ZIS routes the request to the Provider on record for the object name in SIF_From.

 
SIF_RequestObjectNamesType
 SIF_SelectM

Identifies which data elements/attribute are to be returned as columns in each matching row.

 
 
@DistinctM

Specifies whether query results should return all rows (false) or just distinct ones (true). Rows are distinct if at least one column differs between them.

 
xs:boolean
@RowCountM

The maximum number of rows to return. If All, return all rows, otherwise return the top rows up to the maximum row count indicated.

 
union of:

xs:positiveInteger

additional values:

All
 SIF_Select/SIF_ElementMR

Indicates the element/attribute to return as a column. Contents can be left empty to return the whole object specified in ObjectName, or * can be designated to return all attributes and immediate child elements of the object specified in ObjectName, or SIF_Element Syntax can be specified, relative to the object specified in ObjectName. Requested attributes are to be returned as the text value of the corresponding attribute, elements as a copy of the XML element itself including attributes if they exist.

 
xs:normalizedString
@AliasO

Optional caption for the column.

 
xs:normalizedString
xs:maxLength64
@ObjectNameM

The name of the object from which to retrieve element/attributes.

 
SIF_RequestObjectNamesType
 SIF_FromM

Join specification for the query if more than one object is being queried. If only one object is being queried, specify it without the SIF_Join clause. This clause generates the matching rows returned, optionally limited/filtered by the SIF_Where clause. Each object referenced in the SIF_Select, SIF_Where and SIF_OrderBy clauses must be included here.

 
 
@ObjectNameM

The name of the object to query.

 
SIF_RequestObjectNamesType
 SIF_From/SIF_JoinOR

Additional objects to query, with join conditions specifying the relationships between objects.

 
 
@TypeM

Type of relational join.

 
values:
Inner
LeftOuter
RightOuter
FullOuter
 SIF_From/SIF_Join/SIF_JoinOn
     
MR

Specifies the conditions for the join.

 
 
 SIF_From/SIF_Join/SIF_JoinOn/
     SIF_LeftElement
M

Specifies the left-side element/attribute on which to constrain the join. Currently only support for keys/RefIds/RefId references is required.

 
xs:normalizedString
@ObjectNameM

Name of the object that contains the element/attribute.

 
SIF_RequestObjectNamesType
 SIF_From/SIF_Join/SIF_JoinOn/
     SIF_RightElement
M

Specifies right left-side element/attribute on which to constrain the join. Currently only support for keys/RefIds/RefId references is required.

 
xs:normalizedString
@ObjectNameM

Name of the object that contains the element/attribute.

 
SIF_RequestObjectNamesType
 SIF_WhereO

Optionally specifies conditions to limit/filter rows resulting from the SIF_From clause.

 
 
 SIF_Where/SIF_ConditionGroup
     
M

Conditions that matching rows must meet.

 
 
@TypeM

The Boolean operator for joining conditions (SIF_Conditions elements) within this element. Note that None should be used if there is only one SIF_Conditions element.

 
values:
And
Or
None
 SIF_Where/SIF_ConditionGroup/
     SIF_Conditions
MR

This construct allows for nested conditions.

 
 
@TypeM

The boolean operator for joining conditions (SIF_Condition elements) within this element. Note that None should be used if there is only one SIF_Condition element.

 
values:
And
Or
None
 SIF_Where/SIF_ConditionGroup/
     SIF_Conditions/SIF_Condition
     
MR

This element represents an individual condition.

 
 
 SIF_Where/SIF_ConditionGroup/
     SIF_Conditions/SIF_Condition/
     SIF_Element
M

This is the element/attribute being queried.

 
xs:normalizedString
@ObjectNameM

The name of the object containing the element/attribute.

 
SIF_RequestObjectNamesType
 SIF_Where/SIF_ConditionGroup/
     SIF_Conditions/SIF_Condition/
     SIF_Operator
M

The comparison operator for the condition.

 
values:
EQ
Equals
LT
Less Than
GT
Greater Than
LE
Less Than Or Equals
GE
Greater Than Or Equals
NE
Not Equals
 SIF_Where/SIF_ConditionGroup/
     SIF_Conditions/SIF_Condition/
     SIF_Value
M

SIF_Value is the data that is used to compare with the value of the element or attribute.

 
xs:string
 SIF_OrderByO

An optional list of elements/attributes by which to sort the resulting rows.

 
 
 SIF_OrderBy/SIF_ElementMR

Indicates the element/attribute by which to sort.

 
xs:normalizedString
@ObjectNameM

The name of the object containing the element/attribute.

 
SIF_RequestObjectNamesType
@OrderingM

Whether to order the element/attribute in ascending or descending order.

 
values:
Ascending
Descending
Table 5.1.11-1: SIF_ExtendedQuery
<SIF_ExtendedQuery> <SIF_Select Distinct="false" RowCount="All"> <SIF_Element ObjectName="LearnerPersonal" /> </SIF_Select> <SIF_From ObjectName="LearnerPersonal" /> </SIF_ExtendedQuery>
Example 5.1.11-2: Selecting all LearnerPersonal objects
<SIF_ExtendedQuery> <SIF_Select Distinct="false" RowCount="All"> <SIF_Element ObjectName="LearnerPersonal">*</SIF_Element> </SIF_Select> <SIF_From ObjectName="LearnerPersonal" /> </SIF_ExtendedQuery>
Example 5.1.11-4: Selecting all attributes and immediate child elements of LearnerPersonal as columns from all LearnerPersonal objects
<SIF_ExtendedQuery> <SIF_Select Distinct="false" RowCount="All"> <SIF_Element ObjectName="LearnerPersonal">@RefId</SIF_Element> <SIF_Element ObjectName="LearnerPersonal">PersonalInformation/Name/GivenName</SIF_Element> <SIF_Element ObjectName="LearnerPersonal">PersonalInformation/Name/FamilyName</SIF_Element> <SIF_Element ObjectName="LearnerPersonal">PersonalInformation/Email</SIF_Element> </SIF_Select> <SIF_From ObjectName="LearnerPersonal" /> </SIF_ExtendedQuery>
Example 5.1.11-6: Selecting specific attributes and elements from all LearnerPersonal objects
<SIF_ExtendedQuery> <SIF_Select Distinct="true" RowCount="All"> <SIF_Element ObjectName="LearnerPersonal" /> <SIF_Element ObjectName="LearnerSchoolEnrolment" Alias="Learner Entry Date">EntryDate</SIF_Element> </SIF_Select> <SIF_From ObjectName="LearnerPersonal"> <SIF_Join Type="Inner"> <SIF_JoinOn> <SIF_LeftElement ObjectName="LearnerPersonal">@RefId</SIF_LeftElement> <SIF_RightElement ObjectName="LearnerSchoolEnrolment">@LearnerPersonalRefId</SIF_RightElement> </SIF_JoinOn> </SIF_Join> </SIF_From> <SIF_Where> <SIF_ConditionGroup Type="None"> <SIF_Conditions Type="And"> <SIF_Condition> <SIF_Element ObjectName="LearnerSchoolEnrolment">@SchoolInfoRefId</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>A3E90785EFDA330DACB00785EFDA330D</SIF_Value> </SIF_Condition> <SIF_Condition> <SIF_Element ObjectName="LearnerSchoolEnrolment">@MembershipType</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>C</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Where> <SIF_OrderBy> <SIF_Element ObjectName="LearnerPersonal" Ordering="Ascending">PersonalInformation/Name/FamilyName</SIF_Element> </SIF_OrderBy> </SIF_ExtendedQuery>
Example 5.1.11-8: Selecting LearnerPersonal objects along with each learner's EntryDate from LearnerSchoolEnrolment for a specific school and other LearnerSchoolEnrolmnet values, sorted by learner's last name
<SIF_ExtendedQuery> <SIF_Select Distinct="false" RowCount="All"> <SIF_Element ObjectName="LearnerPersonal" /> <SIF_Element ObjectName="LearnerSchoolEnrolment" /> <SIF_Element ObjectName="SchoolInfo">SchoolName</SIF_Element> </SIF_Select> <SIF_From ObjectName="LearnerPersonal"> <SIF_Join Type="Inner"> <SIF_JoinOn> <SIF_LeftElement ObjectName="LearnerPersonal">@RefId</SIF_LeftElement> <SIF_RightElement ObjectName="LearnerSchoolEnrolment">@LearnerPersonalRefId</SIF_RightElement> </SIF_JoinOn> </SIF_Join> <SIF_Join Type="Inner"> <SIF_JoinOn> <SIF_LeftElement ObjectName="LearnerSchoolEnrolment">@SchoolInfoRefId</SIF_LeftElement> <SIF_RightElement ObjectName="SchoolInfo">@RefId</SIF_RightElement> </SIF_JoinOn> </SIF_Join> </SIF_From> <SIF_Where> <SIF_ConditionGroup Type="None"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element ObjectName="LearnerPersonal">@RefId</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>12345678901234567890123456789012</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Where> </SIF_ExtendedQuery>
Example 5.1.11-10: Selecting a specific LearnerPersonal's LearnerSchoolEnrolment objects, along with the corresponding school name for each enrolment

5.1.11.1 Mapping SIF_Query to SIF_ExtendedQuery

While there are differences in how matching objects are returned, note that all non-SIF_Example SIF_Query-based requests can be mapped to a corresponding SIF_ExtendedQuery-based request:

1 Place SIF_Query/SIF_QueryObject/@ObjectName in SIF_ExtendedQuery/SIF_From/@ObjectName.
2 If elements/attributes are specified in SIF_Query/SIF_QueryObject/SIF_Element, place them in SIF_ExtendedQuery/SIF_Select/SIF_Element with @ObjectName set to SIF_Query/SIF_QueryObject/@ObjectName. Otherwise in SIF_Select, specify an empty SIF_Element element with @ObjectName set to SIF_Query/SIF_QueryObject/@ObjectName.
3 If SIF_Query/SIF_ConditionGroup exists, place it in SIF_ExtendedQuery/SIF_Where setting @ObjectName to SIF_Query/SIF_QueryObject/@ObjectName in every occurrence of SIF_Element.
4 Set SIF_Select/@Distinct to false and SIF_Select/@RowCount to All.
Table 5.1.11.1-1: Mapping SIF_Query to SIF_ExtendedQuery
<SIF_Query> <SIF_QueryObject ObjectName="LearnerPersonal"> <SIF_Element>PersonalInformation/Name/GivenName</SIF_Element> <SIF_Element>PersonalInformation/Name/FamilyName</SIF_Element> </SIF_QueryObject> <SIF_ConditionGroup Type="None"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element>@RefId</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>F0F29E6AE742498D9CB91CBB3BE6890E</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Query>
Example 5.1.11.1-1: Input SIF_Query
<SIF_ExtendedQuery> <SIF_Select Distinct="false" RowCount="All"> <SIF_Element ObjectName="LearnerPersonal">PersonalInformation/Name/GivenName</SIF_Element> <SIF_Element ObjectName="LearnerPersonal">PersonalInformation/Name/FamilyName</SIF_Element> </SIF_Select> <SIF_From ObjectName="LearnerPersonal" /> <SIF_Where> <SIF_ConditionGroup Type="None"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element ObjectName="LearnerPersonal">@RefId</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>F0F29E6AE742498D9CB91CBB3BE6890E</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Where> </SIF_ExtendedQuery>
Example 5.1.11.1-2: Corresponding SIF_ExtendedQuery

5.1.12 SIF_ExtendedQueryResults

This element provides a wrapper for data returned in response to a SIF_ExtendedQuery. Used in SIF_Response and SIF_ReportObject.

SIF_ExtendedQueryResults
Figure 5.1.12-1: SIF_ExtendedQueryResults SIF_ExtendedQueryResultsDataModelType SIF_ColumnHeaders SIF_Element ObjectName Alias xsi:type SIF_Rows R C
 Element/@AttributeCharDescriptionType
 SIF_ExtendedQueryResults 

This element provides a wrapper for data returned in response to a SIF_ExtendedQuery. Used in SIF_Response and SIF_ReportObject.

 
 
 SIF_ColumnHeadersM

Provides the element/attribute and caption information for each column supplied in SIF_ExtendedQuery. The order must correspond to the order of the elements as requested in SIF_ExtendedQuery.

 
 
 SIF_ColumnHeaders/SIF_Element
     
MR

The element/attribute specified for the column in SIF_ExtendedQuery.

 
xs:normalizedString
@ObjectNameM

The object in which the element/attribute occurs.

 
SIF_RequestObjectNamesType
@AliasO

The caption for the column, if specified in SIF_ExtendedQuery.

 
xs:normalizedString
xs:maxLength64
@xsi:typeO

Optionally allows type of column value to be explicitly communicated.

 
 
 SIF_RowsM

A list of matching rows resulting from the supplied SIF_ExtendedQuery. Note that the complete list of rows may span multiple SIF_Response messages, per the SIF_MaxBufferSize supplied in SIF_Request. If there are no matching rows, this is an empty list.

 
 
 SIF_Rows/ROR

An individual matching row resulting from the supplied SIF_ExtendedQuery.

 
 
 SIF_Rows/R/CMR

Contains the value of each column specified in SIF_ExtendedQuery/SIF_Select. The order of the columns must correspond to the order of the elements as requested in SIF_ExtendedQuery. Note the number of columns may be expanded from the requested columns if * is indicated one or more times in the SIF_Select clause.

 
SelectedContentType
Table 5.1.12-1: SIF_ExtendedQueryResults
<SIF_ExtendedQueryResults> <SIF_ColumnHeaders> <SIF_Element ObjectName="LearnerPersonal" /> <SIF_Element ObjectName="LearnerSchoolEnrolment" /> <SIF_Element ObjectName="SchoolInfo">SchoolName</SIF_Element> </SIF_ColumnHeaders> <SIF_Rows> <R> <C> <LearnerPersonal RefId="12345678901234567890123456789012"> <!--...--> </LearnerPersonal> </C> <C> <LearnerSchoolEnrolment RefId="AED4AEF825284D7E9F082EBBEB1999FA" LearnerPersonalRefId="12345678901234567890123456789012" SchoolInfoRefId="AED4AEF825284D7E9F082EBBEBB12345" MembershipType="M"> <!--...--> </LearnerSchoolEnrolment> </C> <C> <SchoolName>SIFA High</SchoolName> </C> </R> <R> <C> <LearnerPersonal RefId="12345678901234567890123456789012"> <!--...--> </LearnerPersonal> </C> <C> <LearnerSchoolEnrolment RefId="AED4AEF825284D7E9F082EBBEB1999FA" LearnerPersonalRefId="12345678901234567890123456789012" SchoolInfoRefId="ED4AEF825284D7E9F082EBBEBB678902" MembershipType="G"> <!--...--> </LearnerSchoolEnrolment> </C> <C> <SchoolName>SIFA University</SchoolName> </C> </R> </SIF_Rows> </SIF_ExtendedQueryResults>
Example 5.1.12-2: SIF_ExtendedQueryResults

5.2 Messages

5.2.1 SIF_Ack

This message is used as an acknowledgement for infrastructure messages. All infrastructure messages will return a SIF_Ack as a result to indicate if the request was successful or not. A SIF_Ack must contain either a SIF_Status element acknowledging a successful result or a SIF_Error element describing the failure. The SIF_Error element contains a standardized error number as well as a description of the error.

A successful SIF_Ack is typically returned to the caller containing a SIF_Header, SIF_OriginalSourceId, SIF_OriginalMsgId and the SIF_Status element. In situations where additional information needs to be returned to the caller, a SIF_Data element can be added to the SIF_Status element.

In addition, successful SIF_Ack messages may also be sent to the ZIS under two conditions. The first is when a pull-mode agent requests that a message is to be removed from its queue. The second is when an agent which has invoked SMB wishes to end SMB handling. In that case, the agent sends a "Final" SIF_Ack to the ZIS. In each instance the ZIS returns a SIF_Ack in response to the agent's SIF_Ack message.

SIF_Ack
Figure 5.2.1-1: SIF_Ack SIF_Ack SIF_Header SIF_OriginalSourceId SIF_OriginalMsgId SIF_Status SIF_Error
 Element/@AttributeCharDescriptionType
 SIF_AckM

This message is used as an acknowledgement to an infrastructure message.

 
 
 SIF_HeaderM

Header information associated with this message.

 
SIF_Header
 SIF_OriginalSourceIdM

The SIF_SourceId of the infrastructure message for which the SIF_Ack serves as a response.

 
xs:token
 SIF_OriginalMsgIdM

The SIF_MsgId of the infrastructure message for which the SIF_Ack message serves as a response.

 
MsgIdType
 SIF_StatusC

This element is used to signal a successful response.

 
SIF_Status
 SIF_ErrorC

This element is used to signal an unsuccessful response.

 
SIF_Error
Table 5.2.1-1: SIF_Ack
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>AB1058CD3261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>SifInfo_TestZIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseyLib</SIF_OriginalSourceId> <SIF_OriginalMsgId>1298ACEF3261545A31905937B265CE01</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>0</SIF_Code> <SIF_Data> <SIF_Message Version="2.4"> <SIF_Request> <SIF_Header> <SIF_MsgId>A3E90785EFDA330DACB00785EFDA330D</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:02-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_Version>2.*</SIF_Version> <SIF_MaxBufferSize>1048576</SIF_MaxBufferSize> <SIF_Query> <SIF_QueryObject ObjectName="LearnerPersonal" /> <SIF_ConditionGroup Type="None"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element>@RefId</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>9B004AC4F51E4867A2B3B4ED92F46DAE</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Query> </SIF_Request> </SIF_Message> </SIF_Data> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 5.2.1-2: SIF_Ack Status Message
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>CD5087FE3261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>RamseyLIB</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseySIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>1945CD783261545A31905937B265CE01</SIF_OriginalMsgId> <SIF_Error> <SIF_Category>3</SIF_Category> <SIF_Code>5</SIF_Code> <SIF_Desc>Sender's certificate is not trusted</SIF_Desc> <SIF_ExtendedDesc>Agent requires certificate issued by ISD11 CA</SIF_ExtendedDesc> </SIF_Error> </SIF_Ack> </SIF_Message>
Example 5.2.1-4: SIF_Ack Error Message

5.2.2 SIF_Event

SIF_Event is used to deliver event objects as defined in SIF. Events represent the availability of a new data object, changes to, or deletions of data object.

SIF_Event
Figure 5.2.2-1: SIF_Event SIF_Event SIF_Header SIF_ObjectData SIF_EventObject ObjectName Action
 Element/@AttributeCharDescriptionType
 SIF_EventM

SIF_Event is used to deliver event objects as defined in SIF.

 
 
 SIF_HeaderM

Header information associated with this message.

 
SIF_Header
 SIF_ObjectDataM  
 SIF_ObjectData/SIF_EventObject
     
M

Contains the actual object (partial or whole) that is being added, changed or deleted.

 
SIF_EventObjectType
@ObjectNameM

This is the name of the object being added, changed or deleted.

 
SIF_SubscribeObjectNamesType
@ActionM

This is the action associated with the object that is being conveyed by this SIF_Event.

 
values:
Add
Delete
Change
Table 5.2.2-1: SIF_Event
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Event> <SIF_Header> <SIF_MsgId>AB34DC093261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_ObjectData> <SIF_EventObject ObjectName="LearnerPersonal" Action="Change"> <LearnerPersonal RefId="D3E34B359D75101A8C3D00AA001A1652"> <PersonalInformation> <PhoneNumber Type="H"> <Number>05598765432</Number> </PhoneNumber> </PersonalInformation> </LearnerPersonal> </SIF_EventObject> </SIF_ObjectData> </SIF_Event> </SIF_Message>
Example 5.2.2-2: SIF_Event Message with LearnerPersonal changes

5.2.3 SIF_Provide

The SIF_Provide message is used to attempt registering as the provider of one or more data objects.

SIF_Provide
Figure 5.2.3-1: SIF_Provide SIF_Provide SIF_Header SIF_Object ObjectName SIF_ExtendedQuerySupport SIF_Contexts
 Element/@AttributeCharDescriptionType
 SIF_ProvideM

The SIF_Provide message is used for advertising the provision of data objects.

 
 
 SIF_HeaderM

Header information associated with this message.

 
SIF_Header
 SIF_ObjectMR

This is the object that is being provided.

 
 
@ObjectNameM

The actual name of the object that is being provided.

 
SIF_ProvideObjectNamesType
 SIF_Object/SIF_ExtendedQuerySupport
     
O

Whether or not the Agent supports SIF_ExtendedQuery for this object.

 
xs:boolean
 SIF_Object/SIF_ContextsO

The contexts in which the object is being provided; if omitted, the context is SIF_Default.

 
SIF_Contexts
Table 5.2.3-1: SIF_Provide
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Provide> <SIF_Header> <SIF_MsgId>34DC87FE3261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_Object ObjectName="LearnerPersonal" /> <SIF_Object ObjectName="LearnerSchoolEnrolment" /> </SIF_Provide> </SIF_Message>
Example 5.2.3-2: SIF_Provide

5.2.4 SIF_Provision

Once registered, this message allows an agent to announce to the ZIS the functionality the agent will provide. The ZIS compares the functionality to its access control list and either returns a failure or a success. Upon success, the ZIS performs an atomic update of its provide/subscribe database entries for the agent to match the objects listed in this message and atomically updates other stored settings for the agent. A ZIS must not allow an agent to perform operations that it did not successfully announce. Agents should be aware that if the access control list changes after a successful SIF_Provision, some operations may still be rejected with access control errors.

SIF_Provision
Figure 5.2.4-1: SIF_Provision SIF_Provision SIF_Header SIF_ProvideObjects SIF_Object ObjectName SIF_ExtendedQuerySupport SIF_Contexts SIF_SubscribeObjects SIF_Object ObjectName SIF_Contexts SIF_PublishAddObjects SIF_Object ObjectName SIF_Contexts SIF_PublishChangeObjects SIF_Object ObjectName SIF_Contexts SIF_PublishDeleteObjects SIF_Object ObjectName SIF_Contexts SIF_RequestObjects SIF_Object ObjectName SIF_ExtendedQuerySupport SIF_Contexts SIF_RespondObjects SIF_Object ObjectName SIF_ExtendedQuerySupport SIF_Contexts SIF_ProvideService SIF_Service ServiceName SIF_Contexts SIF_RespondService SIF_Service ServiceName SIF_Contexts SIF_RequestService SIF_Service ServiceName SIF_Contexts SIF_Operations SIF_Operation SIF_SubscribeService SIF_Service ServiceName SIF_Contexts SIF_Operations SIF_Operation
 Element/@AttributeCharDescriptionType
 SIF_Provision 

Once registered, this message allows an agent to announce to the ZIS the functionality the agent will provide. The ZIS compares the functionality to its access control list and either returns a failure or a success. Upon success, the ZIS performs an atomic update of its provide/subscribe database entries for the agent to match the objects listed in this message and atomically updates other stored settings for the agent. A ZIS must not allow an agent to perform operations that it did not successfully announce. Agents should be aware that if the access control list changes after a successful SIF_Provision, some operations may still be rejected with access control errors.

 
 
 SIF_HeaderM

Header information associated with this message.

 
SIF_Header
 SIF_ProvideObjectsM

A list of objects an Agent wishes to provide.

 
 
 SIF_ProvideObjects/SIF_Object
     
OR  
@ObjectNameM

The name of each object.

 
SIF_ProvideObjectNamesType
 SIF_ProvideObjects/SIF_Object/
     SIF_ExtendedQuerySupport
O

Whether or not SIF_ExtendedQuery is supported with regard to this object.

 
xs:boolean
 SIF_ProvideObjects/SIF_Object/
     SIF_Contexts
O

Applicable contexts for stated object support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_SubscribeObjectsM

A list of objects to which an Agent wishes to subscribe.

 
 
 SIF_SubscribeObjects/SIF_Object
     
OR  
@ObjectNameM

The name of each object.

 
SIF_SubscribeObjectNamesType
 SIF_SubscribeObjects/SIF_Object/
     SIF_Contexts
O

Applicable contexts for stated object support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_PublishAddObjectsM

A list of objects for which an Agent wishes to publish Add events.

 
 
 SIF_PublishAddObjects/SIF_Object
     
OR  
@ObjectNameM

The name of each object.

 
SIF_SubscribeObjectNamesType
 SIF_PublishAddObjects/SIF_Object/
     SIF_Contexts
O

Applicable contexts for stated object support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_PublishChangeObjectsM

A list of objects for which an Agent wishes to publish Change events.

 
 
 SIF_PublishChangeObjects/
     SIF_Object
OR  
@ObjectNameM

The name of each object.

 
SIF_SubscribeObjectNamesType
 SIF_PublishChangeObjects/
     SIF_Object/SIF_Contexts
O

Applicable contexts for stated object support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_PublishDeleteObjectsM

A list of objects for which an Agent wishes to publish Delete events.

 
 
 SIF_PublishDeleteObjects/
     SIF_Object
OR  
@ObjectNameM

The name of each object.

 
SIF_SubscribeObjectNamesType
 SIF_PublishDeleteObjects/
     SIF_Object/SIF_Contexts
O

Applicable contexts for stated object support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_RequestObjectsM

A list of objects an Agent wishes to request.

 
 
 SIF_RequestObjects/SIF_Object
     
OR  
@ObjectNameM

The name of each object.

 
SIF_RequestObjectNamesType
 SIF_RequestObjects/SIF_Object/
     SIF_ExtendedQuerySupport
O

Optionally specify whether or not SIF_ExtendedQuery may be sent in requests for this object.

 
xs:boolean
 SIF_RequestObjects/SIF_Object/
     SIF_Contexts
O

Applicable contexts for stated object support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_RespondObjectsM

A list of objects for which an Agent wishes to handle requests, whether or not it is the Provider for each object. Note that this list MUST include those objects specified in SIF_ProvideObjects.

 
 
 SIF_RespondObjects/SIF_Object
     
OR  
@ObjectNameM

The name of each object.

 
SIF_RequestObjectNamesType
 SIF_RespondObjects/SIF_Object/
     SIF_ExtendedQuerySupport
O

Whether or not SIF_ExtendedQuery is supported with regard to this object.

 
xs:boolean
 SIF_RespondObjects/SIF_Object/
     SIF_Contexts
O

Applicable contexts for stated object support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_ProvideServiceO

A list of SIF Zone Services that the agent wishes to provide to the zone

 
 
 SIF_ProvideService/SIF_Service
     
OR  
@ServiceNameM

The name of the SIF Zone Service as defined by a SIF Zone Service specification

 
xs:token
 SIF_ProvideService/SIF_Service/
     SIF_Contexts
O

Applicable contexts for stated SIF Zone Service support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_RespondServiceO

Indicates that the agent desires to respond to directed requests for one or more services in the SIF Zone

 
 
 SIF_RespondService/SIF_Service
     
OR  
@ServiceNameM

The name of the SIF Zone Service as defined by a SIF Zone Service specification

 
xs:token
 SIF_RespondService/SIF_Service/
     SIF_Contexts
O

Applicable contexts for stated SIF Zone Service support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_RequestServiceO

Indicates that the agent will make service calls to the specified SIF Zone Service by sending a SIF_ServiceInput message. This is an optinal element that is used for allowing agents to report all of their expected activities within a zone. It is not used operationally within the zone, and failing to submit this element while provisioning will not prevent the agent from making service calls.

 
 
 SIF_RequestService/SIF_Service
     
OR  
@ServiceNameM

The name of the SIF Zone Service as defined by a SIF Zone Service specification

 
xs:token
 SIF_RequestService/SIF_Service/
     SIF_Contexts
O

Applicable contexts for stated SIF Zone Service support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_RequestService/SIF_Service/
     SIF_Operations
O

The agent is not required to specify which operations it will invoke on the specified SIF Zone Service. However, the agent can do so if it desires report all of the activity it does within a zone.

 
List
 SIF_RequestService/SIF_Service/
     SIF_Operations/SIF_Operation
     
MR

A specific method that the agent invokes the specified SIF Zone Service

 
xs:token
 SIF_SubscribeServiceO

Indicates that the agent desires to subscribe to one or more events emitted by the specified service

 
 
 SIF_SubscribeService/SIF_Service
     
OR  
@ServiceNameM

The name of the SIF Zone Service as defined by a SIF Zone Service specification

 
xs:token
 SIF_SubscribeService/SIF_Service/
     SIF_Contexts
O

Applicable contexts for stated SIF Zone Service support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_SubscribeService/SIF_Service/
     SIF_Operations
O

If SIF_Operations is not present, then the agent desires to subscribe to all events emitted by the service within the given context

 
List
 SIF_SubscribeService/SIF_Service/
     SIF_Operations/SIF_Operation
     
MR

A specific event that the agent desires to subscribe to

 
xs:token
Table 5.2.4-1: SIF_Provision
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Provision> <SIF_Header> <SIF_MsgId>A10F92EB649F4A648B5BFC44C7FD965C</SIF_MsgId> <SIF_Timestamp>2006-08-18T11:23:11-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_ProvideObjects> <SIF_Object ObjectName="LearnerPersonal" /> <SIF_Object ObjectName="LearnerSchoolEnrolment" /> </SIF_ProvideObjects> <SIF_SubscribeObjects> <SIF_Object ObjectName="PersonPicture" /> </SIF_SubscribeObjects> <SIF_PublishAddObjects> <SIF_Object ObjectName="LearnerPersonal" /> <SIF_Object ObjectName="LearnerSchoolEnrolment" /> </SIF_PublishAddObjects> <SIF_PublishChangeObjects> <SIF_Object ObjectName="LearnerPersonal" /> <SIF_Object ObjectName="LearnerSchoolEnrolment" /> </SIF_PublishChangeObjects> <SIF_PublishDeleteObjects> <SIF_Object ObjectName="LearnerPersonal" /> <SIF_Object ObjectName="LearnerSchoolEnrolment" /> </SIF_PublishDeleteObjects> <SIF_RequestObjects> <SIF_Object ObjectName="PersonPicture" /> </SIF_RequestObjects> <SIF_RespondObjects> <SIF_Object ObjectName="LearnerPersonal" /> <SIF_Object ObjectName="LearnerSchoolEnrolment" /> </SIF_RespondObjects> </SIF_Provision> </SIF_Message>
Example 5.2.4-2: SIF_Provision

5.2.5 SIF_Register

SIF_Register is the message for registering an agent with a ZIS. An agent must be registered before it sends out other SIF messages. SIF_Register serves to provide the ZIS with the sender's identification information as well as to provide the information that the ZIS will need to contact this agent, should it register in Push mode.

Once a sender registers in the ZIS with the SIF_Register message, the sender can use the SIF_SourceId value in the header of all other outgoing messages as its identification. It is not necessary to send a SIF_Register message each time your agent starts up but it is not an error to do so. If there are any blocked events in the Agent's queue when a ZIS receives the SIF_Register message, the blocks will be removed.

SIF_Register
Figure 5.2.5-1: SIF_Register SIF_Register SIF_Header SIF_Name SIF_Version SIF_MaxBufferSize SIF_Mode SIF_Protocol SIF_NodeVendor SIF_NodeVersion SIF_Application SIF_Vendor SIF_Product SIF_Version SIF_Icon
 Element/@AttributeCharDescriptionType
 SIF_RegisterM

SIF_Register is the message for registering an agent with a ZIS.

 
 
 SIF_HeaderM

Header information associated with this message.

 
SIF_Header
 SIF_NameM

This is the descriptive name of the agent that is registering (i.e. Ramsey Media Center).

 
xs:normalizedString
xs:maxLength64
 SIF_VersionMR

Specifies the SIF Implementation Specification version(s) defining messages the agent can receive. If the ZIS cannot communicate in this format, it should reject the request.

The format of SIF_Version values can be found in Version Numbers. In a SIF_Register message, an individual SIF_Version element may also contain the following wildcards:

* - Any SIF version

<major version>.* - Any minor version plus revisions within a major version (e.g., 1.*)

<major version>.<minor version><r>* - Any revision within a minor version (e.g., 1.1r*)

Note: As wildcarding was first introduced in version 1.1 of the specification, 1.* does not match versions 1.0, 1.0r1 or 1.0r2. 1.1 or later agents that register with 1.* and wish to also receive messages from pre-1.1 agents must include SIF_Version element(s) with the supported pre-1.1 versions.

 
VersionWithWildcardsType
 SIF_MaxBufferSizeM

Specifies the maximum size of a packet to be returned by the ZIS. The ZIS may return packets smaller than, or equal to, the maximum value.

 
xs:unsignedInt
 SIF_ModeM

Specifies the communication mode (Pull or Push) as chosen by the message sender.

 
values:
Push
Pull
 SIF_ProtocolC

If SIF_Mode is Push, SIF_Protocol contains protocol information for contacting the agent in Push mode. A Pull-mode agent does not need to send SIF_Protocol; if received, a ZIS ignores it.

 
SIF_Protocol
 SIF_NodeVendorO

The vendor of the SIF agent.

 
xs:normalizedString
xs:maxLength256
 SIF_NodeVersionO

The agent version number. The format of this field is undefined, but it should match the format used in the agent's conformance statement, if the agent is SIF Certified.

Examples
2.0.1.11

xs:normalizedString
xs:maxLength32
 SIF_ApplicationO

Contains information about the vendor of the product that the agent represents.

 
 
 SIF_Application/SIF_Vendor
     
M

The name of the company of the product that this agent supports.

 
xs:normalizedString
xs:maxLength256
 SIF_Application/SIF_Product
     
M

The name of the product that this agent supports.

 
xs:normalizedString
xs:maxLength256
 SIF_Application/SIF_Version
     
M

The version of the product. This field is informative only.

 
xs:normalizedString
xs:maxLength32
 SIF_IconO

HTTP URL referencing an icon for graphical representation of the application/agent. Should range from 16x16 pixels to 128x128 pixels and be of an image MIME type commonly supported by Web browsers (e.g. PNG, JPEG, GIF). Agents may optionally follow the more restrictive guidelines at [FAVICON].

 
xs:anyURI
Table 5.2.5-1: SIF_Register
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Register> <SIF_Header> <SIF_MsgId>14BA09653261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-06:00</SIF_Timestamp> <SIF_SourceId>AcmeAgent</SIF_SourceId> </SIF_Header> <SIF_Name>Acme Agent for WAP 2.x</SIF_Name> <SIF_Version>2.4</SIF_Version> <SIF_MaxBufferSize>524288</SIF_MaxBufferSize> <SIF_Mode>Push</SIF_Mode> <SIF_Protocol Type="HTTPS" Secure="Yes"> <SIF_URL>https://AcmeHost:8030/StudentAdmin</SIF_URL> </SIF_Protocol> <SIF_NodeVersion>2.0.1.20</SIF_NodeVersion> <SIF_Application> <SIF_Vendor>Acme Consulting</SIF_Vendor> <SIF_Product>Web Administration Portal 5.x</SIF_Product> <SIF_Version>5.1.2</SIF_Version> </SIF_Application> </SIF_Register> </SIF_Message>
Example 5.2.5-2: SIF_Register

5.2.6 SIF_Request

This message is used to request information in SIF data objects from other SIF nodes. It optionally specifies the query criteria with which to match objects, as well as an optional subset of elements to be returned for matching objects.

SIF_Request
Figure 5.2.6-1: SIF_Request SIF_Request SIF_Header SIF_Version SIF_MaxBufferSize SIF_Query SIF_ExtendedQuery
 Element/@AttributeCharDescriptionType
 SIF_RequestM

SIF_Request is used to request information in SIF data objects from other SIF nodes.

 
 
 SIF_HeaderM

Header information associated with this message.

 
SIF_Header
 SIF_VersionMR

Specifies which SIF Implementation Specification version should be used when returning the response data; wildcards are allowed. The responding agent SHOULD return data using the highest version it supports that falls within the specified versions.

 
VersionWithWildcardsType
 SIF_MaxBufferSizeM

Specifies the maximum size of a response packet to be returned to the requester. The responder may return packets smaller than, or equal to, the maximum value. To guarantee delivery of response packets, requesting agents must not specify a SIF_MaxBufferSize greater than its registered SIF_Register/SIF_MaxBufferSize.

 
xs:unsignedInt
 SIF_QueryC

Either SIF_Query or SIF_ExtendedQuery must be specified, which contain the criteria to be used to match response objects.

 
SIF_Query
 SIF_ExtendedQueryC SIF_ExtendedQuery
Table 5.2.6-1: SIF_Request
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Request> <SIF_Header> <SIF_MsgId>A3E90785EFDA330DACB00785EFDA330D</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_Version>2.*</SIF_Version> <SIF_MaxBufferSize>1048576</SIF_MaxBufferSize> <SIF_Query> <SIF_QueryObject ObjectName="LearnerPersonal" /> <SIF_ConditionGroup Type="None"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element>@RefId</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>9B004AC4F51E4867A2B3B4ED92F46DAE</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Query> </SIF_Request> </SIF_Message>
Example 5.2.6-2: SIF_Request

5.2.7 SIF_Response

SIF_Response is used to respond to a SIF_Request message. A response may span multiple SIF_Response messages.

SIF_Response
Figure 5.2.7-1: SIF_Response SIF_Response SIF_Header SIF_RequestMsgId SIF_PacketNumber SIF_MorePackets SIF_Error SIF_ObjectData SIF_ExtendedQueryResults
 Element/@AttributeCharDescriptionType
 SIF_ResponseM

SIF_Response is used to respond to a SIF_Request message.

 
 
 SIF_HeaderM

Header information associated with this message. The SIF_DestinationId needs to be the SIF_SourceId of the original SIF_Request message being processed.

 
SIF_Header
 SIF_RequestMsgIdM

This is the message ID of the SIF_Request message being processed. It provides a unique match between a SIF_Response and a previous SIF_Request. Since the ID of each message from an agent is unique, the receiver of a SIF_Response message will be able to relate the SIF_Response to a SIF_Request that it sent out previously.

 
MsgIdType
 SIF_PacketNumberM

This element represents the index of the SIF_Response message in the sequence of packets that make up a complete response. Its value must be in the range of 1 through n, with n equal to the total number of packets that make up a response.

The receiver of a SIF_Response message, with the help of the SIF_MorePackets and SIF_PacketNumber element in each incoming SIF_Response message, will be able to interpret and process each SIF_Response as part of a complete response to a previous SIF_Request.

 
xs:positiveInteger
 SIF_MorePacketsM

This element provides an indication as to whether there are more packets besides this one to make up a complete response.

The necessity of this element stems from the requirement on an agent to break response data to fit into the SIF_MaxBufferSize provided in the SIF_Request. Agents may also break response data into multiple packets for the benefit of improving performance or for circumventing limitations of the underlying network infrastructure.

When this element's value is equal to No, it is an indication from the sender to the receiver that it has already sent out all the packets that make up a complete response for a SIF_Request as indicated by the SIF_RequestMsgId element.

 
values:
Yes
No
 SIF_ErrorC

The responder returns SIF_Error, SIF_ObjectData or SIF_ExtendedQueryResults.

This element allows the Responder to report an error condition that occurs while processing the SIF_Request.

If a SIF_Error element is present, the requesting agent must not expect to receive further SIF_Responses to the SIF_Request.

 
SIF_Error
 SIF_ObjectDataC

The SIF_ObjectData element contains the data objects matching the supplied criteria in the SIF_Request message if the SIF_Request contained SIF_Query. If the SIF_Request contained SIF_ExtendedQuery, include SIF_ExtendedQueryResults.

 
SIF_ResponseObjectsType
 SIF_ExtendedQueryResultsC

This element contains the elements requested by SIF_ExtendedQuery in SIF_Request.

 
SIF_ExtendedQueryResults
Table 5.2.7-1: SIF_Response
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Response> <SIF_Header> <SIF_MsgId>1BCD10580EF250789012AC0554321EA2</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>SISAgent</SIF_SourceId> <SIF_DestinationId>NetworkAgent</SIF_DestinationId> </SIF_Header> <SIF_RequestMsgId>FE1078BA3261545A319059376B3A4898</SIF_RequestMsgId> <SIF_PacketNumber>1</SIF_PacketNumber> <SIF_MorePackets>No</SIF_MorePackets> <SIF_ObjectData> <LearnerPersonal RefId="E3E34B359D75101A8C3D00AA00184753"> <PersonalInformation> <Name Type="R"> <FamilyName>Johnson</FamilyName> <GivenName>Alicia</GivenName> </Name> </PersonalInformation> </LearnerPersonal> </SIF_ObjectData> </SIF_Response> </SIF_Message>
Example 5.2.7-2: Sample single-packet SIF_Response to a SIF_Request for the Name element from a LearnerPersonal object
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Response> <SIF_Header> <SIF_MsgId>322925BC9818433E8090D5110EE61DA3</SIF_MsgId> <SIF_Timestamp>2006-04-18T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>SISAgent</SIF_SourceId> <SIF_DestinationId>NetworkAgent</SIF_DestinationId> </SIF_Header> <SIF_RequestMsgId>FE1078BA3261545A31905937B265CE01</SIF_RequestMsgId> <SIF_PacketNumber>1</SIF_PacketNumber> <SIF_MorePackets>Yes</SIF_MorePackets> <SIF_ObjectData> <LearnerPersonal RefId="E3E34B359D75101A8C3D00AA00184753"> <PersonalInformation> <Name Type="R"> <FamilyName>Johnson</FamilyName> <GivenName>Alicia</GivenName> </Name> </PersonalInformation> </LearnerPersonal> </SIF_ObjectData> </SIF_Response> </SIF_Message>
Example 5.2.7-4: SIF_Response (first packet)
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Response> <SIF_Header> <SIF_MsgId>322925BC9818433E8090D51256786BC9</SIF_MsgId> <SIF_Timestamp>2006-04-18T08:39:49-08:00</SIF_Timestamp> <SIF_SourceId>SISAgent</SIF_SourceId> <SIF_DestinationId>NetworkAgent</SIF_DestinationId> </SIF_Header> <SIF_RequestMsgId>FE1078BA3261545A31905937B265CE01</SIF_RequestMsgId> <SIF_PacketNumber>2</SIF_PacketNumber> <SIF_MorePackets>No</SIF_MorePackets> <SIF_ObjectData> <LearnerPersonal RefId="E3E34B359D75101A8C3D00AA00184753"> <PersonalInformation> <Name Type="R"> <FamilyName>Johnson</FamilyName> <GivenName>Alicia</GivenName> </Name> </PersonalInformation> </LearnerPersonal> </SIF_ObjectData> </SIF_Response> </SIF_Message>
Example 5.2.7-6: SIF_Response (second packet)
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Response> <SIF_Header> <SIF_MsgId>F557D40A1367455E9F01DED76E29260C</SIF_MsgId> <SIF_Timestamp>2006-04-18T08:43:08-08:00</SIF_Timestamp> <SIF_SourceId>SISAgent</SIF_SourceId> <SIF_DestinationId>NetworkAgent</SIF_DestinationId> </SIF_Header> <SIF_RequestMsgId>971D7C7EF2684C7081A7765BF89FAD14</SIF_RequestMsgId> <SIF_PacketNumber>1</SIF_PacketNumber> <SIF_MorePackets>No</SIF_MorePackets> <SIF_ObjectData /> </SIF_Response> </SIF_Message>
Example 5.2.7-8: SIF_Response with no matching objects

5.2.8 SIF_Subscribe

This message is used to subscribe to event objects that are contained in this message.

SIF_Subscribe
Figure 5.2.8-1: SIF_Subscribe SIF_Subscribe SIF_Header SIF_Object ObjectName SIF_Contexts
 Element/@AttributeCharDescriptionType
 SIF_SubscribeM

This message is used to subscribe to event objects that are contained in this message.

 
 
 SIF_HeaderM

Header information associated with this message.

 
SIF_Header
 SIF_ObjectMR  
@ObjectNameM

The actual name of the object that is being subscribed to. All valid SIF_Events for this object will be routed to the subscriber.

 
SIF_SubscribeObjectNamesType
 SIF_Object/SIF_ContextsO

The contexts to which the subscription applies; if omitted, the context is SIF_Default.

 
SIF_Contexts
Table 5.2.8-1: SIF_Subscribe
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Subscribe> <SIF_Header> <SIF_MsgId>AB2065FD3261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseyLIB</SIF_SourceId> </SIF_Header> <SIF_Object ObjectName="LearnerPersonal" /> <SIF_Object ObjectName="WorkforcePersonal" /> </SIF_Subscribe> </SIF_Message>
Example 5.2.8-2: SIF_Subscribe

5.2.9 SIF_SystemControl

A SIF_SystemControl message is designed to control the flow of data between an agent and ZIS or vice-versa, and to synchronously retrieve data available from the ZIS. The SIF_SystemControl message is a container for a number of specialized control messages. SIF_SystemControl messages are handled immediately by receivers and are not persisted in a message queue for later delivery.

SIF_SystemControl
Figure 5.2.9-1: SIF_SystemControl SIF_SystemControl SIF_Header SIF_SystemControlData SIF_Ping SIF_Sleep SIF_Wakeup SIF_GetMessage SIF_GetZoneStatus SIF_GetAgentACL SIF_CancelRequests
 Element/@AttributeCharDescriptionType
 SIF_SystemControlM

This message is designed to control the flow of data an agent and ZIS or vice-versa, and to synchronously retrieve data available from the ZIS.

 
 
 SIF_HeaderM

Header information associated with this message.

 
SIF_Header
 SIF_SystemControlDataM

This element holds the sub-message being sent.

 
choice of:

SIF_Ping
SIF_Sleep
SIF_Wakeup
SIF_GetMessage
SIF_GetZoneStatus
SIF_GetAgentACL
SIF_CancelRequests
Table 5.2.9-1: SIF_SystemControl
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_SystemControl> <SIF_Header> <SIF_MsgId>C332B8A9DFA5480AB89B6B6F62BE57B3</SIF_MsgId> <SIF_Timestamp>2006-12-27T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>RamseyLIB</SIF_SourceId> </SIF_Header> <SIF_SystemControlData> <SIF_Ping /> </SIF_SystemControlData> </SIF_SystemControl> </SIF_Message>
Example 5.2.9-2: SIF_SystemControl

5.2.10 SIF_Ping

SIF_Ping is sent to detect if a ZIS or push-mode agent is ready to receive and process messages.

SIF_Ping
Figure 5.2.10-1: SIF_Ping SIF_Ping
 Element/@AttributeCharDescriptionType
 SIF_PingM

This sub-message detects if an a Push-Mode Agent or ZIS is ready to receive and process messages.

 
EMPTY
Table 5.2.10-1: SIF_Ping
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_SystemControl> <SIF_Header> <SIF_MsgId>C332B8A9DFA5480AB89B6B6F62BE57B3</SIF_MsgId> <SIF_Timestamp>2006-12-27T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>RamseyLIB</SIF_SourceId> </SIF_Header> <SIF_SystemControlData> <SIF_Ping /> </SIF_SystemControlData> </SIF_SystemControl> </SIF_Message>
Example 5.2.10-2: SIF_Ping
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>AE9E2BD747B94F4D8545E41F482854C8</SIF_MsgId> <SIF_Timestamp>2006-10-14T14:23:20-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseyZIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>9812ABFD3261545A31905937B265CE01</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>1</SIF_Code> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 5.2.10-4: SIF_SystemControl—SIF_Ping ("Okay" status)
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>3C11DFF1451C4E9A8A1F07E03C1D7FBB</SIF_MsgId> <SIF_Timestamp>2006-10-14T14:24:31-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseyZIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>9812ABFD3261545A31905937B265CE01</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>8</SIF_Code> <SIF_Desc>Receiver is sleeping</SIF_Desc> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 5.2.10-6: SIF_SystemControl—SIF_Ping ("Receiver is sleeping" status)
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>1594A3B29DD34786B5EA77998899F49F</SIF_MsgId> <SIF_Timestamp>2006-10-14T14:24:31-08:00</SIF_Timestamp> <SIF_SourceId>RamseyZIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseySIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>9812ABFD3261545A31905937B265CE01</SIF_OriginalMsgId> <SIF_Error> <SIF_Category>10</SIF_Category> <SIF_Code>4</SIF_Code> <SIF_Desc>Unable to establish connection</SIF_Desc> <SIF_ExtendedDesc>Error 10061: Connection refused</SIF_ExtendedDesc> </SIF_Error> </SIF_Ack> </SIF_Message>
Example 5.2.10-8: SIF_SystemControl—SIF_Ping (Transport error returned)

5.2.11 SIF_Sleep

The SIF_Sleep message allows an agent to notify a ZIS or a ZIS to notify a push-mode agent that it must not send any more messages to the sender of the SIF_Sleep. After the sender receives a SIF_Ack indicating that the message was received, the receiver must not send any further messages to the sender.

This message provides the ability to signal an agent or ZIS that the sender will be unable to process further messages until some time in the future. Reasons for sending a SIF_Sleep message include the sender is unable to process more data because of limited resources (i.e. disk storage, network bandwidth, etc.), or the sender is being temporarily shutdown and will be unable to receive messages.

Since the sender may send a SIF_Sleep message for a variety of reasons, if the receiver sends messages after a SIF_Sleep message but prior to receiving a SIF_Wakeup or SIF_Register message from the sender, an error must be returned. A transport error will occur or be returned if a connection cannot be established with the sender, or the sender may choose to receive the connection but return an error.

If the sender is an agent, the ZIS will continue to hold any messages for the agent in the queue but the ZIS will not send those messages until a SIF_Wakeup (or SIF_Register) message is received. If an agent is processing a message requiring additional SIF_Requests to be sent to the ZIS and a SIF_Sleep message is received from the ZIS, the agent will not be able to retrieve the additional data. The agent must abort the processing of the message and only attempt to process the message after receiving a SIF_Wakeup message from the ZIS.

An agent or ZIS is not required to be able to send SIF_Sleep messages. However, if an agent or ZIS has the ability to send a SIF_Sleep, it must also be able to send a SIF_Wakeup. Although the sending of SIF_Sleep is optional, an agent or ZIS must always be able to process and respond appropriately to these messages if received.

SIF_Sleep
Figure 5.2.11-1: SIF_Sleep SIF_Sleep
 Element/@AttributeCharDescriptionType
 SIF_SleepM

This sub-message tells a receiver not to send any more messages to the sender.

 
EMPTY
Table 5.2.11-1: SIF_Sleep
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_SystemControl> <SIF_Header> <SIF_MsgId>1594A3B29DD34786B5EA77998899F49F</SIF_MsgId> <SIF_Timestamp>2006-10-14T14:28:19-08:00</SIF_Timestamp> <SIF_SourceId>RamseyZIS</SIF_SourceId> </SIF_Header> <SIF_SystemControlData> <SIF_Sleep /> </SIF_SystemControlData> </SIF_SystemControl> </SIF_Message>
Example 5.2.11-2: SIF_Sleep
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>9F5167FA5CA848F99EB27544B314AF4D</SIF_MsgId> <SIF_Timestamp>2006-10-14T14:29:09-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseyZIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>1594A3B29DD34786B5EA77998899F49F</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>1</SIF_Code> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 5.2.11-4: SIF_Ack with "Okay" status in response to SIF_Sleep

5.2.12 SIF_Wakeup

When the "sleeping" agent or ZIS is ready to resume message processing, it will send a SIF_Wakeup message. This will signal the receiver that the sender is now able to process messages. Sending a SIF_Wakeup message without a previous SIF_Sleep message is permissible and is not considered an error.

If there are any blocked events in the Agent's queue when a ZIS receives the SIF_Wakeup message, the blocks will be removed.

Since a ZIS may choose to stop sending messages to an agent if a connection cannot be made with that agent, it is recommended that an agent send a SIF_Wakeup message to the ZIS upon agent startup.

An agent or ZIS is not required to be able to send SIF_Wakeup messages. Although the sending of SIF_Wakeup is optional, an agent or ZIS must always be able to process and respond to these messages correctly if received.

SIF_Wakeup
Figure 5.2.12-1: SIF_Wakeup SIF_Wakeup
 Element/@AttributeCharDescriptionType
 SIF_WakeupM

This message tells a receiver that the sender is able to process messages.

 
EMPTY
Table 5.2.12-1: SIF_Wakeup
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_SystemControl> <SIF_Header> <SIF_MsgId>715A32E026B0495A826DF84E821949BD</SIF_MsgId> <SIF_Timestamp>2006-10-14T15:34:22-08:00</SIF_Timestamp> <SIF_SourceId>RamseyZIS</SIF_SourceId> </SIF_Header> <SIF_SystemControlData> <SIF_Wakeup /> </SIF_SystemControlData> </SIF_SystemControl> </SIF_Message>
Example 5.2.12-2: SIF_Wakeup
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>5631E28868E3482EAA51B6CDE4145957</SIF_MsgId> <SIF_Timestamp>2006-10-14T15:34:48-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseyZIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>715A32E026B0495A826DF84E821949BD</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>1</SIF_Code> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 5.2.12-4: SIF_Ack with an "Okay" status in response to SIF_Wakeup

5.2.12.1 SIF_Sleep/SIF_Wakeup versus SIF_Register/SIF_Unregister

Using the SIF_Wakeup message is the preferred method of communicating that an agent or ZIS is ready to process messages. This is preferable over the use of a SIF_Register message because a SIF_Register message specifies protocol information while the SIF_Sleep/SIF_Wakeup pair communicates flow control information. However, when a SIF_Register message is processed, the receiver must behave like a SIF_Wakeup message was also received.

It is important to note that while SIF_Sleep and SIF_Wakeup are opposites of one another, this is not the case with SIF_Register and SIF_Unregister. This is because a SIF_Unregister command removes essential agent configuration information such as the provision and subscription lists, which will not be specified by a subsequent SIF_Register command. (SIF_Unregister also causes any messages pending delivery to the agent to be purged from the agent's queue.) In other words, a SIF_Register alone will not reverse the effects of a SIF_Unregister.

5.2.13 SIF_GetMessage

The SIF_GetMessage message provides the mechanism for an agent to pull message from a ZIS. An agent sends a SIF_GetMessage and the ZIS returns the next available message, subject to Selective Message Blocking, wrapped in a SIF_Ack with a SIF_Status/SIF_Code of 0 and the message in the SIF_Status/SIF_Data element. If there are no messages to be returned, the ZIS returns a value of 9 in SIF_Status/SIF_Code.

If an agent is not registered with a mode of Pull the ZIS will return a SIF_Ack with an error category of Registration and an error code indicating the agent is registered in Push mode.

SIF_GetMessage
Figure 5.2.13-1: SIF_GetMessage SIF_GetMessage
 Element/@AttributeCharDescriptionType
 SIF_GetMessageM

This message tells the ZIS to return the first available message to the agent, subject to Selective Message Blocking.

 
EMPTY
Table 5.2.13-1: SIF_GetMessage
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_SystemControl> <SIF_Header> <SIF_MsgId>B0E80A74265A4A75ADDC0ECC50AEF737</SIF_MsgId> <SIF_Timestamp>2006-10-14T15:54:32-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_SystemControlData> <SIF_GetMessage /> </SIF_SystemControlData> </SIF_SystemControl> </SIF_Message>
Example 5.2.13-2: SIF_GetMessage
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>9861A45AAC364607938A7DB440514DDF</SIF_MsgId> <SIF_Timestamp>2006-10-14T15:54:42-08:00</SIF_Timestamp> <SIF_SourceId>RamseyZIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseySIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>B0E80A74265A4A75ADDC0ECC50AEF737</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>0</SIF_Code> <SIF_Data> <SIF_Message Version="2.4"> <SIF_Event> <SIF_Header> <SIF_MsgId>AB34DC093261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-10-14T15:40:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_ObjectData> <SIF_EventObject ObjectName="LearnerPersonal" Action="Change"> <LearnerPersonal RefId="D3E34B359D75101A8C3D00AA001A1652"> <PersonalInformation> <Name Type="R"> <GivenName>William</GivenName> </Name> </PersonalInformation> </LearnerPersonal> </SIF_EventObject> </SIF_ObjectData> </SIF_Event> </SIF_Message> </SIF_Data> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 5.2.13-4: SIF_Ack in response to SIF_GetMessage
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>9861A45AAC364607938A7DB440514DDF</SIF_MsgId> <SIF_Timestamp>2006-10-14T15:54:42-08:00</SIF_Timestamp> <SIF_SourceId>RamseyZIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseySIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>B0E80A74265A4A75ADDC0ECC50AEF737</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>9</SIF_Code> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 5.2.13-6: SIF_Ack in response to SIF_GetMessage (no message in queue)

5.2.14 SIF_GetZoneStatus

The SIF_GetZoneStatus message provides the agent with the ability to synchronously retrieve the current status of the zone, by-passing the asynchronous nature of retrieving the zone status by sending a SIF_Request for SIF_ZoneStatus and waiting for the arrival of the SIF_ZoneStatus response at the top of its queue. Agents may also use the asynchronous model for requesting SIF_ZoneStatus, if and when desired.

SIF_GetZoneStatus
Figure 5.2.14-1: SIF_GetZoneStatus SIF_GetZoneStatus
 Element/@AttributeCharDescriptionType
 SIF_GetZoneStatusM

This message tells the ZIS to return the current SIF_ZoneStatus in a SIF_Ack.

 
EMPTY
Table 5.2.14-1: SIF_GetZoneStatus
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_SystemControl> <SIF_Header> <SIF_MsgId>91401B5073F54AB1AEBC63E51764C77A</SIF_MsgId> <SIF_Timestamp>2006-10-14T16:09:54-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_SystemControlData> <SIF_GetZoneStatus /> </SIF_SystemControlData> </SIF_SystemControl> </SIF_Message>
Example 5.2.14-2: SIF_GetZoneStatus
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>C4BF5F868EEC4A41AF7DAF316C4E89DC</SIF_MsgId> <SIF_Timestamp>2006-10-14T16:10:42-08:00</SIF_Timestamp> <SIF_SourceId>RamseyZIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseySIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>91401B5073F54AB1AEBC63E51764C77A</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>0</SIF_Code> <SIF_Data> <SIF_ZoneStatus ZoneId="SIFExampleZone">...</SIF_ZoneStatus> </SIF_Data> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 5.2.14-4: SIF_Ack containing SIF_ZoneStatus

5.2.15 SIF_GetAgentACL

The SIF_GetAgentACL message provides the agent with the ability to synchronously retrieve its Access Control List permissions in the Zone via SIF_AgentACL. Agents may also use the asynchronous model of SIF_Request for requesting SIF_AgentACL, if and when desired.

SIF_GetAgentACL
Figure 5.2.15-1: SIF_GetAgentACL SIF_GetAgentACL
 Element/@AttributeCharDescriptionType
 SIF_GetAgentACLM

This message tells the ZIS to return the Agent's ACL permissions in a SIF_Ack.

 
EMPTY
Table 5.2.15-1: SIF_GetAgentACL

5.2.16 SIF_CancelRequests

The SIF_SystemControl—SIF_CancelRequests message allows an Agent or ZIS to notify a ZIS or Push-Mode Agent, respectively, that the specified SIF_Requests should be cancelled, whether pending or in process. Handling by a Push-Mode Agent is optional; if unsupported, the Agent returns a Generic Message Handling error upon receipt of the SIF_SystemControl message, error code "Message not supported."

SIF_CancelRequests
Figure 5.2.16-1: SIF_CancelRequests SIF_CancelRequests SIF_NotificationType SIF_RequestMsgIds SIF_RequestMsgId
 Element/@AttributeCharDescriptionType
 SIF_CancelRequestsM

This sub-message asks a receiver (ZIS or Push-Mode Agent) to cancel the specified SIF_Requests, pending or in process.

 
 
 SIF_NotificationTypeM values:
Standard
ZIS will send a "final" SIF_Response for each cancelled SIF_Request.
None
No further SIF_Responses for these requests will be placed in the Agent's queue.
 SIF_RequestMsgIdsM The list of SIF_Requests to cancel.  List
 SIF_RequestMsgIds/SIF_RequestMsgId
     
MR This is the SIF_MsgId of the SIF_Request message being cancelled.  MsgIdType
Table 5.2.16-1: SIF_CancelRequests
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_SystemControl> <SIF_Header> <SIF_MsgId>C332B8A9DFA5480AB89B6B6F62BE57B3</SIF_MsgId> <SIF_Timestamp>2006-12-27T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>AcmeAgent</SIF_SourceId> </SIF_Header> <SIF_SystemControlData> <SIF_CancelRequests> <SIF_NotificationType>None</SIF_NotificationType> <SIF_RequestMsgIds> <SIF_RequestMsgId>C332B8A9DFA5480AB89B6B6F62BE57B3</SIF_RequestMsgId> <SIF_RequestMsgId>1058ABCDE028D076F08365109BE7C892</SIF_RequestMsgId> </SIF_RequestMsgIds> </SIF_CancelRequests> </SIF_SystemControlData> </SIF_SystemControl> </SIF_Message>
Example 5.2.16-2: SIF_CancelRequests

5.2.17 SIF_CancelServiceInputs

The SIF_SystemControl message is already part of the SIF Infrastructure. This messages allows for synchronous communication between an agent and a ZIS. The SIF_SystemControl - SIF_CancelServiceInputs allows an agent or ZIS to notify the other party that the specified SIF_ServiceInput should be cancelled.

SIF_CancelServiceInputs
Figure 5.2.17-1: SIF_CancelServiceInputs SIF_CancelServiceInputs SIF_NotificationType SIF_ServiceMsgIds SIF_ServiceMsgId
 Element/@AttributeCharDescriptionType
 SIF_CancelServiceInputsM

The SIF_SystemControl message is already part of the SIF Infrastructure. This messages allows for synchronous communication between an agent and a ZIS. The SIF_SystemControl - SIF_CancelServiceInputs allows an agent or ZIS to notify the other party that the specified SIF_ServiceInput should be cancelled.

 
 
 SIF_NotificationTypeM values:
Standard
ZIS will send a "final" SIF_ServiceOutput for each cancelled SIF_ServiceInput.
None
No further SIF_ServiceOutputs for these requests will be placed in the Agent's queue.
 SIF_ServiceMsgIdsM The list of SIF_ServiceInputs to cancel.  List
 SIF_ServiceMsgIds/SIF_ServiceMsgId
     
MR This is the SIF_ServiceMsgId of the SIF_ServiceInput message being cancelled.  MsgIdType
Table 5.2.17-1: SIF_CancelServiceInputs
Example 5.2.17-1: SIF_CancelServiceInputs

5.2.18 SIF_Unprovide

This message performs the opposite function of SIF_Provide. It removes the message sender as a provider of the data objects contained in this message.

Figure 5.2.18-1: SIF_Unprovide SIF_Unprovide SIF_Header SIF_Object ObjectName SIF_Contexts
 Element/@AttributeCharDescriptionType
 SIF_UnprovideM

This message performs the opposite function of SIF_Provide.

 
 
 SIF_HeaderM

Header information associated with this message.

 
SIF_Header
 SIF_ObjectMR

This is the object that is being removed from the provider list.

 
 
@ObjectNameM

The actual name of the object that is being removed.

 
SIF_ProvideObjectNamesType
 SIF_Object/SIF_ContextsO

The contexts from which the object is being removed; if omitted, the context is SIF_Default.

 
SIF_Contexts
Table 5.2.18-1: SIF_Unprovide
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Unprovide> <SIF_Header> <SIF_MsgId>76EFAB543261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_Object ObjectName="LearnerPersonal" /> <SIF_Object ObjectName="WorkforcePersonal" /> </SIF_Unprovide> </SIF_Message>
Example 5.2.18-2: SIF_Unprovide

5.2.19 SIF_Unregister

This message allows an agent to remove any association it has with the ZIS. By sending this message, the ZIS will remove all provisions and subscriptions it maintains for the sender and discards any messages pending for the agent.

Figure 5.2.19-1: SIF_Unregister SIF_Unregister SIF_Header
 Element/@AttributeCharDescriptionType
 SIF_UnregisterM

This message is used to unregister an agent from a Zone.

 
 
 SIF_HeaderM

Header information contained in the message.

 
SIF_Header
Table 5.2.19-1: SIF_Unregister
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Unregister> <SIF_Header> <SIF_MsgId>1057FABD3261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseyFOOD</SIF_SourceId> </SIF_Header> </SIF_Unregister> </SIF_Message>
Example 5.2.19-2: SIF_Unregister

5.2.20 SIF_Unsubscribe

This message performs the opposite function of SIF_Subscribe. It removes the message sender as a subscriber to the SIF_Events contained in this message.

Figure 5.2.20-1: SIF_Unsubscribe SIF_Unsubscribe SIF_Header SIF_Object ObjectName SIF_Contexts
 Element/@AttributeCharDescriptionType
 SIF_UnsubscribeM

This message is used to unsubscribe from SIF_Events.

 
 
 SIF_HeaderM

Header information associated with this message.

 
SIF_Header
 SIF_ObjectMR  
@ObjectNameM

The actual name of the object from which the agent should be unsubscribed. Events pertaining to this object published after successful unsubscription will no longer be queued for delivery to the agent. Events already queued for delivery to the agent prior to unsubscription will be delivered.

 
SIF_SubscribeObjectNamesType
 SIF_Object/SIF_ContextsO

The applicable contexts; if omitted, the context is SIF_Default.

 
SIF_Contexts
Table 5.2.20-1: SIF_Unsubscribe
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_Unsubscribe> <SIF_Header> <SIF_MsgId>101AE3703261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseyFOOD</SIF_SourceId> </SIF_Header> <SIF_Object ObjectName="LearnerPersonal" /> <SIF_Object ObjectName="WorkforcePersonal" /> </SIF_Unsubscribe> </SIF_Message>
Example 5.2.20-2: SIF_Unsubscribe

5.2.21 SIF_ServiceInput

This message is used to invoke a method that is exposed by a SIF Zone Service.

The SIF Zone Service specification may state that multiple SIF_ServiceInput messages may be sent to comprise a single invocation of a zone service method. If this is the case, the must be packetized using the following rules.

When an agent is creating SIF_ServiceInput packets, it MUST attempt to ensure that each packet is no larger than the maximum SIF_MaxBufferSize supported by the service. The default SIF_MaxBufferSize for any SIF Zone service is 64k. Each SIF_ServiceInput message be packetized using a maximum 64K to a SIF Zone Service by a service client (agent). A higher buffer size MAY be used only if the service client (agent) has verified that the service can accept a higher buffer size.

The size of a SIF_ServiceInput message SHOULD be less than or equal 65,536 bytes, unless one of the following is true:

  1. The SIF Zone Service is defined as requiring a larger buffer size for unsolicited messages. If this is the case, the SIF Specification for the SIF Zone service specifies the SIF_MaxBufferSize that is defined for this service. If that is the case, then the size specified in the SIF Zone Service definition becomes the maximum allowable buffer size.
  2. The service client has determined that a higher buffer size is supported by the publisher of the service, either through static configuration by the zone administrator or dynamically at runtime by examination of SIF_ZoneStatus.

If one or more SIF_ServiceInput packets have been sent by the service client, the following rules apply:

  1. If a single subsequent packet does not fit within the define SIF_MaxBufferSize, the agent MUST, in addition to acknowledging receipt of the message to the ZIS, send a SIF_ServiceInput message to the service with the SIF_Error element populated to indicate the nature of the error, and the SIF_MorePackets element set to indicate that no further packets will be sent in for the SIF_ServiceInput.
  2. If the service client encounters an error and is unable to continue sending SIF_ServiceInput packets, the service client SHOULD send a final SIF_ServiceInput message to the service with the SIF_Error element populated to indicate the nature of the error, and the SIF_MorePackets element set to indicate that no further packets will be sent in for the SIF_ServiceInput.

The SIF_ServiceInput message also contains SIF_Version elements that specify which SIF versions the responding agent should use when preparing the response packets.

Figure 5.2.21-1: SIF_ServiceInput SIF_ServiceInput SIF_Header SIF_Service SIF_Operation SIF_ServiceMsgId SIF_Version SIF_MaxBufferSize SIF_PacketNumber SIF_MorePackets SIF_Error SIF_Body
 Element/@AttributeCharDescriptionType
 SIF_ServiceInputM

SIF_ServiceInput is used to invoke a method that is exposed by a SIF Zone Service.

 
 
 SIF_HeaderM

Header information associated with this message.

 
SIF_Header
 SIF_ServiceM

The name of the SIF Zone Service that is being invoked.

 
xs:normalizedString
 SIF_OperationM

This is the name of the service operation that is being invoked.

 
xs:normalizedString
 SIF_ServiceMsgIdM

The unique ID of this service request invocation. Multiple SIF_ServiceInput packets may be sent with this same SIF_ServiceMsgId

 
GUIDType
 SIF_VersionCR

Specifies which SIF Specification version should be used when returning the response data. If a responder cannot return response data in this format, it should reject the SIF_ServiceInput. It is recommended that clients use a wildcard version for the “minor” portion of the version, such as "2.*".

This element is mandatory for the first SIF_ServiceInput packet (SIF_PacketNumber is set to "1"). For subsequent packets, it is not required, and should be ignored, if present, for packets other than the first packet.

 
VersionWithWildcardsType
 SIF_MaxBufferSizeC

Specifies the maximum size of a response packet to be returned to the requester. The responder may return packets smaller than, or equal to, the maximum value. If the maximum size is too small to contain a single whole response object, the responder should reject the SIF_ServiceInput. To guarantee delivery of response packets, requesting agents must not specify a SIF_MaxBufferSize greater than its registered SIF_Register/SIF_MaxBufferSize.

This element is mandatory for the first SIF_ServiceInput packet (SIF_PacketNumber is set to "1"). For subsequent packets, it is not required, and should be ignored, if present, for packets other than the first packet.

 
xs:unsignedInt
 SIF_PacketNumberM

This element represents the index of the SIF_ServiceInput message in the sequence of packets that make up a complete response. Its value must be in the range of 1 through n, with n equal to the total number of packets that make up a response.

The receiver of a SIF_ServiceInput message, with the help of the SIF_MorePackets and SIF_PacketNumber element in each incoming SIF_ServiceOutput message, will be able to interpret and process each SIF_ServiceInput as part of a complete invocation of a SIF Zone Service Operation.

 
xs:positiveInteger
 SIF_MorePacketsM

This element provides an indication as to whether there are more packets besides this one to make up a complete service request. The value of this element can only be "Yes" or "No".

The necessity of this element stems from the requirement on an agent to break service response data into multiple packets to fit into the SIF_MaxBufferSize that has been registered by the service. Agents may also break response data into multiple packets for the benefit of improving performance or for circumventing limitations of the underlying network infrastructure.

When this element's value is equal to "No", it is an indication from the sender to the receiver that it has already sent out all the packets that make up a complete SIF_ServiceInput as indicated by the SIF_ServiceMsgId element.

 
values:
Yes
No
 SIF_ErrorC

The agent creates either a SIF_Error or SIF_Body element. The SIF_Error element allows the agent that is invoking the service to report an error condition that occurs while creating the SIF_ServiceInput. Reporting a SIF_Error in SIF_ServiceInput is normally only expected if one or more packets have already been sent so that the receiving agent is aware that an error has occurred that will halt the service invocation message packets. However, a SIF Zone Service definition may define other valid reasons for sending a SIF_Error as the first packet of a SIF_ServiceInput message.

If a SIF_Error element is present, the service must not expect to receive further SIF_ServiceInput messagest.

 
SIF_Error
 SIF_BodyC

SIF_Body contains a single child element that has the same name as the value of the SIF_Operation element. The structure of this element is defined by the XML Schema that is defined for the Service.

 
ExtendedContentType
Table 5.2.21-1: SIF_ServiceInput
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_ServiceInput> <SIF_Header> <SIF_MsgId>1BCD10580EF250789012AC0554321EA2</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>SISAgent</SIF_SourceId> <SIF_DestinationId>NetworkAgent</SIF_DestinationId> </SIF_Header> <SIF_Service>WeatherService</SIF_Service> <SIF_Operation>GetForecast</SIF_Operation> <SIF_ServiceMsgId>FE1078BA3261545A319059376B3A4898</SIF_ServiceMsgId> <SIF_Version>2.*</SIF_Version> <SIF_MaxBufferSize>1048576</SIF_MaxBufferSize> <SIF_PacketNumber>1</SIF_PacketNumber> <SIF_MorePackets>No</SIF_MorePackets> <SIF_Body> <GetForecast> <PostalCode>55544</PostalCode> </GetForecast> </SIF_Body> </SIF_ServiceInput> </SIF_Message>
Example 5.2.21-2: Example 1 - Simple SIF_ServiceInput

5.2.22 SIF_ServiceOutput

SIF_ServiceOutput is used to respond to a SIF_ServiceInput message. A SIF_ServiceOutput message stream may consist of multiple packets. Each packet consists of a single service element, as defined by the service, contained as a child of the SIF_Body element.

When an agent is creating SIF_ServiceOutput packets, it MUST attempt to ensure that each packet is no larger than the SIF_MaxBufferSize specified by the SIF_ServiceInput If for any packet a single packet does fit within the supplied SIF_MaxBufferSize, the agent MUST, in addition to acknowledging receipt of the message to the ZIS, send a SIF_ServiceOutput message to the client with the SIF_Error element populated to indicate the nature of the error, and the SIF_MorePackets element set to indicate that no further packets will be sent in response to the SIF_ServiceInput.

The SIF_ServiceInput message also contains SIF_Version elements that specify which SIF versions the responding agent SHOULD use when preparing the response packets. If a responding agent can support a single requested SIF version, it returns a response packet using that version. If more than one version is specified and the responding agent supports more than one of those versions it SHOULD respond with the highest version it supports. If the agent cannot support any requested SIF version, it should send a SIF_Error ack back to the ZIS. The ZIS is responsible for constructing a SIF_ServiceOutput error message back to the original agent. The ZIS MUST send a SIF_ServiceOutput message to the client with the SIF_Error element populated to indicate the nature of the error, a SIF_PacketNumber of 1 and the SIF_MorePackets element set to indicate that no further packets will be sent in response to the SIF_ServiceInput.

If any other error occurs while creating SIF_ServiceOutput packets for a given request, in addition to acknowledging receipt of the message to the ZIS, the agent MUST send a SIF_ServiceOutput message to the client with the SIF_Error element populated to indicate the nature of the error, with SIF_MorePackets set to indicate that no further packets will be sent in response to the SIF_ServiceOutput.

Figure 5.2.22-1: SIF_ServiceOutput SIF_ServiceOutput SIF_Header SIF_ServiceMsgId SIF_PacketNumber SIF_MorePackets SIF_Error SIF_Body
 Element/@AttributeCharDescriptionType
 SIF_ServiceOutputM

SIF_ServiceOutput is used to respond to a SIF_ServiceInput message.

 
 
 SIF_HeaderM

Header information associated with this message.

 
SIF_Header
 SIF_ServiceMsgIdM

This element represents the value of the SIF_ServiceMsgId that was sent as part of the original SIF_ServiceInput message stream, and should contain the same value to allow the client and the ZIS to associate each SIF_ServiceOutput packet with the SIF_ServiceInput message stream. This value uniquely identifies the entire set of SIF_ServiceInput and SIF_ServiceOutput messages involved in a single invocation of a SIF Zone Service method.

 
GUIDType
 SIF_PacketNumberM

This element represents the index of the SIF_ServiceOutput message in the sequence of packets that make up a complete response. Its value must be in the range of 1 through n, with n equal to the total number of packets that make up a response.

The receiver of a SIF_ServiceOutput message, with the help of the SIF_MorePackets and SIF_PacketNumber element in each incoming SIF_ServiceOutput message, will be able to interpret and process each SIF_ServiceOutput as part of a complete response to a previous SIF_ServiceInput.

 
xs:unsignedInt
 SIF_MorePacketsM

This element provides an indication as to whether there are more packets besides this one to make up a complete response. The value of this element can only be "Yes" or "No".

The necessity of this element stems from the requirement on an agent to break response data to fit into the SIF_MaxBufferSize provided in the SIF_ServiceInput. Agents may also break response data into multiple packets for the benefit of improving performance or for circumventing limitations of the underlying network infrastructure.

When this element's value is equal to "No", it is an indication from the sender to the receiver that it has already sent out all the packets that make up a complete response for a SIF_ServiceInput as indicated by the SIF_ServiceMsgId element.

 
values:
Yes
No
 SIF_ErrorC

This element allows the Responder to report an error condition that occurs while processing the SIF_ServiceInput.

If a SIF_Error element is present, the requesting agent must not expect to receive further SIF_ServiceOutputs to the SIF_ServiceInput.

 
SIF_Error
 SIF_BodyC

SIF_Body contains a single child element that has a name composed of the value of the SIF_Operation element concatenated with the string "Response". For example a SIF Zone Service Operation with the name "GetWeather" would have in it’s response SIF_Body a single child element with the name "GetWeatherResponse". The structure of this element is defined by the XML Schema that is defined for the Service.

 
ExtendedContentType
Table 5.2.22-1: SIF_ServiceOutput
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_ServiceOutput> <SIF_Header> <SIF_MsgId>1BCD10580EF250789012AC0554321EA2</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>NWS</SIF_SourceId> <SIF_DestinationId>ElectronicMarquee</SIF_DestinationId> </SIF_Header> <SIF_ServiceMsgId>FE1078BA3261545A319059376B3A4898</SIF_ServiceMsgId> <SIF_PacketNumber>1</SIF_PacketNumber> <SIF_MorePackets>No</SIF_MorePackets> <SIF_Body> <GetForecastResponse> <Sun>Plenty</Sun> <Rain>None</Rain> <Recommendation>Go To the Beach</Recommendation> </GetForecastResponse> </SIF_Body> </SIF_ServiceOutput> </SIF_Message>
Example 5.2.22-2: SIF_ServiceInput

5.2.23 SIF_ServiceNotify

SIF_ServiceNotify is a message definition used to deliver service events.

SIF_ServiceNotify messages SHOULD not be sent higher than 64K unless the service knows that all subscribers can accept a higher max buffer size.

Therefore, the size of a SIF_ServiceNotify message SHOULD be less than or equal 65,536 bytes, unless one of the following is true:

  1. The SIF Zone Service is defined as requiring a larger buffer size for unsolicited messages. If that is the case, then the size specified in the SIF Zone Service definition becomes the maximum allowable buffer size.
  2. The Service publisher has determined that a higher buffer size is supported by all of the subscribers of the service, either through static configuration by the zone administrator or dynamically at runtime by examination of SIF_ZoneStatus.

Figure 5.2.23-1: SIF_ServiceNotify SIF_ServiceNotify SIF_Header SIF_Service SIF_Operation SIF_ServiceMsgId SIF_PacketNumber SIF_MorePackets SIF_Error SIF_Body
 Element/@AttributeCharDescriptionType
 SIF_ServiceNotifyM

SIF_ServiceNotify is used to deliver notifications to service clients that some state associated with the service has changed.

 
 
 SIF_HeaderM

Header information associated with this message.

 
SIF_Header
 SIF_ServiceM

The name of the SIF Zone Service that initiated the event

 
xs:normalizedString
 SIF_OperationM

The name of the notification message being sent

 
xs:normalizedString
 SIF_ServiceMsgIdM

A unique IdRefType that has been assigned to this series of messages. All SIF_ServiceNotify messages that contain this ID correspond to the same event instance.

 
GUIDType
 SIF_PacketNumberM

This element represents the index of the SIF_ServiceNotify message in the sequence of packets that make up a complete notification message stream. Its value must be in the range of 1 through n, with n equal to the total number of packets that make up the message stream.

The receiver of a SIF_ServiceNotify message, with the help of the SIF_MorePackets and SIF_PacketNumber element in each incoming SIF_ServiceNotify message, will be able to interpret and process each SIF_ServiceNotify as part of a complete message.

 
xs:unsignedInt
 SIF_MorePacketsM

This element provides an indication as to whether there are more packets besides this one to make up a complete notification message stream. The value of this element can only be "Yes" or "No".

The necessity of this element stems from the requirement on an agent to break the notification message stream to fit into the SIF_MaxBufferSize specified for the service. Agents may also break the message stream into multiple packets for the benefit of improving performance or for circumventing limitations of the underlying network infrastructure.

When this element's value is equal to "No", it is an indication from the sender to the receiver that it has already sent out all of the packets.

 
values:
Yes
No
 SIF_ErrorC

The agent creates either a SIF_Error or SIF_Body element. The SIF_Error element allows the agent that creating the notification to report an error condition that occurs while creating the SIF_ServiceNotify. Reporting a SIF_Error in SIF_ServiceNotify is normally only expected if one or more packets have already been sent so that the receiving agent is aware that an error has occurred that will halt the notification message packets. However, a SIF Zone Service definition may define other valid reasons for sending a SIF_Error as the first packet of a SIF_ServiceNotify message.

If a SIF_Error element is present, the receiver must not expect to receive further SIF_ServiceNotify messages as part of this message stream.

 
SIF_Error
 SIF_BodyC

SIF_Body contains a single child element that has the same name as the value of the SIF_Operation element. The structure of this element is defined by the XML Schema that is defined for the Service.

 
ExtendedContentType
Table 5.2.23-1: SIF_ServiceNotify
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/uk/infrastructure/2.x"> <SIF_ServiceNotify> <SIF_Header> <SIF_MsgId>1BCD10580EF250789012AC0554321EA2</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>FoodServiceAgent</SIF_SourceId> </SIF_Header> <SIF_Service>Student Information System</SIF_Service> <SIF_Operation>StudentTransfer</SIF_Operation> <SIF_ServiceMsgId>FE1078BA3261545A319059376B3A4898</SIF_ServiceMsgId> <SIF_PacketNumber>1</SIF_PacketNumber> <SIF_MorePackets>No</SIF_MorePackets> <SIF_Body> <StudentTransfer> <AuditInfo> <EnteredBy>sif://StaffPersonal[@RefId=’9...12’]</EnteredBy> </AuditInfo> <StudentPersonal RefId="D3E34B359D75101A8C3D00AA001A1652" /> <PreviousEnrollment> <StudentSchoolEnrollment RefId="DFEAD3E34B359D75101D00AA001A1652" /> </PreviousEnrollment> <CurrentEnrollment> <StudentSchoolEnrollment RefId="A8C3D3E34B359D75101D00AA001A1652" /> </CurrentEnrollment> </StudentTransfer> </SIF_Body> </SIF_ServiceNotify> </SIF_Message>
Example 5.2.23-2: SIF_ServiceNotify

5.3 Objects

5.3.1 SIF_AgentACL

This object provides an Agent its access control list (ACL) settings in the Zone. It does not communicate which objects the Agent is currently registered as providing, subscribing, publishing, requesting, or responding; it simply lists the ACL rights granted to the Agent in the Zone. When objects are absent from any of the access lists, the Agent does not have the necessary rights to perform the given action on the object. While an Agent may asynchronously request this object from the ZIS via SIF_Request, it is typically returned synchronously in response to the SIF_SystemControl message SIF_GetAgentACL; it is also returned synchronously in response to SIF_Register.

Typically only Change events are reported.

Figure 5.3.1-1: SIF_AgentACL SIF_AgentACL SIF_ProvideAccess SIF_Object ObjectName SIF_Contexts SIF_SubscribeAccess SIF_Object ObjectName SIF_Contexts SIF_PublishAddAccess SIF_Object ObjectName SIF_Contexts SIF_PublishChangeAccess SIF_Object ObjectName SIF_Contexts SIF_PublishDeleteAccess SIF_Object ObjectName SIF_Contexts SIF_RequestAccess SIF_Object ObjectName SIF_Contexts SIF_RespondAccess SIF_Object ObjectName SIF_Contexts SIF_ProvideService SIF_Service ServiceName SIF_Contexts SIF_RespondService SIF_Service ServiceName SIF_Contexts SIF_RequestService SIF_Service ServiceName SIF_Contexts SIF_Operations SIF_Operation SIF_SubscribeService SIF_Service ServiceName SIF_Contexts SIF_Operations SIF_Operation SIF_Metadata SIF_ExtendedElements
 Element/@AttributeCharDescriptionType
 SIF_AgentACL 

This object provides an Agent its access control list (ACL) settings in the Zone.

 
 
 SIF_ProvideAccessM

Access control list by object for SIF_Provide and corresponding section in SIF_Provision.

 
List
 SIF_ProvideAccess/SIF_Object
     
OR  
@ObjectNameM

The name of each object.

 
ObjectNameType
 SIF_ProvideAccess/SIF_Object/
     SIF_Contexts
M

List of contexts in which rights for the given action/object apply.

 
SIF_Contexts
 SIF_SubscribeAccessM

Access control list by object for SIF_Subscribe and corresponding section in SIF_Provision.

 
List
 SIF_SubscribeAccess/SIF_Object
     
OR  
@ObjectNameM

The name of each object.

 
ObjectNameType
 SIF_SubscribeAccess/SIF_Object/
     SIF_Contexts
M

List of contexts in which rights for the given action/object apply.

 
SIF_Contexts
 SIF_PublishAddAccessM

Access control list by object for corresponding section in SIF_Provision, whether the Agent has the right to publish Add events.

 
List
 SIF_PublishAddAccess/SIF_Object
     
OR  
@ObjectNameM

The name of each object.

 
ObjectNameType
 SIF_PublishAddAccess/SIF_Object/
     SIF_Contexts
M

List of contexts in which rights for the given action/object apply.

 
SIF_Contexts
 SIF_PublishChangeAccessM

Access control list by object for corresponding section in SIF_Provision, whether the Agent has the right to publish Change events.

 
List
 SIF_PublishChangeAccess/SIF_Object
     
OR  
@ObjectNameM

The name of each object.

 
ObjectNameType
 SIF_PublishChangeAccess/SIF_Object/
     SIF_Contexts
M

List of contexts in which rights for the given action/object apply.

 
SIF_Contexts
 SIF_PublishDeleteAccessM

Access control list by object for corresponding section in SIF_Provision, whether the Agent has the right to publish Delete events.

 
List
 SIF_PublishDeleteAccess/SIF_Object
     
OR  
@ObjectNameM

The name of each object.

 
ObjectNameType
 SIF_PublishDeleteAccess/SIF_Object/
     SIF_Contexts
M

List of contexts in which rights for the given action/object apply.

 
SIF_Contexts
 SIF_RequestAccessM

Access control list by object for SIF_Request and corresponding section in SIF_Provision.

 
List
 SIF_RequestAccess/SIF_Object
     
OR  
@ObjectNameM

The name of each object.

 
ObjectNameType
 SIF_RequestAccess/SIF_Object/
     SIF_Contexts
M

List of contexts in which rights for the given action/object apply.

 
SIF_Contexts
 SIF_RespondAccessM

Access control list by object for corresponding section in SIF_Provision, whether the Agent has the right to respond to requests for an object regardless of being the Provider of that object.

 
List
 SIF_RespondAccess/SIF_Object
     
OR  
@ObjectNameM

The name of each object.

 
ObjectNameType
 SIF_RespondAccess/SIF_Object/
     SIF_Contexts
M

List of contexts in which rights for the given action/object apply.

 
SIF_Contexts
 SIF_ProvideServiceM

Indicates that the recipient agent has permission to provide one or more services to the SIF Zone

 
List
 SIF_ProvideService/SIF_Service
     
OR  
@ServiceNameM

The name of the SIF Zone Service as defined by a SIF Zone Service specification

 
xs:token
 SIF_ProvideService/SIF_Service/
     SIF_Contexts
M

List of contexts in which rights for the given action/service apply.

 
SIF_Contexts
 SIF_RespondServiceM

Indicates that the recipient agent has permission to respond to directed requests for one or more services in the SIF Zone

 
List
 SIF_RespondService/SIF_Service
     
OR  
@ServiceNameM

The name of the SIF Zone Service as defined by a SIF Zone Service specification

 
xs:token
 SIF_RespondService/SIF_Service/
     SIF_Contexts
M

List of contexts in which rights for the given action/service apply.

 
SIF_Contexts
 SIF_RequestServiceM

Indicates that the recipient agent has permission to make service calls to a SIF Zone Service

 
List
 SIF_RequestService/SIF_Service
     
OR  
@ServiceNameM

The name of the SIF Zone Service as defined by a SIF Zone Service specification

 
xs:token
 SIF_RequestService/SIF_Service/
     SIF_Contexts
M

List of contexts in which rights for the given action/service apply.

 
SIF_Contexts
 SIF_RequestService/SIF_Service/
     SIF_Operations
O

If SIF_Operations is not present, then the agent has permission to invoke all operations in the specified service.

 
List
 SIF_RequestService/SIF_Service/
     SIF_Operations/SIF_Operation
     
MR

A specific operation that the agent has permission to invoke or subscribe to

 
xs:token
 SIF_SubscribeServiceM

Indicates that the recipient agent has permission to subscribe to notification messages that are emitted from a SIF Service

 
List
 SIF_SubscribeService/SIF_Service
     
OR  
@ServiceNameM

The name of the SIF Zone Service as defined by a SIF Zone Service specification

 
xs:token
 SIF_SubscribeService/SIF_Service/
     SIF_Contexts
M

List of contexts in which rights for the given action/service apply.

 
SIF_Contexts
 SIF_SubscribeService/SIF_Service/
     SIF_Operations
O

If SIF_Operations is not present, then the agent has permission to subcribe to all notifications in the specified service .

 
List
 SIF_SubscribeService/SIF_Service/
     SIF_Operations/SIF_Operation
     
MR

A specific operation that the agent has permission to invoke or subscribe to

 
xs:token
 SIF_MetadataO SIF_Metadata
 SIF_ExtendedElementsO SIF_ExtendedElements
Table 5.3.1-1: SIF_AgentACL
<SIF_AgentACL> <SIF_ProvideAccess> <SIF_Object ObjectName="LearnerPersonal"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_ProvideAccess> <SIF_SubscribeAccess> <SIF_Object ObjectName="WorkforcePersonal"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_SubscribeAccess> <SIF_PublishAddAccess> <SIF_Object ObjectName="LearnerPersonal"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_PublishAddAccess> <SIF_PublishChangeAccess> <SIF_Object ObjectName="LearnerPersonal"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_PublishChangeAccess> <SIF_PublishDeleteAccess> <SIF_Object ObjectName="LearnerPersonal"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_PublishDeleteAccess> <SIF_RequestAccess> <SIF_Object ObjectName="WorkforcePersonal"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_RequestAccess> <SIF_RespondAccess> <SIF_Object ObjectName="LearnerPersonal"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_RespondAccess> </SIF_AgentACL>
Example 5.3.1-2: SIF_AgentACL

5.3.2 SIF_LogEntry

This object captures an occurrence within a SIF node (ZIS or agent)—error, warning or information—for storage in an optionally provided zone log. SIF_LogEntry Adds are reported and are used to post new log entries to the provider of the log. Of course, subscribing agents may also filter incoming Adds as part of their own logging mechanism. Any Change or Delete SIF_Events should be ignored at the agent level, but should be routed by the ZIS (though this should not be necessary). Use of the log is optional and voluntary, except where noted as mandatory in this specification. Nodes may post as much or as little log data as required with the expectation that if there is a provider of SIF_LogEntry that the logged entries be available for a provider-defined amount of time subject to provider-defined restrictions on the quantity of data logged by any given node.

SIF_Events are reported for this object.

Figure 5.3.2-1: SIF_LogEntry SIF_LogEntry Source LogLevel SIF_LogEntryHeader SIF_Header SIF_OriginalHeader SIF_Header SIF_Category SIF_Code SIF_ApplicationCode SIF_Desc SIF_ExtendedDesc SIF_LogObjects SIF_LogObject SIF_Metadata SIF_ExtendedElements
 Element/@AttributeCharDescriptionType
 SIF_LogEntry 

This object captures an occurrence within a SIF node (ZIS or agent)—error, warning or information—for storage in an optionally provided zone log. SIF_LogEntry Adds are reported and are used to post new log entries to the provider of the log. Of course, subscribing agents may also filter incoming Adds as part of their own logging mechanism. Any Change or Delete SIF_Events should be ignored at the agent level, but should be routed by the ZIS (though this should not be necessary). Use of the log is optional and voluntary, except where noted as mandatory in this specification. Nodes may post as much or as little log data as required with the expectation that if there is a provider of SIF_LogEntry that the logged entries be available for a provider-defined amount of time subject to provider-defined restrictions on the quantity of data logged by any given node.

 
 
@SourceM

The SIF node that logged this entry.

 
values:
Agent
ZIS
@LogLevelM

The level of the log entry herein described.

 
values:
Info
Warning
Error
 SIF_LogEntryHeaderM

This is a copy of the SIF_Event/SIF_Header in the message that added this SIF_LogEntry to the zone. This copy facilitates querying log entries with regard to source, time, optionally destination, etc.

 
 
 SIF_LogEntryHeader/SIF_Header
     
M SIF_Header
 SIF_OriginalHeaderO

If this log entry references a previous SIF_Message, this element contains a copy of the referenced message's SIF_Header.

 
 
 SIF_OriginalHeader/SIF_Header
     
M SIF_Header
 SIF_CategoryC

A SIF_LogEntry category. May be omitted for informational-type postings, where typically a textual description will suffice.

Note that categories may be combined with the Source attribute of SIF_LogEntry to differentiate agent error conditions from ZIS error conditions.

 
values:
1
Success
2
Data Issues with Success Result
3
Data Issues with Failure Result
4
Error Conditions
 SIF_CodeO

A SIF_LogEntry code with regard to SIF_Category above. May be omitted for informational-type postings, where typically a textual description will suffice. If a SIF_Code is included, SIF_Category must be included as well.

 
union of:

SIF_LogEntrySuccessCategoryType
SIF_LogEntryDataIssuesWithSuccessResultType
SIF_LogEntryDataIssuesWithFailureResultType
SIF_LogEntryAgentErrorConditionType
SIF_LogEntryZISErrorConditionType
 SIF_ApplicationCodeO

An error code specific to the application posting the entry. Can be used by vendors to query log entries for errors specific to their applications. If a SIF_ApplicationCode is included, SIF_Category must be included as well; i.e., application-specific error codes should fall within one of the defined log entry categories.

 
xs:normalizedString
xs:maxLength64
 SIF_DescM

A textual description of the error.

 
xs:string
xs:maxLength1024
 SIF_ExtendedDescO

Any extended error description.

 
xs:string
 SIF_LogObjectsO List
 SIF_LogObjects/SIF_LogObject
     
MR

Any SIF data objects to which this log entry may apply.

 
<xs:complexType> <xs:sequence> <xs:any processContents="skip" /> </xs:sequence> <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType" /> </xs:complexType>
@ObjectNameM

The name of the SIF object referenced (e.g. LearnerPersonal).

 
SIF_RequestObjectNamesType
 SIF_MetadataO SIF_Metadata
 SIF_ExtendedElementsO SIF_ExtendedElements
Table 5.3.2-1: SIF_LogEntry
<SIF_LogEntry Source="Agent" LogLevel="Error"> <SIF_LogEntryHeader> <SIF_Header> <SIF_MsgId>83252CE5C5F14FD88607F645224E4CAA</SIF_MsgId> <SIF_Timestamp>2006-08-19T10:36:00-05:00</SIF_Timestamp> <SIF_SourceId>RamseySISAgent</SIF_SourceId> </SIF_Header> </SIF_LogEntryHeader> <SIF_Category>4</SIF_Category> <SIF_Code>1</SIF_Code> <SIF_Desc>Agent has run out of memory and will shut down</SIF_Desc> <SIF_ExtendedDesc>OutOfMemoryException: ...</SIF_ExtendedDesc> </SIF_LogEntry>
Example 5.3.2-1: SIF_LogEntry when an agent encounters a system failure
<SIF_LogEntry Source="Agent" LogLevel="Error"> <SIF_LogEntryHeader> <SIF_Header> <SIF_MsgId>BA86894B795A4EB7A45093AD1CDBA54C</SIF_MsgId> <SIF_Timestamp>2006-08-19T10:39:00-05:00</SIF_Timestamp> <SIF_SourceId>RamseySISAgent</SIF_SourceId> </SIF_Header> </SIF_LogEntryHeader> <SIF_OriginalHeader> <SIF_Header> <SIF_MsgId>74234DCB460A4BCB8937B07467EA73CC</SIF_MsgId> <SIF_Timestamp>2006-08-19T10:29:00-05:00</SIF_Timestamp> <SIF_SourceId>RamseyLibraryAgent</SIF_SourceId> </SIF_Header> </SIF_OriginalHeader> <SIF_Category>3</SIF_Category> <SIF_Code>2</SIF_Code> <SIF_ApplicationCode>-33</SIF_ApplicationCode> <SIF_Desc>Could not delete student Sonya Harris due to business rule</SIF_Desc> <SIF_LogObjects> <SIF_LogObject ObjectName="LearnerPersonal"> <LearnerPersonal RefId="53E6F4C0109FDE4DC7E11DB9C0100163"> <LocalId>032134</LocalId> <PersonalInformation> <Name Type="B"> <FamilyName>Harris</FamilyName> <GivenName>Sonya</GivenName> <PreferredFamilyName>Harris</PreferredFamilyName> <PreferredGivenName>Sonya</PreferredGivenName> </Name> <Demographics> <EthnicityList> <Ethnicity> <Code>WENG</Code> <Source>P</Source> </Ethnicity> </EthnicityList> <Gender>F</Gender> <BirthDate>1990-06-23</BirthDate> <LanguageList> <Language> <Code>ENG</Code> <TypeList> <Type>F</Type> </TypeList> </Language> </LanguageList> </Demographics> <Email Type="School">sonya.harris@myschool.co.uk</Email> <Address Type="Current"> <PAON> <StartNumber>17</StartNumber> </PAON> <Street>Bushmaster Close</Street> <Town>Castle Vale</Town> <AdministrativeArea>Birmingham</AdministrativeArea> <PostCode>B35 7PH</PostCode> <Country>GBR</Country> </Address> </PersonalInformation> <UPN>F330950043367</UPN> <UPNAllocationDate>2001-08-27</UPNAllocationDate> <FormerUPNList> <UPN>C936846321107</UPN> </FormerUPNList> <ULN>1234567890</ULN> <FamilyStructure>A</FamilyStructure> <InCare> <Current>No</Current> <Type>WP</Type> <LAId>330</LAId> <AtCurrentSchool>Yes</AtCurrentSchool> <PersonalEducationPlan>No</PersonalEducationPlan> </InCare> <ConnexionsAgreement>Yes</ConnexionsAgreement> <ChildProtectionRegister> <IsRegistered>Yes</IsRegistered> <LAId>330</LAId> <SiblingRegistered>No</SiblingRegistered> </ChildProtectionRegister> <GiftedTalented>No</GiftedTalented> <HomeLA>330</HomeLA> <LearnerIdentity>ENG</LearnerIdentity> <Pregnant>No</Pregnant> <SiblingList> <Sibling> <LearnerPersonalRefId>6219B1684CF9B799640234CBB9992134</LearnerPersonalRefId> <UIPI>034887</UIPI> </Sibling> </SiblingList> <UniformAllowance>No</UniformAllowance> <CurrentSchoolEnrolment LearnerSchoolEnrolmentRefId="010C6038DC7E11DB9C010016353E6F4C"> <LAId>330</LAId> <EstablishmentId>5530</EstablishmentId> <NCYearGroup>9</NCYearGroup> </CurrentSchoolEnrolment> <PreviousEstablishmentList> <PreviousEstablishment> <EstablishmentId>2117</EstablishmentId> <EstablishmentName>Allbury Primary School</EstablishmentName> <LAId>936</LAId> <EntryDate>1999-08-20</EntryDate> <ExitDate>2001-06-14</ExitDate> <ExitType>MS</ExitType> <LastSchool>Yes</LastSchool> </PreviousEstablishment> </PreviousEstablishmentList> </LearnerPersonal> </SIF_LogObject> </SIF_LogObjects> </SIF_LogEntry>
Example 5.3.2-2: SIF_LogEntry when an agent fails to delete a student
<SIF_LogEntry Source="Agent" LogLevel="Info"> <SIF_LogEntryHeader> <SIF_Header> <SIF_MsgId>64B0CC6CFB314A328E520A102229CBC8</SIF_MsgId> <SIF_Timestamp>2006-08-19T10:46:00-05:00</SIF_Timestamp> <SIF_SourceId>RamseySISAgent</SIF_SourceId> </SIF_Header> </SIF_LogEntryHeader> <SIF_Desc>Agent starting synchronisation</SIF_Desc> </SIF_LogEntry>
Example 5.3.2-3: SIF_LogEntry when an agent starts synchronizing data
<SIF_LogEntry Source="ZIS" LogLevel="Error"> <SIF_LogEntryHeader> <SIF_Header> <SIF_MsgId>BC1D982CEC5F49D998169930FE5B271C</SIF_MsgId> <SIF_Timestamp>2006-08-19T10:49:00-05:00</SIF_Timestamp> <SIF_SourceId>RamseyZIS</SIF_SourceId> </SIF_Header> </SIF_LogEntryHeader> <SIF_OriginalHeader> <SIF_Header> <SIF_MsgId>74234DCB460A4BCB8937B07467EA73CC</SIF_MsgId> <SIF_Timestamp>2006-08-19T10:29:00-05:00</SIF_Timestamp> <SIF_SourceId>RamseyLibraryAgent</SIF_SourceId> </SIF_Header> </SIF_OriginalHeader> <SIF_Category>4</SIF_Category> <SIF_Code>2</SIF_Code> <SIF_Desc>Could not deliver PersonPicture Add to RamseyLibraryAgent (127,546 bytes) due to maximum buffer size of 16,384 bytes.</SIF_Desc> </SIF_LogEntry>
Example 5.3.2-4: SIF_LogEntry when a ZIS fails to deliver a message due to buffer size limitations

5.3.3 SIF_ZoneStatus

The SIF_ZoneStatus object is an object that is implicitly provided by all Zone Integration Servers to provide information about the ZIS. Zone Integration Servers MUST provide this object.

Change events are supported on SIF_ZoneStatus.

Figure 5.3.3-1: SIF_ZoneStatus SIF_ZoneStatus ZoneId SIF_Name SIF_Icon SIF_Vendor SIF_Name SIF_Product SIF_Version SIF_Providers SIF_Provider SourceId SIF_ObjectList SIF_Object ObjectName SIF_ExtendedQuerySupport SIF_Contexts SIF_Subscribers SIF_Subscriber SourceId SIF_ObjectList SIF_Object ObjectName SIF_Contexts SIF_AddPublishers SIF_Publisher SourceId SIF_ObjectList SIF_Object ObjectName SIF_Contexts SIF_ChangePublishers SIF_Publisher SourceId SIF_ObjectList SIF_Object ObjectName SIF_Contexts SIF_DeletePublishers SIF_Publisher SourceId SIF_ObjectList SIF_Object ObjectName SIF_Contexts SIF_Responders SIF_Responder SourceId SIF_ObjectList SIF_Object ObjectName SIF_ExtendedQuerySupport SIF_Contexts SIF_Requesters SIF_Requester SourceId SIF_ObjectList SIF_Object ObjectName SIF_ExtendedQuerySupport SIF_Contexts SIF_SIFNodes SIF_SIFNode Type SIF_Name SIF_Icon SIF_NodeVendor SIF_NodeVersion SIF_Application SIF_Vendor SIF_Product SIF_Version SIF_SourceId SIF_Mode SIF_Protocol SIF_VersionList SIF_Version SIF_AuthenticationLevel SIF_EncryptionLevel SIF_MaxBufferSize SIF_Sleeping SIF_SupportedAuthentication SIF_ProtocolName SIF_SupportedProtocols SIF_Protocol SIF_SupportedVersions SIF_Version SIF_AdministrationURL SIF_Contexts SIF_ServiceProviders SIF_ServiceProvider SourceId SIF_ServiceList SIF_Service ServiceName SIF_Contexts SIF_ServiceResponders SIF_ServiceResponder SourceId SIF_ServiceList SIF_Service ServiceName SIF_Contexts SIF_ServiceRequesters SIF_ServiceRequester SourceId SIF_ServiceList SIF_Service ServiceName SIF_Operations SIF_Operation SIF_Contexts SIF_ServiceSubscribers SIF_ServiceSubscriber SourceId SIF_ServiceList SIF_Service ServiceName SIF_Operations SIF_Operation SIF_Contexts SIF_Metadata SIF_ExtendedElements
 Element/@AttributeCharDescriptionType
 SIF_ZoneStatus 

The SIF_ZoneStatus object is an object that is implicitly provided by all Zone Integration Servers to provide information about the ZIS. Zone Integration Servers MUST provide this object.

 
 
@
key
ZoneIdM

The identifier for this Zone. It is the same as the SIF_SourceId that the ZIS would place in any SIF_Header that it creates.

 
xs:token
 SIF_NameM

The descriptive name for the zone.

 
xs:normalizedString
 SIF_IconO

HTTP URL referencing an icon for graphical representation of the ZIS/Zone. Should range from 16x16 pixels to 128x128 pixels and be of an image MIME type commonly supported by Web browsers (e.g. PNG, JPEG, GIF). Agents may optionally follow the more restrictive guidelines at [FAVICON].

 
xs:anyURI
 SIF_VendorO

Contains information about the vendor that wrote this ZIS.

 
 
 SIF_Vendor/SIF_NameM

The name of the company that wrote the ZIS.

 
xs:normalizedString
 SIF_Vendor/SIF_ProductM

The product name assigned by the vendor to identify this ZIS.

 
xs:normalizedString
 SIF_Vendor/SIF_VersionM

The version of the vendor's product—not necessarily the SIF version.

 
xs:normalizedString
 SIF_ProvidersC

Encompasses all the providers registered with this ZIS. This element is mandatory if there are providers registered with the ZIS.

 
List
 SIF_Providers/SIF_Provider
     
MR  
@SourceIdM

The identifier of the SIF node that is providing objects. This is the agent or ZIS identifier that would appear in the SIF_SourceId field of any SIF_Header created by the SIF node.

 
xs:token
xs:maxLength64
 SIF_Providers/SIF_Provider/
     SIF_ObjectList
M List
 SIF_Providers/SIF_Provider/
     SIF_ObjectList/SIF_Object
     
MR  
@ObjectNameM

The name of the object being provided by this SIF node.

 
ObjectNameType
 SIF_Providers/SIF_Provider/
     SIF_ObjectList/SIF_Object/
     SIF_ExtendedQuerySupport
M xs:boolean
 SIF_Providers/SIF_Provider/
     SIF_ObjectList/SIF_Object/
     SIF_Contexts
M SIF_Contexts
 SIF_SubscribersC

Encompasses all the subscribers registered with this ZIS. This element is mandatory if there are subscribers registered with the ZIS.

 
List
 SIF_Subscribers/SIF_Subscriber
     
MR  
@SourceIdM

The identifier of the SIF node that is subscribing to the object events. This is the agent or ZIS identifier that would appear in the SIF_SourceId field of any SIF_Header created by the SIF node.

 
xs:token
xs:maxLength64
 SIF_Subscribers/SIF_Subscriber/
     SIF_ObjectList
M List
 SIF_Subscribers/SIF_Subscriber/
     SIF_ObjectList/SIF_Object
     
MR  
@ObjectNameM

The name of the object being subscribed to by this SIF node.

 
ObjectNameType
 SIF_Subscribers/SIF_Subscriber/
     SIF_ObjectList/SIF_Object/
     SIF_Contexts
M SIF_Contexts
 SIF_AddPublishersC

Encompasses all the Add SIF_Event publishers registered with this zone.

 
List
 SIF_AddPublishers/SIF_Publisher
     
MR  
@SourceIdM

The identifier of the SIF node that can publish the SIF_Event. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.

 
xs:token
xs:maxLength64
 SIF_AddPublishers/SIF_Publisher/
     SIF_ObjectList
M List
 SIF_AddPublishers/SIF_Publisher/
     SIF_ObjectList/SIF_Object
     
MR  
@ObjectNameM

The name of the object being published by this agent.

 
ObjectNameType
 SIF_AddPublishers/SIF_Publisher/
     SIF_ObjectList/SIF_Object/
     SIF_Contexts
M SIF_Contexts
 SIF_ChangePublishersC

Encompasses all the Change SIF_Event publishers registered with this zone.

 
List
 SIF_ChangePublishers/SIF_Publisher
     
MR  
@SourceIdM

The identifier of the SIF node that can publish the SIF_Event. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.

 
xs:token
xs:maxLength64
 SIF_ChangePublishers/SIF_Publisher/
     SIF_ObjectList
M List
 SIF_ChangePublishers/SIF_Publisher/
     SIF_ObjectList/SIF_Object
     
MR  
@ObjectNameM

The name of the object being published by this agent.

 
ObjectNameType
 SIF_ChangePublishers/SIF_Publisher/
     SIF_ObjectList/SIF_Object/
     SIF_Contexts
M SIF_Contexts
 SIF_DeletePublishersC

Encompasses all the Delete SIF_Event publishers registered with this zone.

 
List
 SIF_DeletePublishers/SIF_Publisher
     
MR  
@SourceIdM

The identifier of the SIF node that can publish the SIF_Event. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.

 
xs:token
xs:maxLength64
 SIF_DeletePublishers/SIF_Publisher/
     SIF_ObjectList
M List
 SIF_DeletePublishers/SIF_Publisher/
     SIF_ObjectList/SIF_Object
     
MR  
@ObjectNameM

The name of the object being published by this agent.

 
ObjectNameType
 SIF_DeletePublishers/SIF_Publisher/
     SIF_ObjectList/SIF_Object/
     SIF_Contexts
M SIF_Contexts
 SIF_RespondersC

Encompasses all the responders registered with this zone.

 
List
 SIF_Responders/SIF_Responder
     
MR  
@SourceIdM

The identifier of the SIF node that can respond. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.

 
xs:token
xs:maxLength64
 SIF_Responders/SIF_Responder/
     SIF_ObjectList
M List
 SIF_Responders/SIF_Responder/
     SIF_ObjectList/SIF_Object
     
MR  
@ObjectNameM

The name of the object for which the agent can respond to requests.

 
ObjectNameType
 SIF_Responders/SIF_Responder/
     SIF_ObjectList/SIF_Object/
     SIF_ExtendedQuerySupport
M xs:boolean
 SIF_Responders/SIF_Responder/
     SIF_ObjectList/SIF_Object/
     SIF_Contexts
M SIF_Contexts
 SIF_RequestersC

Encompasses all the requesters registered with this zone.

 
List
 SIF_Requesters/SIF_Requester
     
MR  
@SourceIdM

The identifier of the SIF node that can request an object. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.

 
xs:token
xs:maxLength64
 SIF_Requesters/SIF_Requester/
     SIF_ObjectList
M List
 SIF_Requesters/SIF_Requester/
     SIF_ObjectList/SIF_Object
     
MR  
@ObjectNameM

The name of the object being requested by this agent.

 
ObjectNameType
 SIF_Requesters/SIF_Requester/
     SIF_ObjectList/SIF_Object/
     SIF_ExtendedQuerySupport
M xs:boolean
 SIF_Requesters/SIF_Requester/
     SIF_ObjectList/SIF_Object/
     SIF_Contexts
M SIF_Contexts
 SIF_SIFNodesC

Encompasses all of the nodes registered with the ZIS. This element is mandatory if there are SIF nodes registered.

 
List
 SIF_SIFNodes/SIF_SIFNodeMR  
@TypeM

The type of the node registered with the ZIS. Note that ZIS is forward-looking and not used currently; all information about this Zone/ZIS is contained outside SIF_SIFNodes.

 
values:
Agent
ZIS
 SIF_SIFNodes/SIF_SIFNode/
     SIF_Name
M

The descriptive name of the SIF node (i.e. Ramsey Food Services).

 
xs:normalizedString
 SIF_SIFNodes/SIF_SIFNode/
     SIF_Icon
O

HTTP URL referencing an icon for graphical representation of the application/agent. Should range from 16x16 pixels to 128x128 pixels and be of an image MIME type commonly supported by Web browsers (e.g. PNG, JPEG, GIF). Agents may optionally follow the more restrictive guidelines at [FAVICON].

 
xs:anyURI
 SIF_SIFNodes/SIF_SIFNode/
     SIF_NodeVendor
O

The vendor of the SIF agent.

 
xs:normalizedString
xs:maxLength256
 SIF_SIFNodes/SIF_SIFNode/
     SIF_NodeVersion
O

The agent version number. The format of this field is undefined, but it should match the format used in the agent's conformance statement, if the agent is SIF Certified.

Examples
2.0.1.11

xs:normalizedString
xs:maxLength32
 SIF_SIFNodes/SIF_SIFNode/
     SIF_Application
O

Contains information about the vendor of the product that the agent represents.

 
 
 SIF_SIFNodes/SIF_SIFNode/
     SIF_Application/SIF_Vendor
     
M

The name of the company of the product that this agent supports.

 
xs:normalizedString
xs:maxLength256
 SIF_SIFNodes/SIF_SIFNode/
     SIF_Application/SIF_Product
     
M

The name of the product that this agent supports.

 
xs:normalizedString
xs:maxLength256
 SIF_SIFNodes/SIF_SIFNode/
     SIF_Application/SIF_Version
     
M

The version of the product. This field is informative only.

 
xs:normalizedString
xs:maxLength32
 SIF_SIFNodes/SIF_SIFNode/
     SIF_SourceId
M

The agent or ZIS identifier. This is the same value that the SIF node would place in any SIF_Header that it would create.

 
xs:token
xs:maxLength64
 SIF_SIFNodes/SIF_SIFNode/
     SIF_Mode
M

Specifies the communication mode (Pull or Push) as chosen by the message sender.

 
values:
Push
Pull
 SIF_SIFNodes/SIF_SIFNode/
     SIF_Protocol
O

Describes the currently active protocol that the SIF node is using to communicate with the ZIS.

 
SIF_Protocol
 SIF_SIFNodes/SIF_SIFNode/
     SIF_VersionList
M List
 SIF_SIFNodes/SIF_SIFNode/
     SIF_VersionList/SIF_Version
     
MR

This is the version or versions of the SIF Implementation Specification that define(s) the messages the SIF node can receive. For agents, this information was communicated when the SIF node registered with the ZIS.

 
VersionWithWildcardsType
 SIF_SIFNodes/SIF_SIFNode/
     SIF_AuthenticationLevel
O

This is the level of authentication that the SIF node supports when it wants to communicate via a secure channel.

 
SIF_AuthenticationLevel
 SIF_SIFNodes/SIF_SIFNode/
     SIF_EncryptionLevel
O

This is the level of encryption that the SIF node supports when it wants to communicate via a secure channel.

 
SIF_EncryptionLevel
 SIF_SIFNodes/SIF_SIFNode/
     SIF_MaxBufferSize
M

Specifies that the ZIS should never send packets larger than this value. Query responses from other providers are controlled by the SIF_MaxBufferSize attribute in the SIF_Request message.

 
xs:unsignedInt
 SIF_SIFNodes/SIF_SIFNode/
     SIF_Sleeping
M

This element shows whether the SIF node is ready to process messages.

 
values:
No
The SIF node is ready to process messages
Yes
The SIF node is sleeping and cannot process messages
 SIF_SupportedAuthenticationC

Enumerates the various authentication protocols that the ZIS supports. If the ZIS supports an authentication protocol this element is mandatory.

 
List
 SIF_SupportedAuthentication/
     SIF_ProtocolName
MR

Describes a particular authentication protocol supported.

 
values:
X.509
 SIF_SupportedProtocolsM

Enumerates the various communication transport protocols that are supported by the ZIS.

 
List
 SIF_SupportedProtocols/SIF_Protocol
     
MR SIF_Protocol
 SIF_SupportedVersionsM

Enumerates the versions of the SIF Implementation Specification that this ZIS can use when communicating with the agent.

 
List
 SIF_SupportedVersions/SIF_Version
     
MR

Lists a specific SIF Implementation Specification version.

 
VersionType
 SIF_AdministrationURLO

Should a ZIS vendor provide an administration interface for the zone via a URL, the ZIS can make the URL available in SIF_ZoneStatus. Agent administrators can use the URL to access zone administration features, should they have permission to do so.

 
xs:anyURI
 SIF_ContextsM SIF_Contexts
 SIF_ServiceProvidersO

 

List
 SIF_ServiceProviders/SIF_ServiceProvider
     
OR

A list of nodes within a SIF Zone that provide one or more SIF Zone Services. The provider of a SIF Zone Service can be a SIF Agent or the Zone Integration Server (ZIS) itself.

 
 
@SourceIdM

The identifier of the SIF node that is providing SIF Services. This is the agent or ZIS identifier that would appear in the SIF_SourceId field of any SIF_Header created by the SIF node.

 
xs:token
 SIF_ServiceProviders/SIF_ServiceProvider/
     SIF_ServiceList
M

The list of services provided by this node

 
List
 SIF_ServiceProviders/SIF_ServiceProvider/
     SIF_ServiceList/SIF_Service
     
MR

 

 
@ServiceName

The name of the SIF Zone Service as defined by a SIF Zone Service specification

 
xs:token
 SIF_ServiceProviders/SIF_ServiceProvider/
     SIF_ServiceList/SIF_Service/
     SIF_Contexts
O

Applicable contexts for stated SIF Zone Service support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_ServiceRespondersO

A list of nodes within a SIF Zone that will respond to SIF_ServiceInput messages for one or more SIF Zone Services. The responder can be a SIF Agent or the Zone Integration Server (ZIS) itself.

 
List
 SIF_ServiceResponders/SIF_ServiceResponder
     
OR

 

 
@SourceIdM

The identifier of the SIF node that is providing SIF Services. This is the agent or ZIS identifier that would appear in the SIF_SourceId field of any SIF_Header created by the SIF node.

 
xs:token
 SIF_ServiceResponders/SIF_ServiceResponder/
     SIF_ServiceList
M

The list of services that will be responded to by this node.

 
List
 SIF_ServiceResponders/SIF_ServiceResponder/
     SIF_ServiceList/SIF_Service
     
MR

 

 
@ServiceName

The name of the SIF Zone Service as defined by a SIF Zone Service specification

 
xs:token
 SIF_ServiceResponders/SIF_ServiceResponder/
     SIF_ServiceList/SIF_Service/
     SIF_Contexts
O

Applicable contexts for stated SIF Zone Service support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_ServiceRequestersOR

A list of nodes within a SIF Zone that will respond to SIF_ServiceInput messages for one or more SIF Zone Services. The responder can be a SIF Agent or the Zone Integration Server (ZIS) itself.

 
List
 SIF_ServiceRequesters/SIF_ServiceRequester
     
OR

 

 
@SourceIdM

The identifier of the SIF node that will respond to SIF_ServiceInput messages. This is the agent or ZIS identifier that would appear in the SIF_SourceId field of any SIF_Header created by the SIF node.

 
xs:token
 SIF_ServiceRequesters/SIF_ServiceRequester/
     SIF_ServiceList
M

The list of services that will be invoked by this node

 
List
 SIF_ServiceRequesters/SIF_ServiceRequester/
     SIF_ServiceList/SIF_Service
     
MR

 

 
@ServiceName

The name of the SIF Zone Service as defined by a SIF Zone Service specification

 
xs:token
 SIF_ServiceRequesters/SIF_ServiceRequester/
     SIF_ServiceList/SIF_Service/
     SIF_Operations
O

The list of operations an agent may invoke on a SIF Zone Service. This information may or may not be known by the ZIS as it is optionally provided by an agent during SIF_Provision.The list of operations an agent may invoke on a SIF Zone Service. This information may or may not be known by the ZIS as it is optionally provided by an agent during SIF_Provision.

 
List
 SIF_ServiceRequesters/SIF_ServiceRequester/
     SIF_ServiceList/SIF_Service/
     SIF_Operations/SIF_Operation
     
MR

A specific operation with a SIF Zone Service that the agent will invoke.

 
xs:token
 SIF_ServiceRequesters/SIF_ServiceRequester/
     SIF_ServiceList/SIF_Service/
     SIF_Contexts
O

 

SIF_Contexts
 SIF_ServiceSubscribersO

 

List
 SIF_ServiceSubscribers/SIF_ServiceSubscriber
     
OR

 

 
@SourceIdM

The identifier of the SIF node that is providing SIF Services. This is the agent or ZIS identifier that would appear in the SIF_SourceId field of any SIF_Header created by the SIF node.

 
xs:token
 SIF_ServiceSubscribers/SIF_ServiceSubscriber/
     SIF_ServiceList
M

The list of services that are subscribed to by this node.

 
List
 SIF_ServiceSubscribers/SIF_ServiceSubscriber/
     SIF_ServiceList/SIF_Service
     
MR

 

 
@ServiceName

The name of the SIF Zone Service as defined by a SIF Zone Service specification

 
xs:token
 SIF_ServiceSubscribers/SIF_ServiceSubscriber/
     SIF_ServiceList/SIF_Service/
     SIF_Operations
O

If SIF_Operations is not present, then the agent is subscribed to all events emitted by the service

 
List
 SIF_ServiceSubscribers/SIF_ServiceSubscriber/
     SIF_ServiceList/SIF_Service/
     SIF_Operations/SIF_Operation
     
MR

A specific notification message that the agent is subscribed to

 
xs:token
 SIF_ServiceSubscribers/SIF_ServiceSubscriber/
     SIF_ServiceList/SIF_Service/
     SIF_Contexts
O

 

SIF_Contexts
 SIF_MetadataO SIF_Metadata
 SIF_ExtendedElementsO SIF_ExtendedElements
Table 5.3.3-1: SIF_ZoneStatus
<SIF_ZoneStatus ZoneId="RamseyZIS"> <SIF_Name>Ramsey Elementary</SIF_Name> <SIF_Vendor> <SIF_Name>ZoneMaster, Inc.</SIF_Name> <SIF_Product>ZonePlus Zone Integration Server</SIF_Product> <SIF_Version>3.01</SIF_Version> </SIF_Vendor> <SIF_Providers> <SIF_Provider SourceId="RamseySIS"> <SIF_ObjectList> <SIF_Object ObjectName="LearnerPersonal"> <SIF_ExtendedQuerySupport>false</SIF_ExtendedQuerySupport> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> <SIF_Object ObjectName="LearnerSchoolEnrolment"> <SIF_ExtendedQuerySupport>false</SIF_ExtendedQuerySupport> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_ObjectList> </SIF_Provider> </SIF_Providers> <SIF_Subscribers> <SIF_Subscriber SourceId="RamseyFOOD"> <SIF_ObjectList> <SIF_Object ObjectName="LearnerPersonal"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> <SIF_Object ObjectName="LearnerPersonalEnrolment"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_ObjectList> </SIF_Subscriber> <SIF_Subscriber SourceId="RamseyLIB"> <SIF_ObjectList> <SIF_Object ObjectName="LearnerPersonal"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> <SIF_Object ObjectName="LearnerSchoolEnrolment"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_ObjectList> </SIF_Subscriber> </SIF_Subscribers> <SIF_SIFNodes> <SIF_SIFNode Type="Agent"> <SIF_Name>Ramsey Food Services</SIF_Name> <SIF_SourceId>RamseyFOOD</SIF_SourceId> <SIF_Mode>Push</SIF_Mode> <SIF_Protocol Type="HTTPS" Secure="Yes"> <SIF_URL>https://RamseyNT:8010/FoodService</SIF_URL> </SIF_Protocol> <SIF_VersionList> <SIF_Version>2.3</SIF_Version> </SIF_VersionList> <SIF_MaxBufferSize>16384</SIF_MaxBufferSize> <SIF_Sleeping>No</SIF_Sleeping> </SIF_SIFNode> <SIF_SIFNode Type="Agent"> <SIF_Name>Ramsey Media Resource Center</SIF_Name> <SIF_SourceId>RamseyLIB</SIF_SourceId> <SIF_Mode>Pull</SIF_Mode> <SIF_Protocol Type="HTTPS" Secure="Yes"> <SIF_URL>https://RamseyNT:8020/Library</SIF_URL> </SIF_Protocol> <SIF_VersionList> <SIF_Version>2.3</SIF_Version> </SIF_VersionList> <SIF_MaxBufferSize>16384</SIF_MaxBufferSize> <SIF_Sleeping>No</SIF_Sleeping> </SIF_SIFNode> <SIF_SIFNode Type="Agent"> <SIF_Name>Ramsey Administration</SIF_Name> <SIF_SourceId>RamseySIS</SIF_SourceId> <SIF_Mode>Push</SIF_Mode> <SIF_Protocol Type="HTTPS" Secure="Yes"> <SIF_URL>https://RamseyNT:8030/StudentAdmin</SIF_URL> </SIF_Protocol> <SIF_VersionList> <SIF_Version>2.3</SIF_Version> </SIF_VersionList> <SIF_MaxBufferSize>16384</SIF_MaxBufferSize> <SIF_Sleeping>No</SIF_Sleeping> </SIF_SIFNode> </SIF_SIFNodes> <SIF_SupportedAuthentication> <SIF_ProtocolName>X.509</SIF_ProtocolName> </SIF_SupportedAuthentication> <SIF_SupportedProtocols> <SIF_Protocol Type="HTTPS" Secure="Yes"> <SIF_URL>https://RamseyNT:8000/ZIS</SIF_URL> </SIF_Protocol> <SIF_Protocol Type="HTTP" Secure="No"> <SIF_URL>http://RamseyNT:8000/ZIS</SIF_URL> </SIF_Protocol> </SIF_SupportedProtocols> <SIF_SupportedVersions> <SIF_Version>2.3</SIF_Version> </SIF_SupportedVersions> <SIF_AdministrationURL>http://RamseyNT:8000/Administer</SIF_AdministrationURL> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_ZoneStatus>
Example 5.3.3-2: SIF_ZoneStatus

Valid XHTML 1.0 Transitional