Article View: comp.text
Article #168Advanced use of Frame's Hypertext and RPC capabilities
From: Scott Moody
Date: Wed, 05 Aug 1992 00:08
Date: Wed, 05 Aug 1992 00:08
287 lines
12392 bytes
12392 bytes
FrameMakerLinks_ (<< another subject on using 'tags' for linking products)
-----------------------------
UTILIZATION OF FRAMEMAKER
FOR DYNAMIC LINK CAPABILITIES
Scott Arthur Moody
Boeing Commercial Airplane Group
July 31, 1992
INTRO:
My work over the past few years has delt with building and utilizing
tools that work in a distributed environment. I have been using Framemaker
as a prototyping tool to show the benefits of a hypertext rich environment.
Frame has been connected to other life-cycle products in an RPC (remote procedure call)
environment. Although showing the results of navigating through a full hypertext
system is impressive, I feel we must address the generation aspects of
the vast amounts of links. Manual link creation is analogous to assembly
language programming which some of like to avoid.
I would like to know if others are looking at these same issues
and am especially interested to know the type of applications
that all this linked information is being applied to. Examples
include:
Software Reuse,
Database Browsing,
Interface Descriptions for Code Generation,
and navigation between all the different life-cycle work products
including Frame documents.
---------------------------------------------------------------------------
ISSUES:
(a) Maintaining Links in automatically generated Frame Files
(b) Creating Links in a 'point-and-click' manner, outside
of Frame's manual 'hypertext marker' mode.
(c) Creating links to non Framemaker information.
(d) Automatic generation of 'link definitions'
(e) Awareness of 'link definitions' in a distributed environment.
- manual
- automatic
(f) Changing where a 'link definition' is physically located.
- How do existing links get to the new location?
- placeholder, broadcast, etc.
(g) Allowing users of links to be involved in modifications
to what they are pointing to.
(h) How should this type of information influence future SGML
standards?
TERMINOLOGY:
node : holder of the object (what you point/link to)
link : act of connecting to a node of information
link definition: the 'newlink' definition, essentially a 'return address'
rpc : remote procedure call
message passing: sending information via an 'rpc'
document generation: actually creating/generating the document from a higher
level description, and usually a domain specific
translator.
LINK_DEFINITIONS:
------------------
My work is mostly concerned in automatically generating frame documents
and embedding a necessary set of hidden hypertext markers. These can be a collection
of 'outward' links or a number of 'link definitions' describing places that
others can navigate to.
The question then becomes how do others in a distributed system
become aware of these link definitions? And how would one make a link?
In our system all frame documents are 'read-only' and locked so
there are only 3 ways to know about interesting features:
1) manually looking at document - then maybe unlocking and looking
at embedded 'markers'
2) selecting hypertext 'outward' objects which send an rpc-message
to an external controller. The message content will
conform to a known grammar, but contain at least
(a) the name of the 'link definition' that
others can use to get back to you.
(i.e. Return Address)
(b) other information such as what the link
is about, allowing others to know the effectiveness
of making that link.
(i.e. description, abstract, keywords)
3) providing 'ALERTS' that have some of the description information
and attributes that help users determine.
KEY ISSUES:
(a) there is no logic built into frame documents only
item names, descriptions, and possibly return addresses.
(b) The information is read-only, the links created are NOT embedded
in the Frame documents. Instead, another tool or set of tools is keeping
these links. This other tool is called the Link_Capture.
OTHER_LINKABLE_PRODUCTS:
------------------------
Since the 'return' address provided in the link_definition phase
is basically a 'message' that is passed back to Frame, links to
other work products are also provided. The 'return' address must
describe the mechanism to implement the link navigation phase. This
might include the (node,rpc#,proc#,message), or a higher
known abstraction that ultimately results in this information.
LINK_CAPTURE:
---------------
The controller is a rpc-server we call 'Link_Capture'.
It keeps a database of 'links' that have been made, and provides
a limited set of (visible) operations on those links including:
1) Create Link
(a) select one side of link
(b) select other side
(c) capture description about why link is being made
1.1) Many-to-One Links can be created
2) Follow Link
(a) can follow link in either direction
(b) Implemented by sending an RPC message to
FrameMaker (on the correct machine)
with a message to traverse to the link definition
that was captured during 'Create Link' phase.
3) Conditionally Follow Link
(a) allows external selection of follow MODE.
This 'state' is kept until changed.
(b) then accepts 'Dynamic Follow Link' message
that goes in the direction of the MODE
4) Dump the links
(a) Save to a file
(b) Return the links via an RPC message
(Used in Code Generation Phase described below)
5) Restore Links
(a) From a file
(b) From a RPC message
(So scripts that capture the links can be
run to re-establish those links).
7) Delete Links
OTHER LOGIC TOOLS:
------------------
The beauty of providing a visible/published link capability is that other
tools can provide additional logic for following those links. This
section describes a language for describing that logic.
We have developed a Distributed Communication Language, called Denali,
that provides an Ada like syntax to describe and facilitate operations between
distributed objects, essentially distributed 'glue'. Denali provides
an X-Window interface that is easily described and
manipulated by the language. Denali also supports class and instance
object definitions with the added benefit of 'persistent' instances
stored in the Empress Database.
Individual Denali objects can receive and transmit RPC messages. Central
to effective use in a Framemaker link environment is the concept of 'Threads'.
The calling tool continues running after passing the necessary
information while the receiving tool also continues to run. This is very
important because the 'follow link' message can be initiated from a
Frame document, and the 'link_capture' tool might then send a message
BACK to Frame to follow that link. If Frame were locked in an RPC message
we would have a deadlock situation.
To implement threads, Denali has extended the normal RPC protocol
to support the rendezvous concept so execution can occur after the
message transmission. The semantics are not as rich as some 'thread'
packages that do not have to perform a rendezvous, but they are as
powerful as the Ada rendezvous semantics.
The Denali Server accepts a set of 'class' level messages for
query, display and creation of instances. This allows information objects
to be invoked (displayed in a X-Window) from external messages. Thus
a 'link' might invoke a Denali window instead of a Frame window.
The 'Link_Capture' tool described above is implemented as a Denali object
which can be running on any number of distributed nodes at the same time.
USERS OF THIS LINK INFORMATION:
-------------------------------
Is there any way to capitalize on all the links being created
outside of the usefulness on manual hypertext navigation?
CODE GENERATION:
Our work is looking at the linkage between the different work
products in a software development life-cycle. Of particular interest
is in how to describe the interfaces between services (procedures/LRU's)
and users of those services. Ada code can be generated with varying
degrees of 'binding' completed allowing final decisions to be made
without effecting already 'bound' functionality.
SOFTWARE REUSE:
Searching and navigation through the various users of software components
can be achieved if their use is linked - and not just 'cut-and-pasted'.
OTHER GENERATIVE VIEWS OF YOUR WORK PRODUCTS:
Generation of documents that conform to the 'view' you wish. In the
Frame environment, a MIF document is generated with embedded hypertext
links that conform to your view.
GROUP COOPERATIVE WORK
We are exploring how names and functionality
can be delayed even when others are already using proposed information. The
'chicken-and-egg' problem where everything isn't known up-front and everything isn't
totally top-down. The links are created between the supplier and users of
information.
This seems to be the crux of group cooperative work and is usually
managed in a manual (non computer) and in-person manner. We are exploring how links
to empty (tbd) items can be made for a future binding process. That future
binding may still be manual (point-and-click), but concepts such as sending
electronic mail back to the originator of the unknown link. Currently people
need to manually find out who made the original link.
MAIL SERVERS FOR EXTERNAL SERVICES:
The distributed tools we have been using rely on high performance
workstations. How can these concepts be migrated or utilized by
lower level computers? The concept of a 'mail server' is being explored. Here
specific services are published and then invoked from other computers from
a simple electronic mail message.
Our main use of the mail facility is when links are broken or modified. Mail
can be sent to the current users of those links to let them be involved
in any group decisions. Creation of the links requires specifying the
necessary information to notify the person involved. Issues that remain
include: unread mail that needs timely response
(they were on vacation, or don't work there anymore), and other roadblocks.
CONCLUSION
----------
Framemaker is an excellent vehicle for showing the concepts of a distributed
linked environment. Coupled with other tools, especially a 'link database'
outside of Frame, allows a platform and tool independent use of those links.
Unfortunately Frame would also need some modifications to make maximum
benefit of a group cooperative environment. The changes could include
* by-directional links (both x-ref and hypertext)
* executing commands when changing hypertext information (to let
others know about the change)
* embedding links in frame via rpc calls
REFERENCES
-------------
'Using Hypertext in Selecting Reusable Software Components'
- Michael Creech, Dennis Freeze, Martin Gris
May 1991, HP Laboratories Technical Report: HLP-91-59
'Hypertext and CASE'
- James Bigelow
March 1988, IEEE Software
Information Capturing and Browsing Capabilities - Requirements
for the Intelligent Reusable Library Framework (IRLF)
- Scott Arthur Moody
August 1991
Boeing Technical Report: D180-32854-1
Interoperability Within the Life-Cycle Information Backplane (LIB)
- Scott Arthur Moody
August 1991
Boeing Technical Report: D180-32853-1
Exploring Frameworks and Representations for
Domain Specific Automatic Code Generation
- Scott Arthur Moody
Nov 1991
4th Annual Software Reuse Workshop
--
Scott Moody (206) 477-4295 "There are no answers .. just cross references"
scott@shuksan.boeing.com
uunet!bcstec!shuksan!scott
Technical Details
Message-ID:
<2240@shuksan.boeing.com>Path:
arc1-ca.pugleaf.net!sparky!uunet!bcstec!shuksan!sam2747Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!bcstec!shuksan!sam2747 From: sam2747@shuksan.boeing.com (Scott Moody) Newsgroups: comp.text,comp.text.frame Subject: Advanced use of Frame's Hypertext and RPC capabilities Keywords: hypertext, rpc-message driven, distributed environment Message-ID: <2240@shuksan.boeing.com> Date: 5 Aug 92 00:08:52 GMT Followup-To: poster Organization: The Boeing Co., MMST, Seattle, Wa. Lines: 287