Back | Home | Up | Next




Core UML
Tiger Server
DNA Declarations
Physiology RO
Real Time RO
ANNA as an Eco System RO
HMM Generator





#K+{bmc logo.bmp}

Revision History




Alexander Mihail

Started the document


Alexander Mihail

Integrated the figures. Cross-reference with all the other help files.


Alexander Mihail

Described the editors in detail.

Linked topics to FaxSys.HLP.




Table of Contents

 TOC \o "1-3" \h \z 1      Fax Type Library. PAGEREF _Toc88907511 \h 3

2      Contact Editor PAGEREF _Toc88907512 \h 6

3      Document Editor PAGEREF _Toc88907513 \h 8

4      Fifo Editor PAGEREF _Toc88907514 \h 13

5      File Editor PAGEREF _Toc88907515 \h 15

6      Job Editor PAGEREF _Toc88907516 \h 18

7      Queue Editor PAGEREF _Toc88907517 \h 20

8      User Editor PAGEREF _Toc88907518 \h 22

9      Server Editor PAGEREF _Toc88907519 \h 25


Go to First topic Fax Type Library

(manual page break)
#K +{bmc logo.bmp}


1           Fax Type Library

All FAD nodes share certain attributes such as Name, Flags, Status. This consistent set is viewed and edited in a unified manner using the FAD Browser, which makes no distinction as to the possible differences of the objects it browses. It is the job of this family of dedicated viewers, editors, and control panels to configure each type of a FAD node specifically, and to take the specific actions that each such type permits. The FAD browser spawns these local editors by double-clicking on a node..


A FAD type editor must be able to perform a few basic tasks regardless of the type of object being edited, as follows:

  1. When launched over a link to another object, a type editor must find the source of the link.
  2. The editor must lock onto the FAD object so to inform the Fax Core that the object should not be passed over to further editors.
  3. If the object is a reference to a remote node, then a proxy object of that type must be constructed from the original and loaded into the editor.
  4. If the object was dirty when launching the editor, the dirty condition must be reset, so that the object would be known in the system as clean from now on.
  5. The editor must now show the user configurable fields of the underlying object.
  6. If any field is modified and the changes are applied, then the object must be deemed to be dirty again.
  7. All editors must supply an Apply and an Undo button and associated logic.
  8. The Undo must discard all changes by reloading the object going all the way to the original if the edited object is a reference. Doing so resets the dirty state of both the object and the editor.
  9. The Apply button must exchange the editor's field data with the object, and, if the object is a reference to a remote node, the edited proxy object must be synchronised with the remote FAD object. Apply should set the dirty condition and thus inform other users of the system of the changes made.
  10. The FAD browser displays dirty objects in bold.
  11. An editor must take special precautions to avoid dirtying objects unnecessarily and avoid object exchange transactions to a minimum.
  12. Another very sticky matter is that applying changes to a node might be resolved by the underlying servers as a merge operation, so the object's content must be read back into the editor immediately after Apply. The object might be dirty again, and the condition should be reset just as if launching for the first time.
  13. Closing the editor should discard any changes made but not yet committed.
  14. An editor must not violate the read-only flag that may be set on the object.
  15. The editors must refuse to open for not-readable objects when the user is not the owner of the object, and keep the object's content secret.


For details on specific editor types please see: Contact EditorContact Editor , Document EditorDocument Editor , Fifo EditorFifo Editor , File EditorFile Editor , Job Editor Job Editor , Queue EditorQueue Editor , Server EditorServer Editor , User EditorUser Editor


See also: Fax System OverviewFax System Overview , FAD BrowserFAD Browser , Fax Core OverviewFax Core Overview

(manual page break)
#K +{bmc logo.bmp}

2       Contact Editor

See Fax CoreFax Core Overview | Fax Contact FaxContact for a definition of Contact.


The following dialogue configures the details of a Contact object


The Fax number field is mandatory if any faxes are to reach this person.


The Company name, location, and voice number can appear on the coversheets sent to this contact, providing that a coversheet template exists with these corresponding fields. Most coversheet templates include the contact's Fax number, and company. You can preview these settings in conjunction with coversheet templates in the Document EditorDocument Editor ,.


The "FaxSys Corp." company name is fictitious and has a special meaning in testing the workflow of the systemDocument Workflow. Please see FAD startupFax Active Directory at startup for details on demonstration contacts.


Press Apply to effect the changes, Undo to revert to a previous state.

Press the  icon to close the editor without saving any data.


Go to Fax Type LibraryFax Type Library

(manual page break)
#K +{bmc logo.bmp}

3       Document Editor

See Fax CoreFax Core Overview | Fax Document FaxDocument for a definition of Document.


The following dialogue configures the details of a fax document object


Comments is a multi-line text that ends-up on the coversheet.

Regarding should be a short line of text to go onto the coversheet.

Send on and at are the date and time pickers to schedule the fax document at some point in the future. If these settings point to the past then the scheduler will not be activated, and the document would be sent ASAP.

Redials configures the number of tries to redial a busy or non-answering number.

Retries configures the number of attempts to retransmit a failed job. A failed job is that which has already connected, and has started costing money with the phone bill.

Cover is a drop-down list of coversheet templates. The same coversheet template would be used for all contacts of destination. Coversheet templates are generally exported by those servers that can also convert from PostScript to TIFF. These templates are located on the first server that is reachable through a User session flagged as permitting coversheet retrieval.


None of the fields above are mandatory. You are only required to supply contacts to the document, and make sure that the document has at least one file to send. The SEND button warns against the missing pieces by showing a message.


A document has three major dependency lists: FilesFile Editor, ContactsContact Editor, and JobsJob Editor. To add files and/or contacts to a document you would use the FAD Browser FAD Browser to drag nodes from the tree and drop them anywhere onto the document. Files would go to the file list, and contacts to the contacts list. It makes no sense to drop existing Jobs over the document, as these constructs are actually the temporary result of sending this document. Please note that the fax system allows sending entire QueuesQueue Editor to entire Contact ListsFaxContactList, as well as to one or more UsersUser Editor (inbound calls), a ServerServer Editor, and to all the serversMetaServer active in a system, depending on the nodes you drop from the fax browser.


The button  is to clear the lists of dependencies of this document on other fax objects.

The button  is to refresh those lists of dependencies in case the fax core changed them. A 30 second refresh timer is started as soon as the SEND button is pressed. Its role is to monitor the sending process. The refresh button is useful when the FAD changes while the document is not sending. The reason for stopping the refresh timer is to avoid the contention over servers while you may have multiple documents open for viewing.


You may double click on any file in the files lists to preview it in the bottom TIF viewer. For details on the workings of the TIFF viewer please see the File EditorFile Editor. If you have selected a coversheet template, then you may also double-click on any contact to preview the coversheet for that person. To be able to preview coversheets for your contacts, a connection to a conversion server must have been established through a User sessionUser Editor flagged with the Convert capability.


When you're satisfied with the settings of this fax, you may press the SEND button. The system's evaluator would kick into action and promote your document to the OutboxOutbox, The lists can be globally cleared form the . If you require specific items to be deleted, then you would use the FAD BrowserFAD Browser to expand the document and delete its sub-nodes.


The document links to compound structures such as an Address Book by reference. The inclusion of all (traversable) sub objects of an address book is implicit. The file-list and the contacts list of the Document Editor show the flattened (de-convolved) list of files or contacts. These referenced objects may span machine boundaries and belong to other servers.


Pressing the SEND button closes the editor before actually sending it. This is a requirement of the transport protocol to have the changes committed and the document unlocked before it can travel through a server's pipeline.


Don't forget that you can resize these lists to something more comfortable if you like.


The system has to often go through rough times transacting between servers to maintain your document. As it takes care of your document, you must also take care of it (the fax system). Please do not work in violation of the hourglass.


While transmitting, a document may look as in the screenshot below.  The list of jobs has filled with one job per contact and is showing the decay status on each job. They are generally failing for this demonstration, because I took the modem off-line. During the idle time of the document you're free to preview whatever you like from these lists.

Pressing the STOP button is a way to cancel all remaining jobs and cleanup the swag of temporary files created underneath by the low-level modem driver.


Once the document is sent, it goes to the SentboxSentbox, and can be sent again to new or the same destinations. Please see a thorough description of the system's theoretical and real workflowDocument Workflow, and then see simulationSending a fax to a contact (an outbound call)  pass through the document sending process.


Press Apply to effect the changes, Undo to revert to a previous state. Press the  icon to close the editor without saving any data.


Go to Fax Type LibraryFax Type Library

 (manual page break)
#K +{bmc logo.bmp}

4       Fifo Editor

A FIFO is a one of our objects, which represents an intercepted PostScript printer. See Fax CoreFax Core Overview | Fax Fifo FaxFifo for a definition of Fifo.


The following dialogue configures the details of a FIFO object

Like all objects, the FIFO printer has a name which may only be edited with the FAD BrowserFAD Browser.


First field is the Path of the FIFO file. The printer driver prints to a file, which we read to uncoil a PostScript document. Changing this Path field would require you to first uninstall the printer, then re-install. If you can live with the rubbish 0-length old FIFO file (which may not even exist) then just do an over-install of the driver.


The fax system uninstalls these drivers on exit, and installs them on start.


Prefix is a string to pre-pend to any fax document draft generated by printing to this printer. It's a way of identifying and sorting document lists, which, depending on your policy of use, may get quite large.


Run closure test is a highly sophisticated multi-threaded routine that creates contacts, documents, sends, waits for things to happen, expects a reply, etc. Due to its tight grip on the system core, we found it dangerous, and disabled it.


Print a test page is a quick way to create a draft for test and diagnostic. This button was hit a million times during the development of this system. The printed job includes the name of the printer, the date and time of printing, the server name, IP and port where the document was born. The image also has a circle to allow you to check the aspect ratio of transmitted faxes.

Press  to close the editor without saving.

Press Apply to save your changes, Undo to revert to a former state.


See also File EditorFile Editor


Go to Fax Type LibraryFax Type Library

 (manual page break)
#K +{bmc logo.bmp}

5      File Editor

See Fax CoreFax Core Overview | Fax File FaxFile for a definition of File.


In the fax world we deal with a narrow subset of file types:

  1. TIFF as the image format that fax machines understand.
  2. PS files as the format that printers can produce
  3. HylaFAX job files.
  4. Text. for logs and configuration files.


The only user accessible file types in the Fax System are TIFF and JobJob Editor. These two have two different dedicated viewers. There's nothing to configure for a TIFF, so the File Editor is only a viewer that lets you pageup/page down, zoom-in/zoom out, fit to width, and fit all sides, and scale to a preset ratio.


The following screenshot is of a 5 page TIFF being previewed.


The file may also be printed to the line printer, either fully or a selected range of pages. One may even start the fax sending process again by printing the TIFF to one of our FIFO printersFifo Editor.


Press  to close the viewer.


A text viewer may also be selected from the drop-down list of the toolbar, if that makes sense. There are security issues involved with allowing the user to override the logical FAD file node in terms of its Path to the underlying physical file, and a path browser isn't supported. As the developer, however, I know how to dissociate a TIFF FAD node from its file and re-associate it with another text file. Exit the system, edit the configuration file for any local TIF node and write a path to any file you want. I've chosen for demonstration the configuration file itself. Start the fax system up again and you can now view the file. I've focused it right around the change required in the configuration.


In text mode the file may now be modified and when closed a message box would ask you if you want to save it.


The usefulness of this method is the mounting into the FAD of server logs and configuration scripts somewhere in the logical directory structure of an administrator.


Please note that once a user has access to the configuration file of the fax system, it has access to the entire server machine by adding more file nodes to the script. For this reason, the fax system should run as a restricted user (here meaning Linux or Windows user) on servers.


Files can also be sent to usersUser Editor. To do this you first pick destination users from the FAD BrowserFAD Browser and drop them over the File Editor, and then close  the viewer. The transport layer will take care of the rest and copy your file to the Inboxes of your nominated users. The copy would have the same name as the original, and would not appear twice in any Inbox, which is a mechanism we use to prevent the proliferation of documents in the system.


Go to Fax Type LibraryFax Type Library

 (manual page break)
#K +{bmc logo.bmp}

6       Job Editor

See Fax CoreFax Core Overview | Fax Job FaxJob for a definition of Job.


The following dialogue shows the details of a HylaFAX job file. Each field describes a certain aspect of the fax modem transmission. Our high level fax system only ever cares about the yellow fields, and the first Status string.

As a job progresses, the physical state file changes. Press the refresh button to synchronize. We don't engage timers to do it because of the danger of contention in this distributed real-time system. We have to keep transactions to a minimum necessary. As noted for Documents, please do not disregard the hourglass.


The yellow fields correspond directly or indirectly to the choices mad on the Document Editor. Fax number of the contact, pages of the document, redials and retries, coversheet (which we build ourselves and would never show any data in the field), overall job state. Important to us also is the Send time that shows when will the job be retransmitted.


Press  to close this viewer.

Press Undo to revert to a former state, or Apply to save your changes. Please note that modifying this job would have no effect on the modem driver.


Go to Fax Type LibraryFax Type Library

 (manual page break)
#K +{bmc logo.bmp}

7            Queue Editor

See Fax CoreFax Core Overview | Fax Queue FaxQueue for a definition of Queue.


A queue is a container of other objects. For the sanity of the FAD, however, within a queue you are restricted to only inserting Documents, FIFOs, and other queues. The FAD BrowserFAD Browser allows you to construct links to objects by dragging nodes and dropping them over the Queue Editor. You are responsible for the semantics of your new links.


The FAD browser also allows you to move objects around, so you can actually move an Address Book, for instance, into a queue. To avoid any inadvertent moves, FAD objects may be flagged as either non-moveable and/or non-inert-able. A server would generally disallow its folders to be moved around at a whim.


The following dialogue configures the details of a Queue object

Editable here is just the Path to the physical directory of this queue. Queues that are designed to be moved around should not have these path overrides. In the absence of path overrides, a queue builds its impression of its physical directory from its name appended to the path of its parent. The type field is for information only.


A Queue lists its content recursively, by flattening the leafs of its tree. Only those sub-nodes that are flagged as traversable would be listed. Listing includes the name, status creation and modification time of the leaf objects.

Press  to close this editor without saving.

Press Undo to revert to a former state, or Apply to save your changes.


Go to Fax Type LibraryFax Type Library 

 (manual page break)
#K +{bmc logo.bmp}

8       User Editor

See Fax CoreFax Core Overview | Fax User FaxUser for a definition of User.


The following dialogue configures the details of a User object

A user is a specialized ContactContact Editor and inherits all its fields. The identification details will be involved in the coversheet generation process as the "from" details.


The IP:Port identifies the server to which this user session will connect.


A password is required to re-attach to a user session that already exists on the server under the user's name. When a user specifies the server's password as his own before logging into the server, (s)he becomes administrator regardless of the password of his existing account on that server.


If this user is logging onto the IP:Port server for the first time, then the server will create a new user account with a set of standard queues. The server also creates a mirror user login object in case it needs to also connect to the client. A user is an entity with a split personality.


A user login may also configure a capabilities filter for the remote server. The remote server may be able to convert and to send faxes, but we're logging onto it just for converting and getting its coversheet templates. After logging in, the filter would narrow down to the lowest common denominator (and) of both the user's and the server's capabilities. An interface that cannot connect is effectively disabled. A user may also be configured to auto login upon the system's start-up.


The Period field is a multiplier of the server's evaluation period value, which is used to periodically retrieve the news from the target server. News are fax events, such as incoming faxes, document promotions, jobs completing.


Once the user is configured press the Login button. You cannot initiate a login sequence if you have disabled the Connect capability. Disabling the Connect is like saying to the local system: "never go through this account for any reason".


The editor cannot be closed while logging in. A login may fail. In this case the status bar would reflect the reasons. Upon success, the editor reloads with the remote user session that got created backwards on the remote server. We can now edit that as well, and allow (or not) the remote system to log into us.


For details on creating new user accounts, configuring them both on the source and on the target servers, and removing users from a system, please see tutorial Simulation to create user accounts and to log them into serversSimulation to create user accounts and to log them into servers.


Users can be destinations for fax documents  as they may be dropped over the contacts list of the Document EditorDocument Editor. Sending a document to a user is an inbound call.


Users are to ServersServer Editor what ContactsContact Editor were to Contact ListsFaxContactList. You may reach any user on a server when you have access to a server FAD node.


Go to Fax Type LibraryFax Type Library

(manual page break)
#K +{bmc logo.bmp}

9       Server Editor

See Fax CoreFax Core Overview | Fax Server FaxServer for a definition of Server.


The following dialogue configures the details of a Server object


A server is a specialized version of a UserUser Editor inheriting all its fields.


The server IP:Port determine the TCP/IP network the server belongs to and on which the server makes its services available.


Servers are password protected. A userUser Editor who knows the server's password becomes the server's administrator upon login.


The Period field relates to the server's evaluator thread and is expressed in seconds. The current fax system logic puts the server's evaluator to sleep for this amount of time before re-running it. A shorter value means a faster evaluating server. If the value is too small given the effort of evaluation, then a server may begin to thrash. Thrashing is a phenomenon where a system begins to bee too busy doing its own maintenance to be able to do anything useful. To large a value, and the clients would be starving for news from this server. Use common sense and your administrative experience with the system to set this value right. 


A server exports some capabilities, which are declared in the capabilities flags. There would be no point bothering a server with a fax, when it declared that it cannot/doesn't want to send.  These capabilities will mask those set for the users logging in.


A server may also allow Guest or Anonymous logins. Guests are users that cannot use the low-level communication drivers, but may do anything else. A guest user is identified by his "Guest" password. Any new server initialises starts with the "Guest" password, and allows guest users to also be administrators. This capability holds until a user changes the Guest password of the server. Guest  users logging in thereafter would not be administrators. The server can disable Guest logins altogether. New users can continue to log into the system with a Guest password only as long as Anonymous logins are enabled on this server. Anonymous logins is a scheme that allows new users to login for the first time onto a server with whatever name and password they choose. The server automatically creates a user account for them. When anonymous login is disabled, the user account needs to pre-exist for a user login to succeed.


A server may handle the requests from its clients either in parallel or one at a time. This option is required if the server needs to recurse its connections. Such a recursive connection scenario is encountered under the default Windows stand-alone demonstration installation, where a user session of a server connects upon the same server. When such user-to-server cycles are required, then you may have to allow parallel server processing. Parallel server processing is slower, and consumes more system resources.


Al these settings except for the IP:Port  take effect immediately after pressing the Accept button. Press Undo to revert to a previous state. Press the  button to close the server editor without saving.


Effecting a change to the IP:Port of a server would require you to restart that server. Press the Stop button to shut a server down. Naturally you would loose the TCP/IP connection to that server once you stop it. Depending on how the server system was configured the server may reboot and you may regain control over it. It is also possible to stop and start a server while you are connected to another peer server. All these matters are somewhat more complex as they involve the fax system as a whole. For a tutorial on starting and stopping a server see Simulation to create another serverSimulation to create another server. You would also need to understand server persistence matters, as described in Saving and loading a system's configurationSaving and loading a system's configuration,


In our networking model, a server and a client are no different. The server role is assumed by whoever starts first.


Go to Fax Type LibraryFax Type Library.



 (manual page break)
!#K {bmc logo.bmp}  Fax System

(manual page break)
!#K {bmc logo.bmp}  Fax Active Directory View

(manual page break)
!#K {bmc logo.bmp}  Fax Core

(manual page break)
!#K {bmc logo.bmp}  Fax Contact

(manual page break)
!#K {bmc logo.bmp}  Fax Contact List

 (manual page break)
!#K {bmc logo.bmp}  Fax Document

(manual page break)
!#K {bmc logo.bmp}  Fax File

(manual page break)
!#K {bmc logo.bmp}  Fax Queue

(manual page break)
!#K {bmc logo.bmp}  Fax Fifo

(manual page break)
!#K {bmc logo.bmp}  Fax Job

(manual page break)
!#K {bmc logo.bmp}  Fax User

(manual page break)
!#K {bmc logo.bmp}  Fax Server

(manual page break)
!#K {bmc logo.bmp}  Fax Active Directory at start-up

(manual page break)
!#K {bmc logo.bmp}  Document Workflow

(manual page break)
!#K {bmc logo.bmp}  Outbox

(manual page break)
!#K {bmc logo.bmp}  Sentbox

(manual page break)
!#K {bmc logo.bmp}  MetaServer

 (manual page break)
!#K {bmc logo.bmp}  Simulation to create user accounts and to log them into servers

(manual page break)
!#K {bmc logo.bmp}  Simulation to create another server

(manual page break)
!#K {bmc logo.bmp}  Saving and loading a system's configuration

(manual page break)
!#K {bmc logo.bmp}  Sending a fax to a contact (an outbound call)





+ 001

# Fax Type Library

K Fax Type Library

+ 002

# Contact Editor

K Contact Editor

+ 003

# Document Editor

K Document Editor

+ 004

# Fifo Editor

K Fifo Editor

+ 005

# File Editor

K File Editor

+ 006

# Job Editor

K Job Editor

+ 007

# Queue Editor

K Queue Editor

+ 008

# User Editor

K User Editor

+ 009

# Server Editor

K Server Editor

+ 010

! JumpContext(FaxSys.hlp, 1)

# Fax System Overview

K Fax System Overview

! JumpContext(FaxDirView.hlp, 1)

# FAD Browser

KFAD Browser

! JumpContext(FaxCore.hlp, 1)

# Fax Core Overview

K Fax Core Overview

! JumpContext(FaxCore.hlp, 6)

# FaxContact


! JumpContext(FaxCore.hlp, 8)

# FaxContactList


! JumpContext(FaxCore.hlp, 5)

# FaxDocument


! JumpContext(FaxCore.hlp, 4)

# FaxFile


! JumpContext(FaxCore.hlp, 7)

# FaxQueue


! JumpContext(FaxCore.hlp, 8)

# FaxFifo


! JumpContext(FaxCore.hlp, 9)

# FaxJob


! JumpContext(FaxCore.hlp, 11)

# FaxUser


! JumpContext(FaxCore.hlp, 10)

# FaxServer


! JumpContext(FaxSys.hlp, 4)

# Fax Active Directory at startup

K Fax Active Directory at startup

! JumpContext(FaxCore.hlp, 22)

# Document Workflow

K Document Workflow

! JumpContext(FaxCore.hlp, 18)

# Outbox


! JumpContext(FaxCore.hlp, 19)

# Sentbox


! JumpContext(FaxCore.hlp, 16)

# MetaServer


! JumpContext(FaxSys, 11)

# Simulation to create user accounts and to log them into servers

K Simulation to create user accounts and to log them into servers

! JumpContext(FaxSys, 18)

# Simulation to create another server

K Simulation to create another server

! JumpContext(FaxSys, 17)

# Saving and loading a system's configuration

K Saving and loading a system's configuration

! JumpContext(FaxSys, 24)

# Sending a fax to a contact (an outbound call)

K Sending a fax to a contact (an outbound call)


Hit Counter Created on 05/27/2009 06:38:39 AM, modified on 05/27/2009 06:38:39 AM


Home | Up | Feedback | Contents | Search

Send mail to with questions or comments about this web site.
All principles and artwork exposed on this site or by our software products is our intellectual property. 
Copyright © 2006 Proxima Centauri Romania SRL. Last modified: 05/27/09