SIFWorks ADK 2.0
Edustructures.SifWorks Namespace
NamespacesEdustructures.SifWorks

[This is preliminary documentation and is subject to change.]

[Missing namespace summary documentation for N:Edustructures.SifWorks]

Declaration Syntax
C#Visual BasicVisual C++
namespace Edustructures.SifWorks
Namespace Edustructures.SifWorks
namespace Edustructures.SifWorks
Types
All TypesClassesInterfacesEnumerations
IconTypeDescription
Adk
A global class representing the SIFWorks® Adk class framework. Prior to calling any Adk methods or referencing any static constants, agents must first initialize the Adk by calling the static Adk.initialize method. The default initialize method loads all SIF Data Object (Sdo) modules and selects the latest version of SIF as the default version used to render SIF Messages. If you use this method, ensure that the proper assemblies are available on the path. Other forms of the initialize method allow you to choose the specific Sdo modules that are loaded as well as the version of SIF that will be the default for this agent session.

AdkDataType<(Of <T>)>
Wraps a .Net value type in an immutable instance that can be used to construct SimpleFields that represent properties in SIF data objects

AdkDebugFlags
Summary description for AdkDebugLevel.

AdkException
The base class for all exception classes defined by the Adk.

AdkMessagingException
Exception signaling that an error has occurred processing a message.

AdkNotSupportedException
Signals an operation is not supported.

AdkParsingException
Signals an error parsing SIF message content

AdkProperties
The abstract base class for agent and zone properties

AdkQueryOptions
These flags are reserved for future use

AdkQueueException
Exception signaling that an error has occurred in the Agent Queue.

AdkQueueLocation
Flags and constants used throughout the Adk. Provisioning Flags The PROV_ flags are used to control the provisioning process when the agent registers with zones and topics. These flags are typically passed to methods such as Zone.connect, Topic.setSubscriber, Topic.setPublisher, and Agent.shutdown. SIF provisioning messages include:
  • <SIF_Register>
  • <SIF_Unregister>
  • <SIF_Provide>
  • <SIF_Unsubscribe>
  • <SIF_Subscribe>
  • <SIF_Unsubscribe>

AdkSchemaException
Thrown when an element or attribute is referenced but does not exist.

AdkTransportException
Exception signaling that an error has occurred in a transport protocol.

AdkUnknownOperatorException
Represents the exception that is thrown when an unkown SIF_Operator is used in a SIF_Query

AdkZoneNotConnectedException
Exception signaling that a method was called on a Zone instance but the zone is not in a connected state.

Agent
The base class for a SIF Agent. Derive your own class from this one and pass the SourceId to the superclass constructor. Call the initialize method to initialize the agent prior to use.

AgentMessagingMode
Summary description for AgentMessagingMode.

AgentProperties
Properties describing the operational settings of the agent or a zone.

AgentProvisioningMode
Refer to the Developer Guide for more information on the ADK's provisioning modes.

ComparisonOperators
Summary description for Operators.

Condition
A query condition.

ConditionGroup
A group of query conditions.

DefaultValueBuilder
The default IValueBuilder implementation evaluates an expression to produce a string value.

Element
The abstract base class for all element and attribute classes in the SIF Data Objects library.

Element..::ElementFlags
Event
Encapsulates a SIF Event

EventAction
Summary description for EventAction.

GroupOperator
Summary description for GroupOperator.

HttpProperties
Properties for the HTTP transport protocol.

HttpsProperties
Properties for the HTTPS transport protocol.

IDataObjectInputStream
IDataObjectOutputStream
DataObjectOutputStream is supplied to the IPublisher.OnRequestmessage. handler to allow agents to stream an arbitrarily large set of SifDataObjects when responding to SIF_Request messages. The ADK handles packetizing the objects into SIF_Response packets, which are stored in a cache on the local file system until they can be delivered to the zone.

IDtd
Classes that implement the DTD interface provide information about the schema of elements and attributes. For example, the SifDtd class implements this interface to define all elements comprising the Schools Interoperability Framework.

IElementDef
Encapsulates metadata for a SIF element or attribute.

IElementVersionInfo
Represents information about an IElementDef that is specific to a version of SIF

IMessageInfo
Provides information about an XML message, such as envelope and header attributes, the source of the message, and optionally the raw XML document that comprises the message.

IMessagingListener
The base interface for all listener interfaces related to the exchange of messages over the underlying messaging infrastructure. For example, SIFMessagingListener extends this interface for the Schools Interoperability Framework.

IPropertyCollection
Used in places where name-value collections are needed

IPublisher
The Publisher interface is implemented by classes that respond to queries (SIF_Requests). Implement the Publisher interface on a class that is capable of responding to SIF_Requests for one or more SIF Data Objects, then register your class with a Topic or Zone by calling the
CopyC#
Topic.setPublisher
or
CopyC#
Zone.setPublisher
methods. SIF_Request messages received by the ADK are then dispatched to your Publisher for processing.

IQueryResults
The QueryResults interface is implemented by classes that process the results of queries initiated by the agent. Agents typically register a QueryResults implementation with a Topic or Zone. Pending Queries The
CopyC#
onQueryPending
method is called by the ADK for each zone to which a SIF_Request message is sent. Agents interested in tracking the results of pending queries may implement this method to match SIF_Request messages with SIF_Response messages. Agents that do not require this functionality can provide an empty implementation. Query Results The
CopyC#
onQueryResults
method is called whenever a SIF_Response message is received from a zone. The ADK handles extracting the individual SIF Data Objects from the message and streaming them to the QueryResultsInputStream passed as a parameter to this method. Agents should expect to receive arbitrarily large result sets from the stream. Message Dispatching Chain Because SIF is an asynchronous messaging architecture, result data may be received at any time, including results for queries executed in prior agent sessions. When a SIF_Response message is received, the ADK dispatches the result set to the first QueryResults implementation in the message dispatching chain. The chain consists of Topic, Zone, and Agent in that order. If no QueryResults object is registered with any of these objects, the SIF_Response message is silently discarded. To avoid this situation, consider registering a "catch-all" QueryResults implementation with your Agent. You may also want to check the timestamp of messages by inspecting the MessageInfo parameter passed to the
CopyC#
onQueryResults
method.

IRenderSurrogateToDelete
IReportObjectOutputStream
The ReportObjectOutputStream is implemented by the ADK to supply agents with a means of streaming arbitrarily large SIF Data Objects responses for SIF_ReportObject queries in SIF 1.5 and later. The ADK handles packetizing and storing SIF_Responses for SIF_ReportObject in a local cache for reliable delivery to the ZIS.

IReportPublisher
The ReportPublisher interface is implemented by message handler classes that respond to requests for SIF_ReportObject. Note the ReportPublisher interface must be used instead of the standard Publisher interface for the SIF_ReportObject object type.

IRequestInfo
Represents information cached by the ADK about a specific SIF_Request.

ISubscriber
The Subscriber message handler interface is implemented by classes that wish to SIF_Event messages received from a zone. process SIF_Event messages received from a zone. Consult the ADK Developer Guide for more information about message handler interfaces.

ITopic
Aggregates publish, subscribe, and query activity across multiple zones. An agent typically registers with its zones at startup, creates Topic instances for the data types it is interested in, and then joins zones to each topic by calling Topic.addZone. A given Zone can only be joined to one Topic. If an agent wishes to manage publish and subscribe activity on a per-zone basis, it can do so by creating one Topic object for each zone instead of aggregating zones on a single Topic instance. The Adk applies publish, subscribe, and query functionality equally to all zones joined to a topic. Thus, if the topic provides authoritative data to its zones (that is, it is registered with the ZIS as a Provider), it will do so for all zones by delegating incoming queries to the Publisher registered with this topic. Similarly, the topic will send change events to all of its zones when the publish method is called, and will query all zones for data objects when the query method is called. (An exception to this is directed queries, which require that the caller specify a zone and agent name to direct the query.) Consult the Adk Developer Guide for more information about working with multiple zones.

ITopicFactory
Creates Topic objects and provides access to the topics that have been created during this session of the agent. Agents exchange data with SIF zones via Zone and Topic objects, which can be obtained with the ZoneFactory and TopicFactory classes. These factories are available by calling the
CopyC#
Agent.getZoneFactory
and
CopyC#
Agent.getTopicFactory
methods. Topics are used to aggregate publish, subscribe, and query activity from multiple zones. An Agent may have only one Topic instance per SIF Data Object type (e.g. "StudentPersonal", "BusInfo", or "LibraryPatronStatus"), but a Topic can be joined with any number of Zones. Topic instances are returned by calling the getInstance method, which returns the same Topic object for a given object type. Topic instances are cached by the factory. getAllTopics returns all topics in the cache. A Topic remains in the cache for as long as the agent is running.

IUndeliverableMessageHandler
IValueBuilder
Classes that implement the IValueBuilder interface evaluate an arbitrary expression to produce a string value. The string value is then assigned as the value to a SIF element or attribute. The IValueBuilder interface is used by the SifDtd, SifDataObject, and Mappings classes when evaluating XPath-like query strings. It enables developers to customize the way the Adk evaluates value expressions in these query strings to produce a value for a SIF element or attribute. The DefaultIValueBuilder implementation supports $(variable) token replacement as well as @com.class.method style calls to static .Net methods.

IZone
IZoneFactory
Creates Zone objects and provides access to the Zones created by an agent. Agents exchange data with SIF zones via Zone and Topic objects, which can be obtained with the ZoneFactory and TopicFactory classes. These factories are available by calling the Agent.getZoneFactory and Agent.getTopicFactory methods. An Agent may have one Zone object per SIF zone to which it is connected. Zone instances are returned by calling the getInstance method. When no properties are specified for a zone, the agent's defaults are used. Default properties are returned by the Agent.getProperties method. For a explanation of the various properties that affect zones, refer to the AgentProperties class description. The getInstance method returns the same Zone object for a given zone identifier for as long as it remains in the factory's cache. getAllZones returns all zones in the cache. A Zone remains in the cache until its disconnect method is called, at which point it is removed and can no longer be used by agent. (Calling the Zone.connect method on a disconnected zone throws an exception.) To reconnect to a zone after calling its disconnect method, obtain a fresh Zone instance from the ZoneFactory.

MessagingReturnCode
Summary description for MessagingReturnCode.

DefaultValueBuilder..::MyStringTokenizer
A StringTokenizer replacement. We need a replacement for two reasons: first, the default does not consider empty tokens to be tokens. For example, ",,,blue" is considered to have one token, not 4. Second, we need to ignore commas in literal strings so that a parameter to a method can itself be comprised of delimiters. If a double-quote is found, all commas until the next double-quote are considered literal. The commas are not included in the resulting tokens.

DefaultValueBuilder..::ParseResults
A helper class to parse "@method( parameterlist )" into .Net method name and parameter list, and to return the position in the source string where the caller should continue processing.

ProvisioningFlags
Query
RequestCacheFileEntry
Represents informaton about an outstanding SIF_Request that has been made to the zone

SdoLibraryType
Values identifying each package in the SIF Data Objects library

SifActionList<(Of <TKey, TValue>)>
SifBoolean
SifContext

SifDataObject
SifDataObjectXml
A SifDataObject implementation that wraps raw XML messages.

SifDataType
A list of SIF datatypes supported by the ADK

SifDate
A date value in SIF format To use this class, pass a date string to the constructor or set methods in the format specified by SIF ("YYYYmmdd"). Alternatively, you may pass a DateTimeinstance. The ToDate returns the SIF date as a DateTime instance.

SifDateTime
SifDecimal
SifDtd
Metadata for the Schools Interoperability Framework (SIF)

SifDuration
SifElement
The abstract base class for all SIF Elements.

SifElementList
SifEncryption
SifEncryption provides easy read and write access to encrypted passwords in the Authentication object

SifEnum
Describes the acceptable values for an enumerated SIF attribute or element

SifErrorCategoryCode
Summary description for SifCategoryCode.

SifErrorCodes
Defines SIF 1.0r1 error category and code constants.

SifException
SifException describes a SIF error condition. When handling inbound messages, the agent may throw a SifException from a message handler to signal that an error has occurred and should be returned to the ZIS in the SIF_Ack message. The Adk will convert the SifException to a SIF_Error element when sending the associated SIF_Ack. It is desirable to throw SifException in your message handlers (versus generic exceptions) if you want control over setting the SIF_Error category, code, description, and extended description elements. SifException may also be thrown by Adk methods in response to a SIF_Ack received from the server. The actual SIF_Ack object that generated the exception can be retrieved by calling getAck. Any SIF_Error elements included in the acknowledgement can be retrieved by calling getErrors and associated methods such as hasError. Note SIF 1.0r1 allowed for multiple SIF_Error elements per SIF_Ack, but later versions of SIF do not. For backward compatibility, the Adk captures all SIF_Error elements received in SIF_Ack messages and makes them available as an array. The array can be obtained by calling the getErrors method.

SifFormatter
Contains functions helpful for converting data to and from native datatypes to SIF datatypes

SifInt
SifKey
SifKeyedElement
Represents a SIFElement which has a primary key

SifKeyedList<(Of <TKey, TValue>)>
SifList<(Of <TValue>)>
Represents a SIF Repeatable Element list container element.

SifMessageInfo
SifMessagePayload
A specialization of SifElement for SIF infrastructure messages such as SIF_Register, SIF_Request, and SIF_Event. SifMessagePayload provides methods specific to infrastructure messages, such as retrieving the Edustructures.SifWorks or its individual fields. When an instance of this class is constructed, it is done so without its Edustructures.SifWorks element. The getHeader method adds a Edustructures.SifWorks child if one does not exist, and the class framework takes care of assigning values to the header prior to sending messages. For consistency the Adk employs the same SifElement class hierarchy and conventions for SIF Infrastructure messages as it does for SIF Data Objects. Some inherited methods of SifElement, such as setChanged and setEmpty, have no effect for infrastructure messages.

SifMessageType
Summary description for SifMessageType.

SifParser
Summary description for SifParser.

SifParserFlags
Summary description for SifParserFlags.

SifResponseSender
Helper class to send SIF_Response messages when an agent defers automatic sending of responses in its implementation of the IPublisher.OnRequest message handler. This class is designed to be used when the DeferResponse()() method is called during SIF_Request processing, and must be used outside of the Publisher.OnRequest message handler.

SifSimpleType
The abstract and base definition for a specific data type supported by SIF. DataTypes are immutable and can be converted to and from datatypes supported by the SIF Specication in any version of SIF

SifStatusCodes
Defines SIF 1.0r1 status code constants.

SifString
SifTime
A SIF Time value. SifTime extends the Edustructures.SifWorks.Common.Time class that encapsulates SIF Time elements in SIF Data Objects. An instance of this class can be used whenever a parameter of that type is passed to a SIF Data Object class. SifTime adds methods to set and get SIF Time values using the standard .Net DateTime class

SifTypeConverter<(Of <T>)>
Represents a set of type converters that use SIFFormatter instances to convert Strings into SIFSimpleType instances

SifTypeConverters
A collection of Type converter instances that can be used for converting native types to the value represented in SIF XML documents

SifVersion
Encapsulates a SIF version number. The Adk uses instances of SifVersion rather than strings to identify versions of SIF. Typically you do not need to obtain a SifVersion instance directly except for when initializing the class framework with the Adk.initialize method. Rather, classes for which SIF version is a property, such as SifDataObject and Query, provide a getSIFVersion method to obtain the version associated with an object.

SifWriter
SimpleField
A simple field value that is strongly typed to match its XSD Datatype in the SIF Schema. Unlike complex elements, which are stored as child objects of their parent, simple fields (i.e. attributes or elements that have no children) are wrapped in a SimpleField instance and stored in the field table of their parent object.

TransportProperties
Properties describing operational settings of a transport protocol.

TypeConverter
An

TypedElementList<(Of <T>)>