IFE Application Handler (ife_ah).

1.
This BB client manages various external applications responsible for running
simulations and processing data held on the blackboard.

The clients to be used by the ife_ah are held in the file:
		$IFE_HOME/lib/startup/ah_clients
and is of the form;
		concept	<tab> executable_name <tab> args <tab> progtype

Where concept corresponds to a concept posted onto the blackboard
for the application handler.

	eg:	perspective	perspective	(NULL)	modeller
		comfort		comfort	(NULL)	comfort_analysis_script

The last to entries on the line are not as yet used.

The number of potential clients is limitless, however the number of
clients that may be invoked at any one particular time is limited
to the number of unix pipes per process.


2.
The ife_ah responds to three basic instructions:

		start	client_name	args	/* start client */
		inform	client_name	args	/* pass a mesage */
		abort

	eg:
		to_bb(application, start, perspective, _Geom_filename).

The ife_ah has been generalized as much as possible so that any
external application may be used.  However the program assumes that
the application will return messages in the following format:

		concept <tab> args

Where concept corresponds to an entry in the knowledge base.
As yet all messages from external clients are posted to the
blackboard in the user_dialog area as a user_said event. This
is to enable the u_cpt_kb to pick up events and feed them
back to the dialog_handler and, therefore, back to the user.

	eg:	"perspective_complete	/tmp/viewer.pic"

	kb entry:-
		perspective_complete(_Pic_name):-
			to_bb(user_dialog,tell_user,file_geom_pic,_Pic_name).

3.
To use a third party application it will be necessary to wrap
the application in an ife_ah interface.  This is simply a shell script
of the form:

perspective:

	rm -f /tmp/viewer.pic
	$IFE_HOME/bin/3rd_party/viewer > /dev/null 2>/dev/null <<.
	-6
	$1
	O
	/tmp/viewer.pic
	B
	.
	echo	"perspective_complete	/tmp/viewer.pic"
	.



BUGS:

When a client completes execution it is not killed off, therefore,
it exists as a zomdie on the process table until the ife aborts.
This will ultimately result in future  fork problems. Also the entry
on the client list is not removed and therefore the list soon becomes
full. These bugs will be fixed next time round.
