Table of Contents
TOC \o "1-3" \h \z
Go to First topic
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:
For details on specific editor types please see: Contact Editor, Document Editor , Fifo Editor , File Editor , Job Editor , Queue Editor , Server Editor , User Editor
See also: Fax System OverviewFax System Overview , FAD Browser , Fax Core Overview
See Fax Core| Fax Contact 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 Editor,.
The "FaxSys Corp." company name is fictitious and has a special meaning in testing the workflow of the system. Please see FAD startup for details on demonstration contacts.
Press Apply to effect the changes, Undo to revert to a previous state.
Go to Fax Type Library
See Fax Core| Fax Document 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: FilesFAD 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 Queues to entire Contact Lists , as well as to one or more Users (inbound calls), a Server , and to all the servers active in a system, depending on the nodes you drop from the fax browser., Contacts , and Jobs . To add files and/or contacts to a document you would use the FAD Browser
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 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 session 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 Outbox
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 Sentboxsimulation pass through the document sending process., and can be sent again to new or the same destinations. Please see a thorough description of the system's theoretical and real workflow , and then see
Press Apply to effect the changes, Undo to revert to
a previous state. Press the
Go to Fax Type Library
A FIFO is a one of our objects, which represents an intercepted PostScript printer. See Fax Core| Fax Fifo 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 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 Apply to save your changes, Undo to revert to a former state.
See also File Editor
Go to Fax Type Library
See Fax Core| Fax File for a definition of File.
In the fax world we deal with a narrow subset of file types:
The only user accessible file types in the Fax System are TIFF and Job. 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 printers.
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 users
Go to Fax Type Library
See Fax Core| Fax Job 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 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 Library
See Fax Core| Fax Queue 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 Browserallows 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 Undo to revert to a former state, or Apply to save your changes.
Go to Fax Type Library
See Fax Core| Fax User for a definition of User.
The following dialogue configures the details of a User object
A user is a specialized Contactand 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 servers.
Users can be destinations for fax documents as they may be dropped over the contacts list of the Document Editor. Sending a document to a user is an inbound call.
Users are to ServersContact Editor were to Contact Lists . You may reach any user on a server when you have access to a server FAD node.what Contacts
Go to Fax Type Library
See Fax Core| Fax Server for a definition of Server.
The following dialogue configures the details of a Server object
A server is a specialized version of a Userinheriting 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 userwho 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
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 server. You would also need to understand server persistence matters, as described in Saving 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 Library.
# Fax Type Library
K Fax Type Library
# Contact Editor
K Contact Editor
# Document Editor
K Document Editor
# Fifo Editor
K Fifo Editor
# File Editor
K File Editor
# Job Editor
K Job Editor
# Queue Editor
K Queue Editor
# User Editor
K User Editor
# Server Editor
K Server Editor
! JumpContext(FaxSys.hlp, 1)
# Fax System Overview
K Fax System Overview
! JumpContext(FaxDirView.hlp, 1)
# FAD Browser
! JumpContext(FaxCore.hlp, 1)
# Fax Core Overview
K Fax Core Overview
! JumpContext(FaxCore.hlp, 6)
! JumpContext(FaxCore.hlp, 8)
! JumpContext(FaxCore.hlp, 5)
! JumpContext(FaxCore.hlp, 4)
! JumpContext(FaxCore.hlp, 7)
! JumpContext(FaxCore.hlp, 8)
! JumpContext(FaxCore.hlp, 9)
! JumpContext(FaxCore.hlp, 11)
! JumpContext(FaxCore.hlp, 10)
! 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)
! JumpContext(FaxCore.hlp, 19)
! JumpContext(FaxCore.hlp, 16)
! 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)
Send mail to
questions or comments about this web site.