The QWFIX Enterprise Manager works with repository. The repository is a information store for information called resources. The repository can be viewed as a simplified file system which provides functionalities such as resource listing, reading, writing and access control.
The QWFIX Enterprise Manager stores and manages all system configurations (usually XML files) in the repository.
The QWFIX SDK provides API to access and manipulate the repository.
While the file system may have very deep hierarchy of directory structure, the repository has only one level. Resources in repository are identified by two strings, location and name. This design simplifies the implementation and improves the performance while still meeting the requirement.
Unlike the file system, the resource in repository is always associated with a unique version number. Every time a resource is written to the repository (result of creation or modification), a historic copy with the version number specified is automatically created in a special location called history store. For more information about version number, see Resource Names and Versions.
Once a history is created, it becomes read-only There's no API provided to alter the history store. The history will keep increasing throughout the life of the repository.
By making the historical copies mandatory, users can look back to any historical changes of any resource. The historical copy of resources can help identifying problems resulted from the wrong configuration file in repository. It's also possible to use the historical configuration in repository to reproduce the exact image of historical operations. For example, developer can write a program to reproduce the historical FIX communication and application level business logic (such as entire order trails) by using the historical configuration in repository and a historical FIX log from some other locations.
The QWFIX Repository Server is an implementation of repository defined above.
The QWFIX Repository Server is running as a Windows service. It uses the a directory on the local hard disk as the information store. It uses a file based Microsoft SQL express database to store the index and properties of the resources and histories.
The QWFIX Repository Server is configured as a network service which listens on a specific TCP port. Once it receives a connection request from a network client, it will first authenticate the client, then serves the client if the client passes the authentication.
The instance of QWFIX Repository Server can be represented as a simple URL string. For example: "qwrp://Administrator:Password@192.168.2.1:60000" represents a QWFIX Repository Server with IP of 192.168.2.1 listening on TCP port 60000 connected with a user "Administrator" and password of "Password". Note: In Enterprise Manager the user name and password have to be provided separately. User should never encode name and password into the URL string because it is not safe (not encrypted).
The QWFIX SDK provides a client library of QWFIX Repository Server.
For more information of installation and administration of QWFIX Repository Server please refer to QWFIX Repository Server Installation and QWFIX Repository Server Configuration.
The configuration resources stored in repository are usually XML documents. As we mentioned before, every resource in repository has a version associated with it. Every time a resource is saved in the repository, a historical copy is automatically saved in the history data store as well.
The QWFIX Enterprise Manager ensures the mandatory history copies. It also provides the capability to browse the entire list of history for a specific configuration (resource) and view the details of them.
Thw following screen shot demonstrates a history view showing the entire history of a specified resource, in this case the resource is configuration of a scheduler. If user performs a mouse double click on an entry in the list, a read-only view of the details will show up in the document area of the main window. The view will be read only because user can not alter the history.
Figure 2.1: QWFIX Enterprise Manager History View
References may exist among the configuration documents. For example, a user-defined FIX schema should be derived from a standard FIX schema. A FIX session should have a reference to a FIX schema and a scheduler. A FIX engine should contain at lease one FIX session and optionally link some Visual Lambda modules to sessions. A FIX Engine should have its own scheduler.
In QWFIX, the configuration is designed in a way that, every reference has a version number associated. Retrieving a historical configuration will result in retrieving all other historical configurations referenced (including cascade references) based on the version number associated with the references.
For the same reason, once a configuration is modified, actions may be taken on the other configurations that reference the configuration being modified, in order to reflect the change (at least the version of the reference needs to updated). The actions may be cascaded in an order.
The QWFIX Enterprise Manager tool has built in logics to handle all version control and reference consistency checks. The following screen shot demonstrates a reference consistency window triggered by a modification attempt to a scheduler. The scheduler is reference by a FIX session named "test". If thee scheduler is modified, the version number of the scheduler is updated. The reference information in the session configuration should also be modified to reflect the change of version, which will result in the modification of the session configuration (and the update of the session version as well). The session is referenced by two FIX engines, so those two FIX engines should also be modified as well.
Figure 2.2: QWFIX Enterprise Manager Reference Consistency Check
The QWFIX Enterprise Manager can not only detect all reference consistencies, but also visualize the consistency and give user a chance to abort the modification. In the example above, if the user click the "Cancel" button of the dialog, no modification will be made to the scheduler.
Note not all kinds of modification is allowed. QWFIX Enterprise Manager can detect the possible reference consistency violation before an attempt to modify the configuration and give user proper error messages in the reference consistency check dialog. For example: In the example mentioned before, if the user tries to delete the scheduler, a dialog with an error entry will be displayed as following. Note the "Continue" button on the dialog is disabled, meaning user can not proceed because the operation will violate reference consistency.
Figure 2.3: QWFIX Enterprise Manager Reference Consistency Check - Denying an Modification Attempt
The QWFIX Repository Server does not check the correctness of the resources stored in it. It's the responsibility of the FIX Enterprise Manager to check the validity of the resources before they are saved. The process is called validation in FIX Enterprise Manager.
Note validation check is different from the reference consistency check. For example, a FIX session that doesn't associate to any FIX schema will not violate the referency consistency rules. However that will violate a certain validity check rule.
Reference consistency check is also part of the validity check, because the validity check should make sure all cross references in the configurations should be up-to-date (with the latest version).