I recently posted an article to a wide range of newsgroups asking for
information for details about any documentation systems which used an
"object oriented" approach to the documents themselves. I have had one
of the best responses I have ever had to a request for information.
In trying to track down this information, so many people expressed their
interest in such a documentation system, and it was surprising how many
said "it's such a simple and obvious idea, there must be something out
there that can do what you want" but were then unable to come up with
anything more concrete. Nevertheless, these people usually had some
useful contacts who were then able to help me out.
I would like to post a summary of the information that I have collected
in the last two weeks. I am merely the "gopher" and have already passed
this information on to the person who really wanted it, so I havn't
followed up on any of these suggestions personally. As a result, I have
no experience of using any of these products and techniques, nor can
I give any specific recommendations.
The replies that I had ranged from general comments about deciding what
the documentation system is really intended for, pointers to various
research work in the area, information about hypertext systems and tools
encompassing SGML and database systems. I have attempted to incorporate
as many of the relevant replies into this summary as possible. In most
cases I have removed any quotation of my original article to save space
so I apologise if some points may not be clear from the reply. You will
need to read them in conjuntion with the original which you can find at
the bottom of this particular article. I have grouped the relies into
related topics and have split the complete summary over several parts:
Part1: Introduction to the summary (this article)
Part2: General comments about documentation systems
Part3: Research work on such documentation systems
Part4: Product information: 1
Part5: Product information: 2
Part6: Product information: 3
I would like to thank all of those people who took the time and effort
to reply, even those whose contribution didn't make it into the summary
because it duplicated someone else's, or who merely pointed me in the
direction of someone else who knew more:
"Bill Davis" <wdavis@dw3f.ess.harris.com>
"Claude L. Bullard" <bullardc@source.asset.com>
"Jared L. Black" <erpdjlb@moment.unocal.com>
"Kevin Johnson" <krj@kevin.world.std.com>
"Steven R. Newcomb" <srn@techno.com>
Arthur Seaton <arthur@aiai.edinburgh.ac.uk>
Bill Davis <wdavis@dw3f.ess.harris.com>
Bradley Yearwood <bny@crl.com>
Digitome Ltd <digitome@iol.ie>
Fred K Weil <fredw@fred1.demon.co.uk>
Jan Grootenhuis <jang@xs4all.nl>
John Krieger <john.krieger@srs.gov>
John Mertl/MSL <John_Mertl@newman.microstar.com>
Mark Bullock <100273.722@compuserve.com>
Mike McNamara <mike@xyvuk.com>
alain godbout <sherpa@sherpa.synpase.net>
anallon@nile.slate.tdtech.com
aq083@freenet.carleton.ca (J. Arnold Free)
bill.fernandez@documentum.com (Bill Fernandez)
david@inf.rl.ac.uk
design@mr.net (Mark Wright)
dick@blaze.csci.csusb.edu (Dr. Richard Botting)
freeman-eric@CS.YALE.EDU (Eric Freeman)
haim@cc.bellcore.com (Haim Kilov)
iphase!digi!talisman!garylion@uunet.uu.net
jdking@space.honeywell.com
jdry@aol.com (Jdry)
jflavin@rain.org ()
john.newton@documentum.com (John Newton)
john@thunderstone.com (John Turnbull)
kjs@ebt.com (Kent Summers)
kevind@zNET.com (Kevin Dick)
kirchh@aol.com
kliang@mercury.raynet.com (Kevin Liang)
lupl@ensae.ericsson.se (Luitzen Planting)
meldahl@idt.unit.no
mvulpe@i4i.org (Michel Vulpe)
nagarajg@versant.com
parnas@qusunt.crl.McMaster.CA (David Parnas)
paula@texcel.no (Paula Angerstein)
robert@unisql.unisql.com (Robert Albach)
sampson@nile.slate.tdtech.com (Mark Sampson)
seixas@wolf.itg.ti.com (John Seixas)
suthers+@pitt.edu
tinkrkel@america.net (Kelly Caldwell)
vam@inf.rl.ac.uk
Please note that I tried to ask for permission via email to repost
all of the replies which I received. Unfortunately some of the email
didn't get through, so I do not feel able to include those people's
contributions. This is a bit of a shame, because there are several
interesting replies. If these people are reading, please follow-up
this summary and post your replies.
So, I hope that everyone out there will find this summary useful.
Cheers
Duncan
This is my article, not my employer's, with my opinions and my disclaimer!
--
Duncan Gibson, ESTEC/YCV, Postbus 299, 2200AG Noordwijk, The Netherlands
Tel: +31 1719 84013 Fax: +31 1719 12142 Email: duncan@yc.estec.esa.nl
###########################################################################
###########################################################################
Newsgroups: alt.cad,comp.databases.object,comp.groupware,
comp.infosystems,comp.object, comp.programming.literate,
comp.software-eng,comp.specification,comp.text,comp.text.sgml,
sci.engr.civil,sci.engr.manufacturing,sci.engr.mech,
sci.space.shuttle
Subject: Question: is there a complete documentation system?
Firstly I apologise for the wide cross-section of newsgroups, and I know
that this might not be completely relevant to all of them, but I did
choose them carefully.
Documents used in large projects, whether the projects involve software,
manufacturing processes, or complex pieces of hardware such as
skyscrapers and the space shuttle, usually run to hundreds and thousands
of pages. To make the documentation manageable, it is normally divided
into a series of smaller documents. Typically these documents tend to
be written by different groups of people, all involved in their own
fields, and the documents tend to duplicate definitions for things, or
describe interfaces between groups, systems or objects from both sides
of the interface.
Does anyone know whether there is a documentation system which supports
a more object oriented view of such large projects? For example, if the
hardware uses a switch, then the attributes of the switch are only
described in one place. If the mechanical structures people need to
know about the dimensions and weight of the switch, the information is
retrieved from the switch document. If the electrical engineers need to
find out what the operating parameters of the switch are, they get that
information from the switch document. Of course there are all sorts of
questions about configuration control for the documents if the switch
manufacturer changes some of the properties of the switch and higher
documents need to be consistent.
We've been wracking our brains trying to work out who would even know
about such a system - hence the assorted newsgroups - and apart from a
vague assumption that this is the sort of thing that companies involved
in huge manufacturing/construction projects might be interested in, we
don't even have a handle on where to start looking. Does anyone have
any ideas at all?
There are quite a few ways in which I have idly considered that it could
be done. It could boil down to an object oriented approach to
documentation, but maybe without the information hiding that OO software
systems tend to use. or maybe it's a documentation system built on top
of a huge database with the means of naming objects and their attributes
from the database. You could also consider it to be the ultimate in
hypertext documents. I really don't know where to start thinking about
such a system.
Cheers
Duncan
This is my article, not my employer's, with my opinions and my disclaimer!
- -
From: Bill Davis <wdavis@dw3f.ess.harris.com>
|> Documents used in large projects, whether the projects involve
|> software, manufacturing processes, or complex pieces of hardware such
|> as skyscrapers and the space shuttle, usually run to hundreds and
|> thousands of pages. To make the documentation manageable, it is
|> normally divided into a series of smaller documents. Typically these
|> documents tend to be written by different groups of people, all
|> involved in their own fields, and the documents tend to duplicate
|> definitions for things, or describe interfaces between groups, systems
|> or objects from both sides of the interface.
The documents produced will depend on the work process used for a
project. In large US government contract projects, there are often
standards specified in the contract.
|> Does anyone know whether there is a documentation system which
|> supports a more object oriented view of such large projects? For
|> example, if the hardware uses a switch, then the attributes of the
|> switch are only described in one place. If the mechanical structures
|> people need to know about the dimensions and weight of the switch, the
|> information is retrieved from the switch document. If the electrical
|> engineers need to find out what the operating parameters of the switch
|> are, they get that information from the switch document. Of course
|> there are all sorts of questions about configuration control for the
|> documents if the switch manufacturer changes some of the properties of
|> the switch and higher documents need to be consistent.
I have worked on projects where the switch gets described in multiple
documents. This may initially seem like a disadvantage, but when each
document describes only the attributes of interest, then any switch can
be substituted which meets the specified criteria. This is an
over-simplified statement, but it shows the advantage of not having a
single switch description.
|> We've been wracking our brains trying to work out who would even know
|> about such a system - hence the assorted newsgroups - and apart from a
|> vague assumption that this is the sort of thing that companies involved
|> in huge manufacturing/construction projects might be interested in, we
|> don't even have a handle on where to start looking. Does anyone have
|> any ideas at all?
You could document something in the same way that NASA documents the
space shuttle. You could document something the way an aircraft company
documents a new airplane. The big question is whether you want that
type of documentation. The more basic question you need to ask is "Why
am I going to document this?" Detailed answers to that question tell
you what you need in your documentation system. You may find that you
have different audiences and thus need to describe the same switch in
different documents from the point of view of the reader. The operator
of a piece of equipment will have a different view of the switch from
the designer. They will have different needs.
|> There are quite a few ways in which I have idly considered that it
|> could be done. It could boil down to an object oriented approach to
|> documentation, but maybe without the information hiding that OO
|> software systems tend to use. or maybe it's a documentation system
|> built on top of a huge database with the means of naming objects and
|> their attributes from the database. You could also consider it to be
|> the ultimate in hypertext documents. I really don't know where to
|> start thinking about such a system.
Information hiding is similar to the idea of multiple views in a
database. It has the same value when used properly because it provides
a way to speak to different audiences.
Decide what you are trying to accomplish with your documentation. Then
you will be better able to determine what you need.
Bill Davis wdavis@dw3f.ess.harris.com
- -
From: parnas@qusunt.crl.McMaster.CA (David Parnas)
For the last 5 - 8 years, my group and I have been researching the
topic of documentation and proposed both definitions of documents
and some new notations for use in them. I feel confident in saying
that our approach, while conventional in some ways, is quite consistent
with OO approaches. However, our emphasis has been on the use of
conventional mathematical concepts in this documentation.
Prof. David Lorge Parnas
Communications Research Laboratory
Department of Electrical and Computer Engineering
McMaster University,
Hamilton, Ontario Canada L8S 4K1
Telephone: 905 525 9140 Ext. 27353
Telefax: 905 521 2922
Telephone at home: 905 648 5772
Telefax at home: 905 648 5943
email: parnas@triose.crl.mcmaster.ca
###########################################################################
###########################################################################
From: dick@blaze.csci.csusb.edu (Dr. Richard Botting)
I'm note sure if there is any tool capable of the job. The research is
hardly of the ground yet!
My Masters Student Graham Tyack in the 1970's at Brunel University, London, UK
did some preliminary work on a design data base for large scale
system: such as: A coffe pot or an Airfield control system.
You might try the following book which is also heading in the same
direction:
Dasgupta 91, Subrata Dasgupta, Design Theory and Computer Science:
Processes and Methodology of Computer Systems Design, Cambridge U
Press NY NY 1991(Tracts in theoretical Comp Sci), engineering
methodology, Reviews: CR9207-0475, Am Math Monthly V100n4(Apr 93)
page 423
The term object oriented is a little misleading here since the idea
of documenting a thing once and then refereing to it else where is
found in data bases, data dictionaries, and some 1980's software
design methods.
You might get some ideas from:
Klein 93, Mark Klein, Capturing Design Rationale in a Concurrent
Engineering Teams , IEEE Computer Magazine V26n1(Jan 93)pp39-47
Tracz Coglianese & Young 93, Will Tracz & Lou Coglianese & Patrick
Young<tracz@vnet.ibm.com>, A Domain-Specific Software Architecture
Engineering Process Outline, ACM SIGSOFT Software Engineering Notes
V18n2(Apr 93)pp40-49, Teamware Process Programming Language and
diagrams
Nerson 92, Jean-Marc Nerson, Applying Object-Oriented Analysis and Design,
(Special Issue: Modelling) Comm ACM V35n9(Sep 92)pp63-74
For software only, the Feb issue of IEEE Trans on Software Engineering
has a paper on design documenttion with hypertext and objects.
The SIGCSE Software Engineering notes have had several papers
on the value of hypertext in (software)design.
My experiments with the rather over-simple WWW hypertext system and language
make hypertext an attractive proposition. The link in my signature
leads into a immature hypertext web of documentation... explore if
you can. It'll be like wanering around a laboratory when experiments are
going on however.... because it *is* my lab.
As you can see this is a topic I'm interested in... please
let me (or the comp.specification newsgroup) what you find.
--
dick@csci.csusb.edu=rbotting@wiley.csusb.edu.
Disclaimer::=`CSUSB may or may not agree with this message`.
Copyright(1995)::=Copy this freely but include the following link to the
<a href="http://www.csci.csusb.edu/dick/signature.html">author's
signature</a>
###########################################################################
###########################################################################
From: haim@cc.bellcore.com (Haim Kilov)
Yes. These are the right questions about managing the _intellectual
contents_ of documents. I don't know about a documentation system for
doing so (yet), but we have recently published in Bellcore a
description of the problems and some possible solutions based on
information modeling. There have been also conference and journal
publications. Obviously, system vendors are welcome!
Here's an abstract of this Bellcore document:
ST-2011, A Document Management Model, has been released in
December 1994.
This publication presents a document management model used to
understand and manage (telecommunications) documents of any
kind. The model is essential, in particular, for those who wish to
become content providers. It applies both to traditional paper
documents and to hypertext and hypermedia ones, but
concentrates on the currently used traditional documents. The
model clearly distinguishes between three big viewpoints: the
intellectual content, the logical layout, and the physical
presentation. The model clearly separates the concerns of document
semantics (explicit concept map) from the concerns of document
architectonics (logical layout): the business meaning of the
information does not depend on its presentation. The concepts and
approach presented in this publication are neutral with respect to
tools and technology used for document management.
Document users -- including document authors and managers --
acknowledge the need to understand documents by precisely
specifying their intellectual contents. It has been stressed by many
that businesses do not want or need fancy documents: they need
solution of their business problems.
All documents, regardless of medium (paper or electronic), have
essentially the same semantic properties that have to be understood
and explicitly dealt with. It is known how to understand and specify
information semantics in other application areas, and this
knowledge can be reused, leading to success and customer
satisfaction. As a result, a document user (including the author!)
will be able to understand, explicitly specify, and reuse the business
meaning -- the intellectual content -- of the information contained
in documents.
This model is based on general information modeling concepts that
have been developed in Bellcore and successfully used in other
application areas, most notably, in telecommunications, with the
goal of exposing appropriate business rules.
The audience of this ST includes all kinds of document users:
document authors, readers, browsers, and managers. It includes
also specialists in standardization, in particular, technology (e.g.,
SGML) standardization.
To obtain, call Bellcore customer service 1-800-521-2673, or fax
908-336-2559.
-Haim Kilov
haim@cc.bellcore.com
###########################################################################
###########################################################################
From: duncan@yc.estec.esa.nl
I talked to 'Toria Burril at RAL. They are currently working
one extension to HTML to provide ways of printing a flat
document from an HTML tree. You can find info in:
http://www.cis.rl.ac.uk/proj/www/docs/lightweight
She also said that it might be worth contacting Owl International
about their GUIDE product, or just ask for info. No contact details
yet, although I should be able to find something in BYTE or one
of those journals.
###########################################################################
###########################################################################
From: vam@inf.rl.ac.uk
There shouldn't be a problem in advertising the Lightweight
paper URL providing people realise that it's on-going research
so likely to change. (But then many things do this anyway!)
Victoria
###########################################################################
###########################################################################
From: John Krieger <john.krieger@srs.gov>
This sounds like a good application for the Standard Generalized Markup
Language (SGML). I didn't see your post in comp.text.sgml, so you might
want to trim it a bit and try there. Specifically, some people in the
STEP/PDES community are working on some of these kinds of issues.
On another tack, several years ago I and a couple of colleagues
developed tools for diagrams and procedures that linked into an
object-oriented database such that when you created a diagram or
procedure, you incorporated references to all of the objects. When the
diagrams or procedures were displayed, you could perform operations on
the objects (e.g., start a pump, close a valve).
Let me know if you would like more info; I may be able to provide some.
John Krieger, Westinghouse
###########################################################################
###########################################################################
From: Jan Grootenhuis <jang@xs4all.nl>
I am not aware of all your exact requirements, but the following must be
interesting.
Some years ago, a Han Schouten made a data model of SGML. This enables
one to store an SGML document in a semantically equivalent database, and
giving you the best of both worlds. His work was published in the last
SGML UG Bulletin, and discussed in Eric van Herwijnen's Practical SGML,
_First_ Edition. Han and I built a prototype for Oracle Europe's R&D.
However, Oracle's R&D Director and Han Schouten changed jobs, and our
work was probably shelved; however, we still have all code. Han's ideas
were also used to make a product SGML-DB used by Aerospatiale in France.
I would be very interested in diwscussing this approach with you, if you
like.
Regards,
Jan
--
Jan Grootenhuis Kralenbeek 1873 1104 KJ AMSTERDAM The Netherlands
Tel/fax (+31)20-699.89.66 Internet jang@xs4all.nl
- -
From: Fred K Weil <fredw@fred1.demon.co.uk>
Information on SGML databases can be found here.
http://galt.cs.nyu.edu/students/m-rd0107/sgmldbms.html.
Some supplier information
I am giving UK contacts as I assume from your address that you are in
Holland
Documentum
Jane Sherry
Rank Xerox
Tel +44 1707 352235
Fax +44 1707 352497
Xyvision
Stuart MacRae
Tel +44 1753 820565
Fax +44 1753 694944
Trimco
Alan Turner
Tel +44 181 579 8788
Fax +44 181 566 2422
Interleaf UK
Tel +44 1932 356800
Fax +44 1932 356810
Texcel
David Bragg
Tel +44 1753 833111
Fax +44 1753 854090
###########################################################################
###########################################################################
From: john.newton@documentum.com (John Newton)
In response to your inquiry on the Net, we are a maker of Object-Oriented
Enterprise Document Management Systems. Our architecture is client-server
based with clients on Windows, Mac and Unix and servers on various flavors
of Unix with NT coming soon. We expose the class hierarchy to the user as
well as to the developer. We also have a graphical user interface to make it
easy for end-users to manipulate and search for this information. For
application developers there is Document-Object-Oriented version of SQL
called DQL that allows the enumeration of classes as well as hierarchical
structures such as a documentation bill of materials.
We are concentrating our development and marketing efforts in the
manufacturing area. Our first customer was Boeing with the technical
documentation on the 777 aircraft.
If you would like more information, you can contact our European
Headquarters at:
Documentum International
Stockley Park Business Centre
The Arena Forum, Stockley Park
Uxbridge, Middlesex UB11 1AA
UK
+44 1 81 899 1743
Regards,
John Newton
Director, Product Development
Documentum
###########################################################################
###########################################################################
From: bill.fernandez@documentum.com (Bill Fernandez)
Greetings--
The company I work for makes such a system. For example it is used by
pharmeceutical companies around the world to manage their new-drug
applications, which are half a million pages long. Boeing and other
manufacturing companies also use our system. I'm in the engineering
department, but I'll supply our main office phone number and address below,
and they should be able to steer you to the European sales office that
handles The Netherlands. Good Luck. --Bill
Documentum, Inc.
4683 Chabot Drive #102
Pleasanton, CA 94588
USA
Tel: 510-463-6800
or try
Documentum Software Europe, Ltd.
in England
Tel: 44 181 899 1743
###########################################################################
###########################################################################
From: kirchh@aol.com
Duncan -
Project Xanadu, started in the '60s by visionary Ted Nelson (coiner of the
terms 'hypertext' and 'hypermedia'), considered this kind of problem.
Xanadu was taken on by Autodesk (makers of Autocad) in 1988, I believe,
and then cut loose in 1992. Things get a little hazy here - I gather the
commercialization of the Xanadu server fell to a newly formed company
called Memex, changed to Filoli in 1994 (email: try Gary Olsen -
Olson@filoli.com). When I last checked, the current incarnation of the
product was called AIDEMemoir. It was touted as being a multimedia
database, with support for all data types, versioning ('editions'), huge
databases, full hypermedia linking, full action audit trail, etc.
I recommend the Xanadu FAQ, found in
rtfm.mit.edu/pub/usenet-by-hierarchy/comp/groupware/Xanadu_World_Publishin
g_Repository_Frequently_Asked_Questions.
Other (somewhat less exotic) systems which might be worth a look:
- Documentum, a Xerox spinoff specializing in document management: try
Tom Witmer at (201) 845-5300; tell him Trilon referred you.
- Interleaf RDM, Intellecte, and WorldView: all document management
products from Interleaf. Try 800-955-5323. We've had trouble getting in
touch with knowledgeable people there, but give it a shot - their products
sound intriguing.
- Virtual Notebook, from the ForeFront group: A shared multimedia
notebook metaphor of sorts, with hypertext linking, real-time document
conferencing. 713-961-1101. My latest info is from December '93, but
I've seen their name pop up now and again.
- OpenMind: a client-server document management system. Gives users
several views of the information: Explorer View, for navigating
customizable subsections; Transcript View, which presents threaded
discussions; Search View, for full-text queries; and Track View, which
identifies new information on specific topics. OpenMind can display files
created by 150 applications; users can launch, modify and save documents
locally without having the creating program. Windows NT servers, Windows
clients, supposed to have Mac clients in October '94 ($995/server,
$295/Windows client;Digital Communications Associates (404) 475-8380)
[info from 8/94]
- MediaSphere: Doc mgmt system, centered on Adobe PDF (Acrobat format);
uses Sybase, Sun server, Mac, Windows clients; Full-text; uses their own
nat'l language search engine; "help publishers of electronic and paper
documents search through text, images, audio, and video using natural
language queries" ($64,000 to $112,000; Cascade, (508) 794-8000) [info
from 10/94]
Start with those - if you don't get anywhere, write and I'll rustle up
some more. If you do get somewhere, let me know what you find out.
--Daniel Kirchheimer
Director of Technology
Trilon, Inc.
###########################################################################
###########################################################################
From: Bradley Yearwood <bny@crl.com>
Symbolics had a documentation system called Concordia which ran in
their Lisp machine environment. It appeared to support the notion of
sharing common objects across multiple documents.
Concordia was described in a paper in IEEE Computer or IEEE Micro
circa 1987-1988. I cannot recall the author's name.
I am not certain whether Concordia is among the surviving fragments (if
any) of Symbolics.
Brad Yearwood bny@crl.com
Cotati, California
###########################################################################
###########################################################################
From: jdry@aol.com (Jdry)
For large paper trails, and or organization, I have seen a great object
oriented program. Metaphase Series 2, resold by SDRC (and others). It is
a data management system that will be enterprise wide. It sits ontop of
Oracle and will be available ontop of other databases. You can access the
database from Unix, Windows and Mac.
Call SDRC at 1-800-543-0869
Jonathan Dry
Designworks/USA
jdry@aol.com
###########################################################################
###########################################################################
From: "Jared L. Black" <erpdjlb@moment.unocal.com>
I have seen a system on UNIX called PDMS (plant design and management system)
that may be what you are interested in. It is from a UK company, CAD CENTRE;
the only office I know of is in Houston Texas, USA. Their number is
713-977-1231, and the contact is Irv Levine.
J. Black
###########################################################################
###########################################################################
From: kevind@zNET.com (Kevin Dick)
The need that you describe would, in my opinion, fall under the category of
Product Information Management (PIM) systems. These systems can track
documents in any format, arbitrary relationships between these documents, and
the flow of these documents through the product development process.
I am a consultant to Objectivity (maker of the Objectivity/DB ODBMS) and I know
they have at least two customers who use Objectivity/DB as the storage engine
for their commercially offered PIM system. I believe the names of these
companies are Adra and Matra. Unfortunately, I do not have contact information
for these companies. However, you can contact Objectivity and find out.
They are located in Mountain View, CA, USA. Their phone number is
(415) 254-7100. The best person to ask would be the Director of Marketing,
Craig Woods. His email is craig@objy.com
Hope this helps,
Kevin Dick
###########################################################################
###########################################################################
From: duncan@yc.estec.esa.nl
I also received received information from Zwany de Graaf of Objectivity Europe
In addition to the information from Kevin Dick (above), she also sent me some
information about MATRIX.
"MATRIX is an Information Management System for all kinds of applications.
It includes a comprehensive workflow management cpapbility, which allows
you to track any document and related images through your organisation.
It operates with existing software on existing hardware in a fully
distributed environment."
Her address is:
Zwany de Graaf
Objectivity Europe
Rondedans 3
2907 AA Capelle a/d IJssel
The Netherlands
Tel/Fax: +31 104 583 986
###########################################################################
###########################################################################
From: sampson@nile.slate.tdtech.com (Mark Sampson)
We were forwarded your request via Versant (our OODB supplier).
They felt that what you were describing in your message is what
we supply in our SLATE tool (System Level Automation Tool for
Engineers). SLATE was designed to support the Systems Engineering
process--the capture of customer requirements, translation of those
requirements into detailed design specifications, and generation of
documents from that analysis. SLATE was built on top of a multi-user
Versant OODB, is integrated with Framemaker, and has a GUI specifically
tailored for the System Architects/Engineers that allows them
to perform trade-off studies, document the results of those studies,
and then manage projects to conform to those requirements.
I will contact our European representatives and have them contact
you and supply you with further information. In the mean time I
suggest you browse our WWW Home page at:
http://www.slate.tdtech.com
or you can contact me or any or our marketing/sales folks directly via email
or phone:
sampson@slate.tdtech.com
(214)669-9937
Regards from Texas,
Mark Sampson
TD Technologies
(214)669-9937
sampson@slate.tdtech.com
###########################################################################
###########################################################################
From: freeman-eric@CS.YALE.EDU (Eric Freeman)
Hi, you might check into the CALS software project that is (was) done
under DARPA or NRL. I've located the web site with CALS information:
http://navysgml.dt.navy.mil/cals.html
and I'm assuming you are already aware of OLE and OpenDoc.
Thanks,
Eric
###########################################################################
###########################################################################
From: seixas@wolf.itg.ti.com (John Seixas)
There used to be a tool called Context, which was specifically made to
order for this purpose. It was used by Boeing in Sattle to handle
manufacture and maintenance of aircraft. It is ny understanding that
the company (Mentor Graphics) no longer supports this tool. The next
best tool that I know of is Interleaf (UK +44 1932 356800, US 1 800 688
5151). It is set up to handle large interconnected sets of documents,
and their Active Link Tool (bundled with the latest release 6.x) should
support your hypertext needs.
###########################################################################
###########################################################################
From: kjs@ebt.com (Kent Summers)
We have a complete SGML-based e-publishing solution (that is,
everything but the authoring component, several good ones of which we
have integrated). BTW, the Context guys now work for EBT on Dynabase,
our object-oriented SGML mgmt system built atop ODI's objectstore.
email 'info@ebt.com' for more information.
###########################################################################
###########################################################################
From: "Claude L. Bullard" <bullardc@source.asset.com>
The current threads on adding procedural constructs to SGML and the
questions about supporting documents used in large projects (which I call
enterprise-wide documents), are interesting because they are the same
issues from some perspectives. Since Kent Summers mentions that EBT is now
the proud employer of some portions of the former Context Inc developers
(Mentor Graphics spin-off company, not to be confused with InContext),
there are some *war stories* that might be of interest. BTW, Kent, you
have a coup in that group. They were in 1989, one of the most forward
looking groups I knew and I learned much from them. Most of my outlook on
what is *possible* with document systems was initially formed by that
system and those people.
At GE, we worked with the Context group to develop one of the first and
most successful CALS authoring and delivery systems. To be honest, the
acceptance of SGML by Context was grudging, but Charlie Sorgi published a
paper on the subject that was direct and extremely prescient as he
described most of the advantages and disadvantages of using SGML. Charlie
coined the term "SGML Nazis" which was his view of standards groups.
Still, they did an excellent job of tieing SGML to the side of the existing
system. Historically, at a certain point in development as they were about
six years ahead of the market, the original developers went on to work on
the "object" projects for Mentor, and the SGML system languished, was
broken (hardwiring tags was then and is now the single biggest stumbling
block for OOPSMen), and was abandoned. Doing SGML for *real* with the
Context system would have required complete redesign of the formatting
engine which was a WYSIWYG system with a very powerful scripting language.
The database side of the design, which was Greg Lloyd's baby at the time,
was very powerful but somewhat hard to set up and maintain and seemingly,
difficult to integrate with the SGML *bag* on the system design. It did
work with care.
However, the scripting language integration was superior. I used some of
those concepts to design the MID. With it, we were able to take the
original scripts given to us by Context, extend them, and completely
automate the production of SGML documents and raster-based hypermedia. The
results of the customization efforts achieved by technical writers with
very shallow programming backgrounds were astonishing. Interfaces to the
LSAR database and automatic document construction (No Hands, Ma! Honest!!)
were achieved. The capabilities that WebHeads find astonishing were common
fare and it was possible to manage the documents as well as the graphics.
While the implementation of SGML was rudimentary, it implemented the 10%
that does 90% of the work.
DTDs were used to parameterize the editors so each author worked with only
the constructs they needed for a document type. The SGML could be hidden
or visible. The print version worked without the need for a FOSI, and the
system could be maintained and extended by the technical writing staff.
The project delivered complete documents ahead of the hardware, and at
validation/verification, it was the TMs that were used to test the hardware
as they were superior in every respect to the other CDRL-required data
products. We got a 10 for 1 improvement in productivity, and at the end,
were mainly just entering information on lazy days while the tools did the
grunt work. For a frankly, very small up front investment of time and
learning, we possessed an extremely powerful production tool. The works
that I published (Enterprise Engineering and Beyond the Book Metaphor) were
based on the lessons learned from that system.
My point here is that script integration can provide much of the
capabilities that Ms. Holstege and Mr. Prescod are debating. Scripting is
a way to create highly interactive environments to support mission
configured enterprise performances. Had the Context developers gone
further with their SGML product development (for example, support for
entities ... sigh, the same mistake being made by the Web developers),
Mentor would own the document management market at this time. It has been
said, that their closest competitor at the time, Datalogics, was greatly
relieved when Context closed its doors.
I've yet to see a system that can come close to what was achieved there and
I have looked. I feel like Arne Saknussen on this one: follow the signs to
the center of the Earth. I've been there and testify on my bleached bones.
It would be interesting if some of the former Context employees could
compare their current work with SGML products and their work at Context.
While I don't usually support application mongering, the experience of
these individuals is unique and could offer great insight into what is
technically possible and where the "rocks are".
Len Bullard
###########################################################################
###########################################################################
From: Mike McNamara <mike@xyvuk.com>
Let me introduce myself and my Company, I am Mike McNamara, Operations Manager
for the European Offcie of Xyvision Inc., a Boston, USA based company. Xyvision
is a UNIX software house specialising in software for Publication Production
"Parlance Publisher" (XPP) and Document Management "Parlance Document Manager"
(PDM).
We sell our software into two main market areas; 1) Commercial Printing and
Publishing for the production of Books, Learned Journals, Legal/Medical
Looseleaf publications, Directories, Cataloguesand and Telephone Directories
and 2) Corporate markets for Product Support Documentation such as Technical
Documentation for Aerospace, Electronics, Utilities companies.
We do have a WWW server setup which has a full set of information available,
this can be found http://www.xyvision.com and in particular how PDM deals with
"objects" and what can be done to them, I have included one one of those pages to
this email.
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
Xyvision Publishing Systems
Xyvision designs and markets two products for publishing professionals
Parlance Publisher and Parlance Document Manager.
Parlance Publisher goes beyond traditional composition and pagination systems by
automating the entire publishing process--from input of text and graphics to
output of fully composed paginated pages, film separations, or electronic output.
Designed to operate in an open publishing environment, Parlance Publisher
accepts most text, database, and graphic formats; enables live links to
UNIX-based graphics programs, and outputs to a variety of post-processing
applications including imposition software, electronic page turners, and online
viewers. Its speed, power, and background processing capabilities have earned
Parlance Publisher the reputation as the most versatile and powerful composition
system available today.
Parlance Document Manager (PDM) is a client/server information management system
that stores document elements as information modules in a central database,
allowing these elements to be shared and reused in multiple documents. PDM
supports modules of varying sizes and formats, including SGML, and provides
version control, built-in workflow, and content management that automate
editorial processes for large, complex publishing projects. It is well suited
for use in publishing environments with large amounts of text, graphics, and
other data that are formatted and published in multiple versions or on multiple media.
Xyvision software runs on Sun(R) SPARC(TM)stations and servers under Sun OS and
Solaris(TM), IBM(R) RS/6000 servers under AIX(TM), and DEC(R) servers under
ULTRIX(R).
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
We also have a distributor in the Netherland. I have sennt a copy of this email
to Marcel Croese, the Slaes Manager of Mahez B.V. If you need to call them, the
telephone number is +31-20-587-2222.
Looking at the brief comment made in your email, I think that Xyvision does have
a product that would meet you requirements, with that in mind I would like to
send you a set of brochures if you can send me your address.
Please feel free to call/email/fax me if you need more information.
Regards
* Michael J. McNamara Tel: +44-1753-820565 *
* Senior Operations Manager, Europe Fax: +44-1753-694944 *
* Xyvision Ltd, Mobile: +44-385-313352 *
* 246 Bedford Ave. e-mail: mike.mcnamara@xyvision.com *
* Slough, Berkshire. Compuserve: 100013,3502 *
* SL1 4RJ. U.K. *
###########################################################################
###########################################################################
From: mvulpe@i4i.org (Michel Vulpe)
Infrastructures Company Introduction
Thank you for your interest in Infrastructures products. The following
information provides an introduction to our products and philosophy.
Infrastructures was formed to address the single most important issue
facing business' today, management of information as an intellectual asset.
We offer database products that use native SGML object management
technology to reuse information providing a system solution that develops,
manages, and delivers complex documents independent of format, platform, or
application.
Management of Intellectual Assets -- An Introduction
The primary use of computers by far is for document processing. According
to Dataquest (San Jose, CA), 98% of business computer users employ word
processing software on their personal computers and many use their PCs only
for word processing. Industry analysts, note that at least 80% of
corporate electronic information is in the form of documents, as opposed to
structured database records. Because of advances in word processor
technology, documents are no longer merely an electronic analog to paper,
but rather dynamic, modular, multimedia entities. The current software
file/application paradigm can create the information, but manages it very
poorly or not at all. Any attempt to reuse the information requires a
duplication of the original environment.
The user community is driven by the need to manage its intellectual assets
as a result of frustration with the growing glut of information that was
expensive to manufacture and cannot be financially managed or tracked.
Infrastructures' VISion technology advances the information management
paradigm beyond the inherent limitations of files and applications. By
combining the structured world of database technology with word processors
and networks, Infrastructures creates an environment that fulfills the
promise of technology as a means of improving productivity.
Many organizations have access to large volumes of information. Relatively
few can economically transform those knowledge resources into valuable
products. The constant challenge for these organizations is to:
> reuse their information resources
> make their knowledge base accessible,
> extend the useful lifetime of the information,
> be capable of tailoring the knowledge to a specific user, and
> create information that is not dependent on any specific media.
Despite the cost of developing and publishing computer-based information
products, rarely do these products leverage the information assets of the
organization. The ability to economically reuse underlying information
components is the key. Infrastructures provides a database environment
integrating the underlying resources of text, images, and other materials
into logical information products that can be delivered on paper or
electronically via the Internet.
Infrastructures Information Management Systems - The VISion
Product Overview
The VISion=A9 product family is an on-line client/server Document
Manufacturing System that uses Virtual Information Space technology or
VIS=A9. Built with the Application Development Tool Kit, it is designed to
manage the efficient transformation of raw information into various useful
information products. VISion products apply the discipline of the
manufacturing environment to the business of document production, imposing
clearly defined standards for both format and content, promoting
reusability of components, and enforcing communication among all those
involved in the process of building a document. VISion guides a document
through every stage of its evolution, from a primary draft to a finished,
published document.
VISion gives its users electronic access to all the information components
used in constructing document information: text, graphics, comments,
approvals, and annotations. VISion combines groupware mail distribution
functions with the structure of a document to create a framework for
collaborative development.
VISion stores, in a full function DBMS, each version of a document together
with all the approvals, comments, and annotations associated with each
stage. It also stores information on all its users, their organizational
relationships, and the roles they play in building various documents.
The VISion Product Family
The Infrastructures' VISion family of products has been designed to provide
a clearly defined implementation path. Building on the existing database
and communications infrastructure, this implementation path offers two
major advantages for Infrastructures' customers; functionality and
migration strategy.
The VISion family consists of three products: the first is a relatively
inexpensive way for an organization to take the initial step into a world
of information manufacturing and management. The next two steps compliment
the first, moving in stages to exploit "virtual information space" or VIS
technology to its fullest. Nothing is lost along the way. Staged
implementation entails no waste of money or resources.
The path begins with VISion 1; a system that offers simple, database-driven
document management with automated distribution of documents. VISion 2
provides the user with SGML support, logical decomposition of documents,
and algorithmic composition capabilities. Finally, VISion 3 technology
manages documents as collections of reusable information objects or logical
documents in a virtual information space, allowing communication between
VISion Servers in either replication mode or as virtual information servers
similar to the way the World Wide Web (WWW) uses HTML documents.
=46inally, VISion is a complete document development, management, and
distribution environment. Using tools resident on the desktop, the system
builds a structured environment that allows an information product to be
electronically distributed and maintained. VISion offers the ability to
manipulate and link low level information objects or components without the
limitations imposed by the traditional document/file paradigm and supports
the following features:
> authoring using your current desktop tools (including SGML/HTML)
> document management (versioning, archiving, and approval)
> media-independent publishing (paper, on-line, CD-ROM)
> multi-media development
> electronic distribution over existing Email systems
> virtual document development
The VISion Remote Client is a companion to the VISion Server and interacts
with the server over public access networks such as the Internet or over
local area networks. Together, these two products introduce a
client/server solution dramatically improving traditional composition-based
approaches to information management.
Productivity Improvements
The rational for adopting a systematic approach is economic in nature as
the cost of developing information products increases. Gaining a
productivity enhancement by automating the labor intensive aspects of the
information development process and reducing the number of process steps is
desirable. Infrastructures' systems establish a systematic method to
maximize information reuse, automate composition and output, and allow the
exchange of information electronically. If you would like additional
information, please contact an Infrastructures representative.
To Contact Infrastructures
In the US:
990 Hayman Place
Los Altos, CA 94024
tel 415.969.7363
fax 415.969.7003
Internet: syoung@i4i.org
In Canada:
330 Dupont Street
Suite 302
Toronto, Ontario M5R 1V9
tel 416.920.6489
fax 416.920.6493
Internet mvulpe@i4i.org
- -
From: "Steven R. Newcomb" <srn@techno.com>
Sounds like you're looking for HyTime. I'm attaching first a letter
about HyTime, and second a letter about HyMinder, our implementation
of HyTime.
Best regards,
Steven R. Newcomb | TechnoTeacher, Inc.
direct +1 716 389 0964 | (courier: 3800 Monroe Avenue,
main +1 716 389 0961 | Pittsford, NY 14534-1330 USA)
fax +1 716 389 0960 | P.O. Box 23795
Internet: srn@techno.com | Rochester, New York 14692-3795 USA
********************************************************************************
(The remainder of) This letter contains information about SGML,
HyTime, and related matters. It is intended to help you find the
information you are looking for. We send this letter to people like
yourself who inquire about various matters. This letter does not
discuss TechnoTeacher products and services and it is not trying to
sell you anything. At your request we will gladly send you
information about our International HyTime Workshop series (which is
the best way to learn HyTime available today) and our HyMinder
SGML/HyTime engine technology, a unique all-in-one SGML and HyTime
services library of C++ classes.
Best regards,
NOTE NEW ADDRESS, PHONE NUMBERS:
Steven R. Newcomb | TechnoTeacher, Inc.
direct +1 716 389 0964 | (courier: 3800 Monroe Avenue,
main +1 716 389 0961 | Pittsford, NY 14534-1330 USA)
fax +1 716 389 0960 | P.O. Box 23795
Internet: srn@techno.com | Rochester, New York 14692-3795 USA
********************************************************************************
HyTime, SGML, etc.
``HyTime'' is the nickname of the ISO/IEC International Standard
10744:1992, whose long name is ``Hypermedia/Time-based Structuring
Language.'' It provides a worldwide standard technical framework for
integrated open hypermedia, including the ``SMDL'' Standard Music
Description Language (ISO/IEC Committee Draft 10743).
There is as yet only one authoritative reference work on HyTime:
the HyTime standard itself. Copies of the standard can be obtained
from your nation's standards organization. In the United States, this
is the American National Standards Institute (ANSI), 13th Floor, 11
West 42nd Street, New York, New York 10036-8002 USA (tel: +1 212 642
4900, fax: +1 212 398 0023, Cable: Standards, New York, International
Telex: 42 42 96 ANSI UI, D-U-N-S 07-329-4837. Last we heard, the ANSI
price of the 10744 standard was $98.
Introductory articles about HyTime can be found in the November 1991
issue of _Communications of the ACM_, and in the July 1991 issue of
_IEEE Computer_. These articles are slightly inaccurate in some
details; they were written prior to HyTime's final version as adopted
the following year.
One book about HyTime has appeared: _Making Hypermedia Work_, by Steven
DeRose and David Durand, published by Wolters Kluwer. This book is
well regarded in some respects, but its many technical errors and its
tendency to confound addressing with linking make it unreliable as a
reference work on the subject of HyTime. We are told that the authors
have a new edition in the works that will appear shortly.
Another book is in press at this writing: _Practical Hypermedia_, by
Eliot Kimber, published by Simon & Schuster. We have seen drafts of
this book and we like what we have seen. It is likely to be reliable,
since it appears in a series edited by Charles Goldfarb, who chaired
the HyTime committee.
Courses, workshops, and conferences on HyTime (and SGML, see below),
as well as on other topics of interest to the information industry,
are presented by the Graphic Communications Association (GCA). For
more information, please contact the GCA at 100 Daingerfield Road, 4th
Floor, Alexandria, Virginia 22314-2228 (tel: +1 703 519 8160, fax: +1
703 548 2867, Telex: 510-600-0899, Internet: mern@well.sf.ca.us).
Among its many other SGML-related services and activities, the GCA
publishes a directory of commercially available SGML tools, software,
and services.
``SGML'' is the nickname of the ISO/IEC International Standard
8879:1986, whose long name is ``Standard Generalized Markup
Language.'' SGML, which forms the basis of a number of standards
including HyTime, allows all kinds of information to be interchanged
among dissimilar information processing systems. In effect, HyTime
extends SGML by providing a set of ``SGML architectural forms,'' whose
syntax and semantics are standardized by HyTime, and which allows
system-independent expression of hyperlinks, information addresses,
placement of information objects in time and space, etc.
The standard, authoritative reference work on SGML is Charles Goldfarb's
_The SGML Handbook_, published by Oxford University Press. We
highly recommend this book, which contains the verbatim text of the
ISO 8879 standard itself, along with considerable explanatory text.
The ``SGML Users' Group'' is an international body which performs a
number of important functions in promulgating the understanding and
use of SGML, including sponsoring conferences and special interest
groups, publishing public domain information, etc. To join the SGML
Users' Group, contact Stephen G. Downie, Secretary, SGML Users'
Group, c/o SoftQuad Inc., 56 Aberfoyle Cres., Suite 810, Toronto,
Ontario, Canada M8X 2W4 (tel: +1 416 239 4801, fax: +1 416 239 7105).
Other questions, concerns, and issues should be brought to the
attention of Ms. Pamela L. Gennusa, President, International SGML
Users Group, c/o Database Publishing Systems Ltd., 608 Delta Business
Park, Great Western Way, Swindon, Wiltshire SN5 7XF, United Kingdom
(tel: +44 793 512 515, fax: +44 793 512 516, Internet:
dpsl!plg@visionware.co.uk).
``SGML SIGhyper'' is the nickname of the SGML Users' Group's ``Special
Interest Group on Hypertext and Multimedia,'' which is the HyTime SIG.
For more information about SGML SIGhyper, please contact Mr. Erik
Naggum, Chairman, SGML SIGhyper, Naggum Software, Irisveien 12, POB
1570 Vika, 0118 Oslo, Norway (tel: +47 2295 0313, fax: +47 2216 2350,
Internet: erik@naggum.no). SGML SIGhyper maintains an FTP site, as
part of its mission to promulgate information about HyTime. The FTP
site is
ftp.ifi.uio.no in the directory ``pub/sgml/SIGhyper.'' This
site is sponsored by the Department of Informatics at the
University of Oslo, Norway.
At this site can be found, among other things:
* Free SGML parsers for a variety of platforms. These
parsers are unsupported, and they do not support all of the
features of SGML, but they really do work and they are quite
useful.
* An excellent bibliography of SGML source materials, created
and maintained by Robin Cover.
* A catalog of HyTime architectural forms (i.e., the HyTime
meta-DTD, which constitutes the formal description of HyTime
itself).
* Other items of interest, such as draft CApH advisory
documents.
``comp.text.sgml'' is a Usenet discussion group which is an absolute
must for anyone who is serious about SGML or HyTime. If you can not
receive this news group in the usual way, you can request to have it
forwarded to your e-mail address daily. Please send such requests to
the Internet address ``comp-text-sgml-request@naggum.no.'' (To
contribute articles to comp.text.sgml, you can send them to
``comp-text-sgml@news.naggum.no.'') Copies of the comp.text.sgml
archives can be recovered by anonymous FTP from ftp.ifi.uio.no.
<TAG>, published monthly, is the only regular source of information
for the SGML industry: articles, reviews, product news, tutorials,
standards updates, user group information, case studies, and useful
technical tips and information. <TAG> is designed to be an objective
voice of the SGML community; it accepts no advertising and encourages
frank and open debate on the issues faced by the information
publisher. Please contact SGML Associates at +1 303 680 0875, fax: +1
303 680 4906, or Internet: tag@sgml.com.
``CApH'' is the nickname of the GCA Research Institute's (GCA-RI)
``Conventions for the Application of HyTime'' activity. This is an
open industrial design committee whose purpose is to develop and
publish advisory documents showing how HyTime can be used in
particular contexts to do represent particular things, such as indexes
based on knowledge bases, licensing information, tabular data, etc.
etc. For more information about CApH, contact the GCA at the address
given above.
Another fascinating HyTime application is the US Department of
Defense's ``Metafile for Interactive Documents (MID)'' initiative,
intended to allow all databases of technical information for weapons
systems to be ``plug-compatible'' (as it were) with all Interactive
Electronic Technical Manual (IETM) delivery systems. A report about
this work dated November 1994 is available via anonymous FTP from
navysgml.dt.navy.mil in the pub/ietm/mid directory. This directory is
also accessible from the NAVY DTD/FOSI Repository via the Wide World
Web via http://navysgml.dt.navy.mil/ (Point of Contact for the NAVY
DTD/FOSI Repository is Betty Harvey, CDNSWC Code 183, Bethesda, MD
20084-5000 or via email: harvey@oasys.dt.navy.mil .)
The ``Davenport Group'' is a group of Unix system vendors and vendors
of related hardware, software, and services whose purposes include the
creation of SGML-based conventions for representing online software
documentation. Some public participation is permitted. For more
information, please contact Dale Dougherty, c/o O'Reilly & Associates,
Inc., 103A Morris Street, Sebastopol, California 95472 USA (tel: +1
707 829 0515 or +1 800 998 9938 (home office: +1 707 829 3762 or +1
707 829 3762), fax: +1 707 829 0104, Internet: dale@ora.com) or Ralph
Ferris, c/o Fujitsu Open Systems Solutions, Inc., 6121 Hollis Street,
Emeryville, California 94608-2092 USA (tel: +1 510 652 6200 x421, fax
+1 510 652 5532, Internet: ralph@ossi.com).
``SGML Open'' ``is a non-profit, international consortium of
providers of products and services, dedicated to accelerating the
further adoption, application and implementation of SGML, the
international standard for open interchange of documents and
structured information objects. SGML Open provides its members with
an open forum to discuss market needs and directions, and to recommend
guidelines for product interoperability. The consortium receives,
coordinates and disseminates information describing SGML
methodologies, technologies, and implementations.'' For more
information, contact Larry Bohn, President, SGML Open, c/o Interleaf,
Prospect Place, 9 Hillside Avenue, Waltham, MA 02154 (tel: +1 617 290
0710, fax: +1 617 290 4943).
Some Implementations of HyTime:
``HyMinder,'' a HyTime engine. (TechnoTeacher, Inc., P. O. Box 23795
Rochester, New York 14692-3795 USA. hyminder@techno.com.)
``HyOctane,'' a HyTime engine. (Interactive Media Group, Center for
Productivity Enhancement, University of Massachusetts--Lowell, One
University Avenue, Lowell, Massachusetts 01854 USA. buford@uml.edu.)
``ObjectSGML,'' a HyTime/SGML parser. (Information Technology Research
Center, Yuan-Ze Institute of Technology, 135 Far East Road, Neiti,
Taoyuan, TAIWAN R.O.C. cssmju@cs.yzit.edu.tw.)
``SoftQuad Explorer,'' a HyTime document editor/browser. (SoftQuad
Inc., 56 Aberfoyle Crescent, Suite 810, Toronto, Ontario, CANADA M8X
2W4, +1 416 239 4801, fax +1 416 239 7105, linda@sq.com, Applelink:
SoftQuad.)
Some HyTime consultants and other HyTime-related service providers:
High Text S.A.R.L., 5, rue d'Alsace, 75010 Paris, FRANCE, +33 1 4205
9315, fax: +33 1 4205 9248, MBIEZUNSKI@MCIMail.com
Martin Hensel Corporation, 233 Needham Street, Newton, Massachusetts
02164 USA, +1 617 527 3230, fax +1 617 527 1929,
71542.510@compuserve.com
Passage Systems Inc., 9971 Quail Boulevard, Suite 903, Austin, Texas
78758 USA, +1 512 339 1400, fax +1 512 339 3618, kimber@passage.com.
TechnoTeacher, Inc., (courier: 3800 Monroe Avenue, Pittsford, NY
14534-1330 USA), P.O. Box 23795, Rochester, New York 14692-3795 USA,
+1 716 389 0961, fax +1 716 389 0960, hyminder@techno.com.
Best regards,
NOTE NEW ADDRESS, PHONE NUMBERS:
Steven R. Newcomb | TechnoTeacher, Inc.
direct +1 716 389 0964 | (courier: 3800 Monroe Avenue,
main +1 716 389 0961 | Pittsford, NY 14534-1330 USA)
fax +1 716 389 0960 | P.O. Box 23795
Internet: srn@techno.com | Rochester, New York 14692-3795 USA
********************************************************************************
********************************************************************************
Thanks for your interest in TechnoTeacher's HyMinder SGML/HyTime
engine. It can take the sting out of adding HyTime and SGML
compliance to your C++ applications, because it can handle all the
chores involved in parsing (importing), changing, reorganizing,
processing, validating, and exporting information represented
according to the ISO SGML and HyTime standards. In other words,
application programmers can concentrate on the application-specific
portions of their software, and still equip their applications with an
ability to read and write information that can participate in the
worldwide mainstream of information processing.
This product, by itself, is useful only to C++ programmers. HyMinder
has no end-user interface, although many applications can be readily
built by adding a user interface.
We are now shipping version 0.8.x of the HyMinder engine to customers
whose planning cycles require that they begin evaluations as soon as
possible. We will provide to these early customers all updates
(including documentation improvements and bug fixes) until version
1.0, which they will also receive, and for one year thereafter,
without additional charge.
The HyMinder engine is the only SGML system available which was
designed specifically to support the heavy demands of HyTime (ISO/IEC
10744) processing, while also supporting a comprehensive array of SGML
functionalities. It is built to serve as the SGML-handling substrate
of any application that requires any portion of the semantic
processing implied by the HyTime standard, e.g., hyperlinking,
scheduling and extended document management and validation.
Best regards,
Steven R. Newcomb | TechnoTeacher, Inc.
direct +1 716 389 0964 | (courier: 3800 Monroe Avenue,
main +1 716 389 0961 | Pittsford, NY 14534-1330 USA)
fax +1 716 389 0960 | P.O. Box 23795
Internet: srn@techno.com | Rochester, New York 14692-3795 USA
enc: HyMinder Technical Information sheet
HyMinder License Information sheet
sample MarkMinder/HyMinder system application: Browse.cc
*******************************************************************************
HyMinder Technical Information
TechnoTeacher, Inc.'s HyMinder HyTime engine is for those who wish to
write applications that can create and/or process hypermedia documents
represented in the internationally standard HyTime language, and for
those who wish to create object-oriented SGML applications or retrofit
existing applications so that data can be interchanged in the form of
SGML documents.
The HyMinder HyTime engine is a C++ library which offers an
easy-to-use and comprehensive API to the information contained in SGML
and HyTime documents. When using the HyMinder system, programmers can
regard each syntactic and semantic construct (described by the SGML
and HyTime standards) as a persistent C++ object, and all such objects
can be manipulated, altered, validated, and/or automatically exported
as SGML/HyTime-conforming documents.
The HyMinder system incorporates TechnoTeacher's MarkMinder SGML
engine, which contains an SGML parser and exporter and allows editing
and validation of DTDs, elements, and attributes while in database
form. The MarkMinder engine's SGML database technology allows it to
rapidly and randomly read, write, and/or alter the structures,
attribute values, contents, etc. of several databased SGML documents
simultaneously.
The HyMinder HyTime engine's object classes add the hyperlinking,
scheduling, and extended document management and validation facilities
of HyTime to the MarkMinder SGML engine substrate. The HyMinder
engine performs validation and processing tasks that are specified and
implied by the HyTime standard, such as verifying the compliance of
elements with HyTime architectural forms, resolving hyperlinks,
providing anchor notification, providing traversal services between
separate documents, responding to queries expressed in HyTime's query
language (HyQ), assisting applications in managing the rendition of
events in time- and space-based documents, etc.
Version 0.8.2 of the HyMinder C++ library is currently available on
SPARCs running SunOS 4.1.x with GNU g++ 2.x, for SPARCs running
Solaris 2.x with SPARCompiler C++ 3.0.1, and for 80386 and 80486
machines running Linux 0.99.14 (libc 4.4.4) with GNU g++ 2.x. Support
for other platforms is planned, and an MS Windows version is about to
be released; please make your needs known.
TechnoTeacher, Inc.
(courier: 3800 Monroe Avenue,
Pittsford, NY 14534-1330 USA)
P.O. Box 23795
Rochester, New York 14692-3795 USA
voice +1 716 389 0961
fax +1 716 389 0960
Internet: HyMinder@techno.com
Anticipated HyTime Module Support:
Version | 0.8 | 0.9 | 1.0 | 2.0
Base | p | p | p | c
Measurement | p | p | p | c
Location Address | p | p | p | c
Hyperlinks | p | p | p | c
Scheduling | | | p | c
Rendition | | | p | c
Anticipated HyTime Module Option Support:
Version | 0.8 | 0.9 | 1.0 | 2.0
BASE MODULE
context | | | | c
lextype | | | | c
HyLex | | | | c
lexord | | | | c
refctl | | c | c | c
exidrefs | | c | c | c
dvlist | | | c | c
desctxt | | | c | c
activity | | c | c | c
dcnatts | | | c | c
xpropdef | | | | c
HyPD | | | | c
unparsed | | | | c
MEASUREMENT MODULE
dimref | | | | c
markfun | | p | p | c
HyOp | | p | p | c
HyFunk | | p | p | c
homogran | | | | c
fcsmdu | | | | c
axismdu | | | | c
LOCATION ADDRESS MODULE
multloc | p | c | c | c
spanloc | | | | c
anysgml | | | | c
anydtd | c | c | c | c
mixspace | | | | c
coordloc | p | p | p | c
pathloc | | c | c | c
relloc | p | p | p | c
notsrc | | | | c
query | p | p | p | c
HyQ | p | p | p | c
mixcase | | | | c
bigmatch | | | | c
uassert | | | | c
HYPERLINKS MODULE
manyanch=NUMBER | c | c | c | c
SCHEDULING MODULE
manyaxes=NUMBER | | | | c
splitfcs | | | | c
grpdex | | | | c
accanch | | | | c
exrecon | | | | c
calspec | | | | c
juldate | | | | c
RENDITION MODULE
modify | | | | c
patch | | | | c
project | | | | c
profun | | | | c
scaleref | | | | c
Table key: p=partial; c=complete.
Support for the Scheduling and Rendition modules of HyTime will begin
with version 1.0.
*******************************************************************************
HyMinder License Information
Licenses: The terms and conditions of specific Developer Licenses and
Application Licenses are contained in written agreements. (The
information in this circular is subject to modification by changes,
additions and deletions without notice.) Not shown in the fee
schedules below are shipping fees, media charges (a nominal charge for
each actual copy of the HyMinder library and documentation on magnetic
media), applicable taxes, and the additional costs of optional
technical services.
Developer Licenses: A HyMinder Developer License consists of the right
to use the HyMinder library for the purpose of developing applications
that contain and/or use the HyMinder engine, and for testing such
applications prior to distribution or deployment for use. This
nonexclusive, nontransferable license is good for a year at a time and
allows for the use of the HyMinder library by one named person (or,
alternatively, by one named machine to be used only by one person
during any one period of time). Each Developer License is provided
for one specific computer platform.
Pricing: A HyMinder Developer License may be purchased
annually for $5,500 [all amounts are shown in US dollars]
plus $1,000 per developer (for a minimum of $6,500), with the total
Developer License fees not to exceed $25,000 per year per software
development site. Developer License fees include the cost of
maintenance, all updates and new releases, technical support, and ten
Distributable End User Licenses.
Schedule of Developer License Fees:
($5,500 plus $1,000 per developer [minimum of $6,500])
number of developers | price per year
1 | $ 6,500
2 | $ 7,500
5 | $ 10,500
10 | $ 15,500
20 or more | $ 25,000
Unlimited Single Application Licenses: A HyMinder Unlimited Single
Application License consists of the right to incorporate all or any
portion of the HyMinder library in an unlimited number of copies of
exactly one application, a description of which forms part of the
license agreement.
Pricing: A HyMinder Unlimited Single Application License may be
purchased for $65,000. Each new Application costs an additional
$65,000, with the total cost of Application Licenses not to exceed
$250,000 per licensee. A license for unlimited numbers of copies of
an unlimited number of applications may be purchased for $250,000.
Schedule of Unlimited Single Application License Fees:
($65,000 per application)
number of applications | price
1 | $65,000
2 | $130,000
3 | $195,000
4 or more | $250,000
Note: The applicable Developer License Fee must be paid annually for
the continuation of maintenance.
Refunds: License fees, and all taxes based on license fees, are
refundable if all copies are destroyed and all original materials are
returned to TTI within thirty days after the materials are first
delivered to Licensee's address. No other charges are refundable.
TechnoTeacher, Inc.
(courier: 3800 Monroe Avenue,
Pittsford, NY 14534-1330 USA)
P.O. Box 23795
Rochester, New York 14692-3795 USA
voice +1 716 389 0961
fax +1 716 389 0960
Internet: HyMinder@techno.com
********************************************************************************
A sample HyMinder engine application: Browse.cc
Here is a sample session running the Browse.cc program (source code
attached below). Browse.cc provides a very primitive user interface
to a small portion of the HyMinder engine's functionality. In this
session, the SGML document "poems.doc" (attached below) is browsed.
(Please note that the Browse.cc program is not a product. It is
merely intended to demonstrate a small portion of the MarkMinder and
HyMinder API, a portion which contains only some of data retrieval
methods of those systems, and none of the data and metadata storage
and editing methods.)
***
% browse poems.doc // first session begins here.
Element: GI: "POEMDOC":1 // starts at document element
browse> ? // get help info
[H] Go to the hub node
[P] Go to parent
[N] Go to first child
[F] Go to next sibling
[B] Go to previous sibling
[A] Show anchors (for a link) // see second session, below
[L] Show links (for an anchor) // see second session, below
[?] Show this help screen
[Q] Quit
Element: GI: "POEMDOC":1
browse> n // go to first child element
Element: GI: "POEM":1 ID: "WALRUS"
browse> n
Element: GI: "TITLE":1
browse> n
Pseudo-element: "The Walrus and the Carpenter^M "
browse> p // go to parent element
Element: GI: "TITLE":1
browse> f // go to next sibling
Element: GI: "AUTHOR":1
browse> n
Pseudo-element: "Lewis Carroll^M "
browse> p
Element: GI: "AUTHOR":1
browse> f
Element: GI: "LI":1
browse> n
Pseudo-element: ""The time has come," the Walrus said.^M "
browse> p
Element: GI: "LI":1
browse> f
Element: GI: "LI":2
browse> n
Pseudo-element: ""To speak of many things:^M "
browse> p
Element: GI: "LI":2
browse> f
Element: GI: "LI":3
browse> f
Element: GI: "LI":4
browse> f
Element: GI: "LI":5
browse> f
Element: GI: "LI":6
browse> f
Element: GI: "LI":6 // ^G: bell rings; no next sibling
browse> p
Element: GI: "POEM":1 ID: "WALRUS"
browse> f
Element: GI: "POEM":2 ID: "JABWOCK"
browse> q // quit
%
***
The second session, below, demonstrates the use of the HyMinder system
(the MarkMinder system as enhanced for HyTime processing) in Browse.cc
to traverse a link to a named element in another document, and back
again.
***
% browse annot.doc // second session begins here
Element: GI: "ANNOTDOC":1
browse> n
Element: GI: "P":1
browse> n
Pseudo-element: "In this poem, "
browse> f
(LINK) Element: GI: "POEMREF":1 ID: ""
browse> f
Pseudo-element: " Lewis^MCarroll seemingly utters utter nonsense."
browse> p
Element: GI: "P":1
browse> n
Pseudo-element: "In this poem, "
browse> f
(LINK) Element: GI: "POEMREF":1 ID: ""
browse> n
(ANCHOR) Pseudo-element: "Jabberwocky"
browse> l // go to link of this anchor
(LINK) Element: GI: "POEMREF":1 ID: ""
browse> a // show anchors of this link
Choose an Anchor:
[ 0] Cancel
[ 1] (ANCHOR) Pseudo-element: "Jabberwocky"
[ 2] (ANCHOR) Element: GI: "POEM":2 ID: "JABWOCK"
Anchor? 2 // go to other document
(ANCHOR) Element: GI: "POEM":2 ID: "JABWOCK"
browse> n
Element: GI: "TITLE":2
browse> n
Pseudo-element: "Jabberwocky^M "
browse> p
Element: GI: "TITLE":2
browse> p
(ANCHOR) Element: GI: "POEM":2 ID: "JABWOCK"
browse> l // go to link of this anchor
(LINK) Element: GI: "POEMREF":1 ID: ""
browse> a // show anchors of this link
Choose an Anchor:
[ 0] Cancel
[ 1] (ANCHOR) Pseudo-element: "Jabberwocky"
[ 2] (ANCHOR) Element: GI: "POEM":2 ID: "JABWOCK"
Anchor? 1
(ANCHOR) Pseudo-element: "Jabberwocky"
browse> p
(LINK) Element: GI: "POEMREF":1 ID: ""
browse> b
Pseudo-element: "In this poem, "
browse> p
Element: GI: "P":1
browse> p
Element: GI: "ANNOTDOC":1 // we're back where we started
browse> q
%
***
The third session, below, demonstrates the use of the HyMinder system
(the MarkMinder system as enhanced for HyTime processing) in Browse.cc
to traverse a link in a HyTime document (annot.doc) to an unnamed
element in an SGML document (poems.doc), and back again. The remote
anchor is specified using the HyQ query language. (Note: HyQ, which
is part of the ISO 10744 HyTime standard, is the only internationally
standardized query language for use with SGML documents.) The query
is found in the nameloc element (id=walrus3) at the end of the
"annot.doc" element.
***
% browse annot.doc
Element: GI: "ANNOTDOC":1
browse> n
Element: GI: "P":1
browse> f
Element: GI: "P":2
browse> n
Pseudo-element: "In "
browse> f
(LINK) Element: GI: "POEMREF":2 ID: ""
browse> n
(ANCHOR) Pseudo-element: "line 3"
browse> p
(LINK) Element: GI: "POEMREF":2 ID: ""
browse> f
Pseudo-element: " of the^M"
browse> f
(LINK) Element: GI: "POEMREF":3 ID: ""
browse> n
(ANCHOR) Pseudo-element: "poem"
browse> p
(LINK) Element: GI: "POEMREF":3 ID: ""
browse> f
Pseudo-element: ", sealing wax may mean the wax^Mthat seals the hulls of ships, but probably not."
browse> p
Element: GI: "P":2
browse> n
Pseudo-element: "In "
browse> f
(LINK) Element: GI: "POEMREF":2 ID: ""
browse> a
Choose an Anchor:
[ 0] Cancel
[ 1] (ANCHOR) Pseudo-element: "line 3"
[ 2] (ANCHOR) Element: GI: "LI":3
Anchor? 2
(ANCHOR) Element: GI: "LI":3
browse> n
Pseudo-element: "Of shoes and ships and sealing wax,^M "
browse> p
(ANCHOR) Element: GI: "LI":3
browse> p
(ANCHOR) Element: GI: "POEM":1 ID: "WALRUS"
browse> p
Element: GI: "POEMDOC":1
browse> n
(ANCHOR) Element: GI: "POEM":1 ID: "WALRUS"
browse> n
Element: GI: "TITLE":1
browse> f
Element: GI: "AUTHOR":1
browse> f
Element: GI: "LI":1
browse> f
Element: GI: "LI":2
browse> f
(ANCHOR) Element: GI: "LI":3
browse> l
(LINK) Element: GI: "POEMREF":2 ID: ""
browse> a
Choose an Anchor:
[ 0] Cancel
[ 1] (ANCHOR) Pseudo-element: "line 3"
[ 2] (ANCHOR) Element: GI: "LI":3
Anchor? 1
(ANCHOR) Pseudo-element: "line 3"
browse> p
(LINK) Element: GI: "POEMREF":2 ID: ""
browse> p
Element: GI: "P":2
browse> p
Element: GI: "ANNOTDOC":1
browse> q
%
***
Below is the full text of poems.doc:
***
<!DOCTYPE poemdoc [
<!ELEMENT poemdoc - O (poem)*>
<!ELEMENT poem - O (title, author, li*) >
<!ATTLIST poem id ID #IMPLIED>
<!ELEMENT li - O (#PCDATA)>
<!ELEMENT (title,author) - O (#PCDATA)>
]>
<poemdoc>
<poem id = walrus>
<title>The Walrus and the Carpenter
<author>Lewis Carroll
<li>"The time has come," the Walrus said.
<li>"To speak of many things:
<li>Of shoes and ships and sealing wax,
<li>Of cabbages and kings,
<li>And why the sea is boiling hot,
<li>And whether pigs have wings.
</poem>
<poem id = jabwock>
<title>Jabberwocky
<author>Lewis Carroll
<li>"Beware the Jabberwock, my son,
<li>The jaws that bite,
<li>The claws that catch;
<li>Beware the jubjub bird, and shun
<li>The frumious bandarsnatch."
</poem>
</poemdoc>
***
Below is the full text of annot.doc:
***
<!DOCTYPE annotdoc [
<!ELEMENT annotdoc - O ( p | poemref | nameloc)* >
<!ELEMENT p - O ( #PCDATA | poemref)* >
<!ELEMENT poemref - O ( #PCDATA) >
<!ATTLIST poemref
HyTime NAME #FIXED clink
id ID #IMPLIED
linkend IDREF #REQUIRED
>
<!ELEMENT nameloc - O ( nmlist | HyQ)* >
<!ATTLIST nameloc
id ID #REQUIRED
HyTime NAME #FIXED nameloc
ordering (ordered|noorder) noorder
set (set|notset) notset
aggloc (aggloc|agglink|nagg) agglink
>
<!ELEMENT nmlist - O ( #PCDATA) >
<!ATTLIST nmlist
HyTime NAME nmlist
nametype (entity|element|unified) element
obnames (obnames|nobnames) nobnames
docorsub ENTITY #IMPLIED
>
<!NOTATION HyQ PUBLIC "+//ISO/IEC 10744:1992//NOTATION HyTime Query Notation//EN" >
<!ELEMENT HyQ - O ( #PCDATA) >
<!ATTLIST HyQ
HyTime (nmquery|mrkquery) nmquery
notation NAME #FIXED HyQ
qdomain IDREFS #IMPLIED
args IDREFS #IMPLIED
>
<!ENTITY poems SYSTEM "poems.doc" CDATA SGML>
<!NOTATION SGML PUBLIC
"+//ISO/IEC 8879:1986//NOTATION Standard Generalized Markup Language//EN">
]>
<annotdoc>
<p>In this poem, <poemref linkend=jabloc>Jabberwocky</poemref> Lewis
Carroll seemingly utters utter nonsense.</p>
<p>In <poemref linkend=walrus3>line 3</poemref> of the
<poemref linkend=walrus>poem</poemref>, sealing wax may mean the wax
that seals the hulls of ships, but probably not.</p>
<!-- Gets "Jabberwocky" from poems.doc -->
<nameloc id=jabloc><nmlist element docorsub=poems>jabwock</nmlist></nameloc>
<!-- Gets "Walrus and the Carpenter" from poems.doc -->
<nameloc id=walrus><nmlist element docorsub=poems>walrus</nmlist></nameloc>
<!-- Gets the third line from "Walrus" -->
<nameloc id=walrus3><HyQ qdomain=walrus>
Listloc( Select( Relloc( DOMROOT DOMROOT CHILDREN)
EQ( Proploc( CAND GI EMPTY) "LI"))
3 1)
</HyQ></nameloc>
***
Below is the full source code of Browse.cc:
***
-- begin Makefile --
#
# NAME: Makefile
# PROJECT: Example document browsing application with
# very primitive user interface.
# DESCRIPTION: An example use of the HyMinder system, `Browse' allows
# a user to interactively browse an SGML/HyTime
# document.
#
# Copyright (C) 1994 TechnoTeacher, Inc.
#
# RCS INFO: $Id: Makefile,v 1.1 1995/01/04 18:01:27 peter Exp peter $
# Prefix for include, lib and executable files
PREFIX=/usr/techno/hyminder
# HyMinder include files path.
INCLUDEDIR=$(PREFIX)/include
# HyMinder library path.
LIBDIR=$(PREFIX)/lib
# Executables path.
BINDIR=$(PREFIX)/bin
# C++ compiler and options.
CXX = g++
CCOPTIONS = -g -Wall
# Linker options.
LDOPTIONS = -g
###################################################
# You shouldn't need to change anything below here.
PROG = browse
OBJS = Browse.o
CXXFLAGS = $(CCOPTIONS) -I$(INCLUDEDIR)
LDFLAGS = $(LDOPTIONS) -L$(LIBDIR)
LIBS = -lhyminder -lmarkminder -lmmexport -lmmparser -lhmentitymanager \
-lhmdocobj -lhmdtd -lhmsgmldecl -lhmruleman -lhmdb -lhmutil \
-lidf -lkeyf
all: $(PROG)
$(PROG): $(OBJS)
$(CXX) $(LDFLAGS) -o $@ $^ $(LIBS)
clean:
-rm -f *.o $(PROG)
-- end Makefile --
-- begin Browse.cc --
//
// MODULE NAME: Browse.cc
// PROJECT: Example document browsing application with
// very primitive user interface.
// DESCRIPTION: An example use of the HyMinder system, `Browse' allows
// a user to interactively browse an SGML/HyTime
// document.
//
// Copyright (C) 1993, 1994 TechnoTeacher, Inc. All rights reserved.
//
// Permission to reproduce and share this material is granted only for
// purposes of evaluating the MarkMinder and/or HyMinder systems by
// potential licensees of those systems, provided that no changes are
// made to this material in any copy, and also provided that this notice
// is reproduced with every copy. No other use of this material is
// permitted.
//
// (Please note that the browse program is not a product. It is merely
// intended to demonstrate a small portion of the MarkMinder and HyMinder
// API, a portion which contains only some of data retrieval methods of
// those systems, and none of the data and metadata storage and editing
// methods.)
//
#include <HMError.h>
#include <HMErrorHandler.h>
#include <HMFile.h>
#include <HMDocObj.h>
#include <HMDocumentDatabase.h>
#include <HMNode.h>
#include <HMAttributeValue.h>
#include <HMHyMinder.h>
#include <HMHyMinderDefaultCallback.h>
#include <HMHyTimeIndex.h>
#include <HMNodePtrLinkedList.h>
#include <HMIntStack.h>
#include <HMLinkHandler.h>
#include <HMDataObject.h>
#include <HMLinkend.h>
#include <HMLinkendPtrList.h>
#include <HMIlink.h>
#include <HMClink.h>
// Browse application class.
class Browse {
// Contains the exit status of the most recently called method.
HMError e;
// Pointer to the application's callback object.
HMHyMinderApplicationCallback * callback;
// Pointer to the application's HyMinder object.
HMHyMinder * hyMinder;
// Pointer to the hub document's document element.
HMNodePtr hubNode;
// Prints out the relevent data for a node. (e.g. its GI, unique id,
// data content, ...)
int GetChoice( char * prompt, int max);
// Prints out the relevent data for a node. (e.g. its GI, unique
// id, data content, ...)
HMError PrintNode( HMNodePtr & node);
// Given an ilink in `ilinkNode', `GetAnchorFromIlink' retrieves the
// anchors the link points to and allows the user to select one; it
// is returned in `anchorNode'. `GetAnchorFromIlink' assumes that
// `linkNode' is an ilink, i.e. no sanity checking is performed.
HMError GetAnchorFromIlink( HMNodePtr & ilinkNode, HMNodePtr & anchorNode);
// Given a clink in `clinkNode', `GetAnchorFromClink' retrieves the
// anchors the link points to and allows the user to select one; it
// is returned in `anchorNode'. `GetAnchorFromClink' assumes that
// `linkNode' is a clink, i.e. no sanity checking is performed.
HMError GetAnchorFromClink( HMNodePtr & clinkNode, HMNodePtr & anchorNode);
// Given a linkend, `GetNodeFromLinkend' retrieves the
// anchors the linkend points to and allows the user to select one; it
// is returned in `anchorNode'.
HMError GetAnchorFromLinkend( HMLinkend & linkend, HMNodePtr & anchor);
public:
// Constructor. Opens the document database `docName' and allows
// the user to browse it.
Browse( HMUChar * docName);
// Destructor. Deletes the HyMinder object if it has been
// instantiated.
TildeBrowse();
// At an anchor, retrieves the links that point to it and allows
// the user to select one, which is returned in `link'.
HMError GetLink( HMNodePtr & anchor, HMNodePtr & link);
// At a link, retrieves the anchors the link points to and allows
// the user to select one, which is returned in `anchor'.
HMError GetAnchor( HMNodePtr & link, HMNodePtr & anchor);
// Returns the exit status of the most recently called method.
inline HMError Status() { return e;}
// Prints any accumulated error messages in the global hmError object.
void PrintErrors();
// Prints out a menu of recognized commands.
void Help();
};
// Prints any accumulated error messages in the global hmError object.
void
Browse::
PrintErrors()
{
// Print accumulated errors to standard error.
hyMinder->PrintErrors( HMstderr);
}
// Constructor. Opens the document database `docName' and allows the
// user to browse it.
Browse::
Browse( HMUChar * docName)
{
// Create a callback object to give to HyMinder.
callback = new HMHyMinderDefaultCallback;
// Intantiate a HyMinder object, passing it the source system
// identifier object of the hub document database.
hyMinder = new HMHyMinder( callback);
// Instantiate a system identifier object, passing it the system
// identifier object of the session and hub document database.
HMSystemIdentifier systemIdentifier;
systemIdentifier.Assign( docName);
// Open the session and hub document databases.
if ( e = hyMinder->OpenSession( systemIdentifier)) {
HMstderr.Printf( "Error occured while opening session or hub database \"%s\"\n", docName);
return;
}
// Perform HyTime engine processing on the document. This allows
// the engine to create hypermedia indexes of the document to
// speed rendition.
if ( e = hyMinder->DoEngineProcessing()) {
HMstderr.Printf( "Error(s) occured while doing HyTime engine processing\n");
return;
}
// Print out non-fatal errors accumulated by engine processing.
PrintErrors();
// Start browsing at the document element of the hub document.
HMNodePtr node;
if ( e = hyMinder->GetHubNode( node)) {
HMstderr.Printf( "Couldn't get hub node: error %d\n", e);
return;
}
// The main loop of the application. Describe the current node as
// pointed to by `node', and then wait for a command. The
// procedure associated with command makes `tmpNode' point to a
// new node, which if not null is assigned to `node' at the end of
// the loop, thus completing the cycle.
HMNodePtr tmpNode;
int command;
for (;;) {
// Print out the current node.
if ( e = PrintNode( node)) return;
// Prompt the user for a command.
HMstdout.Printf( "browse> ");
// Wait for a command.
command = getchar();
// Catch any extra characters entered up to and including a newline.
while ( getchar() != '\n');
// Process the command.
switch ( command) {
case 'h':
case 'H':
// Return to the hub node.
if ( e = hyMinder->GetHubNode( tmpNode)) {
HMstderr.Printf( "Couldn't get hub node: error %d\n", e);
tmpNode = 0;
}
break;
case 'p':
case 'P':
// Go to the parent of the current node.
tmpNode = node->GetParent();
break;
case 'b':
case 'B':
// Go to the previous sibling of the current node.
tmpNode = node->GetPrevSib();
break;
case 'f':
case 'F':
// Go to the next sibling of the current node.
tmpNode = node->GetNextSib();
break;
case 'n':
case 'N':
// Go to the first child of the current node.
tmpNode = node->GetFirstChild();
break;
case 'a':
case 'A':
// Choose an anchor of the current node, which must be a link.
if ( e = GetAnchor( node, tmpNode)) return;
break;
case 'l':
case 'L':
// Choose a link of the current node, which must be an anchor.
if ( e = GetLink( node, tmpNode)) return;
break;
case '?':
// Print out a menu of commands.
Help();
// Stay at the current node.
tmpNode = node;
break;
case 'q':
case 'Q':
// Exit from the program.
return;
break;
}
// Set the current node to the node pointed to by tmpNode,
// unless it's null, in which case beep (or do the equivalent
// thereof).
if ( tmpNode) node = tmpNode;
else putchar(0x07);
}
}
// Destructor. Deletes the HyMinder object if it has been
// instantiated.
Browse::
TildeBrowse()
{
// Close the session database.
if ( e = hyMinder->CloseSession())
HMstderr.Printf( "Error occured while closing session database: error %d\n", e);
// Delete the HyMinder object if it has been instantiated.
if ( hyMinder)
delete hyMinder;
// Delete the callback object after deleting the HyMinder object,
// as HyMinder may need to use the callback object duing deletion.
if ( callback)
delete callback;
}
// Prints to standard output a menu of recognized commands.
void
Browse::
Help()
{
HMstdout.Printf( "\
[ H]\tGo to the hub node\n\
[ P]\tGo to parent\n\
[ N]\tGo to first child\n\
[ F]\tGo to next sibling\n\
[ B]\tGo to previous sibling\n\
[ A]\tShow anchors (for a link)\n\
[ L]\tShow links (for an anchor)\n\
[ ?]\tShow this help screen\n\
[ Q]\tQuit\n");
}
// At an anchor, retrieves the links that point to it and allows
// the user to select one, which is returned in `link'.
HMError
Browse::
GetLink( HMNodePtr & anchor, HMNodePtr & link)
{
// Test to see if `anchor' is really an anchor. If not, return a
// null ponter in link, but otherwise return ok.
if ( !hyMinder->GetLinkHandler()->IsAnchor( anchor)) {
link = 0;
return e = HM_OK;
}
// An `HMNodePtrLinkedList' uses the HyMinder object to resolve
// nodes over multiple documents.
HMNodePtrLinkedList links( hyMinder);
HMIntStack linkendNumbers;
HMIntStack whichInAggregate;
// Get all links which point to the node `anchor'. `links',
// `linkendNumbers', and `whichAggregates' are parallel arrays
// where `links' contains the link nodes, `linkendNumbers'
// contains the linkend number of `anchor' within each link, and
// `whichInAggregate' contains the number of `anchor' within its
// aggregate location link, if any.
if ( e = hyMinder->GetLinkHandler()->GetLinks( anchor, links, linkendNumbers, whichInAggregate)) {
HMstderr.Printf( "Error occured while getting links from an anchor.\n");
return e;
}
// `HMNodePtrItemPtr' objects are used to index
// `HMNodePtrLinkedList' objects.
HMNodePtrItemPtr p;
// If there is only one link to choose from, go directly to that
// link, otherwise create a menu of links and ask the user to
// select one.
if ( links.Count() == 1) {
// Set `link' to the first link. `p' must be used to hold the
// object returned from `links.First()' in order to avoid
// having it go out of scope before using it to index `links'
// to get the actual node.
link = links.GetNodePtr( p = links.First());
} else {
// Start a link menu.
HMstdout.Printf( "Choose a Link:\n");
HMstdout.Printf( "[ 0]\tCancel\n");
// Loop though the links, creating a menu. `p' is used to
// index `links', and `i' is used to index the linkend and
// aggregate numbers.
int i = 0;
for ( p = links.First(); p; p = links.Next( p)) {
// Print menu, linkend, and aggregate numbers.
HMstdout.Printf( "[%2d] (%d,%d) ", i+1,
linkendNumbers[ i], whichInAggregate[ i]);
// Print information about the link.
PrintNode( link = links.GetNodePtr( p));
i++;
}
switch ( i = GetChoice( "Link? ", links.Count())) {
case -1:
// Got EOF; Exit.
return e = HM_MACHINE_ENDS;
case 0:
// If the user entered 0, return the anchor as the link, i.e.
// stay at the anchor. Otherwise return the selected link.
link = anchor;
break;
default:
link = links.GetNodePtr( p = links.Select( i - 1));
break;
}
}
// Everything went ok.
return e = HM_OK;
}
// Given a link in `linkNode', `GetAnchor' retrieves the anchors the
// link points to and allows the user to select one, which is returned
// in `anchorNode'. Otherwise `anchorNode' is set null.
HMError
Browse::
GetAnchor( HMNodePtr & linkNode, HMNodePtr & anchorNode)
{
// Find out what `linkNode' really is and do the appropriate thing.
switch ( hyMinder->GetArchitecturalForm( linkNode) ) {
case hme_hytime_ilink:
return e = GetAnchorFromIlink( linkNode, anchorNode);
case hme_hytime_clink:
return e = GetAnchorFromClink( linkNode, anchorNode);
default:
// If it's not a link, return a null ponter in anchorNode, but
// otherwise return ok.
anchorNode = 0;
return e = HM_OK;
}
}
// Given an ilink in `linkNode', `GetAnchorFromIlink' retrieves the
// anchors the link points to and allows the user to select one, which
// is returned in `anchorNode'. `GetAnchorFromIlink' assumes that
// `linkNode' is an ilink, i.e. no sanity checking is performed.
HMError
Browse::
GetAnchorFromIlink( HMNodePtr & ilinkNode, HMNodePtr & anchorNode)
{
// Create an `HMIlink' object out of `ilinkNode'.
HMIlink ilink( hyMinder, ilinkNode);
// Create a menu of anchors and ask the user to select one.
// Start the anchor menu.
HMstdout.Printf( "Choose an anchor:\n");
HMstdout.Printf( "[ 0] Cancel\n");
// Loop though the anchors, creating a menu.
for ( int i = 0; i < ilink.GetLinkends().Count(); i++) {
// Print menu number and anchrole of anchor.
HMstdout.Printf( "[%2d] anchrole=\"%s\"\n", i+1, ilink.GetLinkends()[ i]->GetAnchorRole().Str());
}
// `GetChoice()' prints out its first argument, then asks the user
// for a number between 0 and its second argument.
switch ( i = GetChoice( "Anchor? ", ilink.GetLinkends().Count())) {
case -1:
// Got EOF; Exit.
return e = HM_MACHINE_ENDS;
case 0:
// If the user entered 0, return the link as the anchor, i.e.
// stay at the link. Otherwise return the selected anchor.
anchorNode = ilinkNode;
break;
default:
return e = GetAnchorFromLinkend( *ilink.GetLinkends()[ i - 1], anchorNode);
}
// Everything went ok.
return e = HM_OK;
}
// Given an ilink in `linkNode', `GetAnchorFromIlink' retrieves the
// anchors the link points to and allows the user to select one, which
// is returned in `anchorNode'. `GetAnchorFromIlink' assumes that
// `linkNode' is an ilink, i.e. no sanity checking is performed.
HMError
Browse::
GetAnchorFromClink( HMNodePtr & clinkNode, HMNodePtr & anchorNode)
{
// Create an `HMIlink' object out of `ilinkNode'.
HMClink clink( hyMinder, clinkNode);
// Create a menu of anchors and ask the user to select one.
HMstdout.Printf( "Choose an anchor:\n");
HMstdout.Printf( "[ 0] Cancel\n");
HMstdout.Printf( "[ 1] anchrole=\"%s\"\n", clink.GetRefMark().GetAnchorRole().Str());
HMstdout.Printf( "[ 2] anchrole=\"%s\"\n", clink.GetRefSub().GetAnchorRole().Str());
int i;
// `GetChoice()' prints out its first argument, then asks the user
// for a number between 0 and its second argument.
switch ( i = GetChoice( "Anchor? ", 2)) {
case -1:
// Got EOF; Exit.
return e = HM_MACHINE_ENDS;
case 0:
// If the user entered 0, return the link as the anchor, i.e.
// stay at the link. Otherwise return the selected anchor.
anchorNode = clinkNode;
break;
case 1:
return e = GetAnchorFromLinkend( clink.GetRefMark(), anchorNode);
case 2:
return e = GetAnchorFromLinkend( clink.GetRefSub(), anchorNode);
}
// Everything went ok.
return e = HM_OK;
}
// Given a linkend, `GetNodeFromLinkend' retrieves the
// anchors the linkend points to and allows the user to select one; it
// is returned in `anchorNode'.
HMError
Browse::
GetAnchorFromLinkend( HMLinkend & linkend, HMNodePtr & anchorNode)
{
HMNodePtrItemPtr p = linkend.GetAnchorNodes().First();
// If the anchor is an aggregate, and there is more than one node
// in the list, create a menu and allow the user to select one.
// Otherwise take the first node on the list.
if ( linkend.IsAggregate() && linkend.GetAnchorNodes().Count() > 1 ) {
// Create a menu of aggregate members; This assumes that aggtrav="agg".
HMstdout.Printf( "Choose an aggregate member:\n");
HMstdout.Printf( "[ 0] Cancel\n");
for (int i = 1; linkend.GetAnchorNodes().GetNodePtr( p); i++) {
HMstdout.Printf( "[%2d] ", i);
PrintNode( linkend.GetAnchorNodes().GetNodePtr( p));
p = linkend.GetAnchorNodes().Next( p);
}
// `GetChoice()' prints out its first argument, then asks the user
// for a number between 0 and its second argument.
switch ( i = GetChoice( "Node? ", linkend.GetAnchorNodes().Count())) {
case -1:
// Got EOF; Exit.
return e = HM_MACHINE_ENDS;
case 0:
// If the user entered 0, set anchorNode to 0, in effect
// cancelling traversal.
anchorNode = 0;
break;
default:
// Get the appropriate node.
p = linkend.GetAnchorNodes().Select( i - 1);
anchorNode = linkend.GetAnchorNodes().GetNodePtr( p);
break;
}
} else {
switch ( linkend.GetAnchorNodes().Count()) {
case 1:
// Get the appropriate node.
anchorNode = linkend.GetAnchorNodes().GetNodePtr( p);
break;
case 0:
// Empty list.
anchorNode = 0;
HMstdout.Printf( "No nodes at this anchor!\n");
break;
default:
// Somehow got multiple nodes at a non-aggregate anchor;
// Print out the offending nodes and return.
anchorNode = 0;
HMstdout.Printf( "More than one node at a non-aggregate anchor!\n");
for (int i = 1; linkend.GetAnchorNodes().GetNodePtr( p); i++) {
HMstdout.Printf( "Node %2d: ", i);
PrintNode( linkend.GetAnchorNodes().GetNodePtr( p));
p = linkend.GetAnchorNodes().Next( p);
}
break;
}
}
return e = HM_OK;
}
// `GetChoice()' prints out its first argument, then asks the user
// for a number between 0 and its second argument.
int
Browse::
GetChoice( char * prompt, int max)
{
// Get a number from the user from 0 to the number of anchors available.
int choice = -1;
while ( choice < 0 || choice > max) {
HMstdout.Printf( prompt);
switch ( scanf( "%d", &choice) ) {
case EOF:
// Exit.
return -1;
case 0:
// `scanf' failed; clear any characters entered up to and
// including a newline so we can try again.
while ( getchar() != '\n');
choice = -1;
break;
default:
break;
}
}
// Catch any extra characters entered up to and including a newline.
while ( getchar() != '\n');
return choice;
}
// Prints out the relevent data for a node. (e.g. its GI, unique id,
// data content, ...)
HMError
Browse::
PrintNode( HMNodePtr & node)
{
// If this node is a link, display the fact.
HMArchitecturalForm af = hyMinder->GetArchitecturalForm( node);
if ( af == hme_hytime_ilink || af == hme_hytime_clink) {
HMstdout.Printf( "(LINK) ");
}
// If this node is an anchor, display the fact.
if ( hyMinder->GetLinkHandler()->IsAnchor( node)) {
HMstdout.Printf( "(ANCHOR) ");
}
// Display the in different ways depending on the type of node it
// is.
switch ( node->GetType()) {
case hme_node_type_element:
// This node is an element.
{
// Show that this is an element.
HMstdout.Printf( "Element:");
// Get the element's GI and print it out.
HMName name;
if ( e = node->GetGi( name)) {
HMstderr.Printf( "Error occured while getting GI from a node.\n");
return e;
}
HMstdout.Printf( " GI: \"%s\":%d", name.Str(), node->GetOccurrenceNumber());
// Get the element's unique identifier, if it has one, and
// print it out.
HMAttributeValue attributeValue;
if ( e = node->GetAttributeValue( hme_id, attributeValue)) {
if ( e != HM_ATTRIBUTE_NOT_FOUND &&
e != HM_NO_ATTRIBUTES_DEFINED) {
HMstderr.Printf( "Error occured while getting ID from a node.\n");
return e;
}
} else HMstdout.Printf( " ID: \"%s\"", attributeValue.Str());
}
break;
case hme_node_type_pelement:
// This node is a psuedo-element. (e.g. PCDATA)
{
// Show that this is a psuedo-element.
HMstdout.Printf( "Pseudo-element:");
// Get the psuedo-element's data and print it out.
HMReplaceableData data;
if ( e = node->GetData( data)) {
HMstderr.Printf( "Error occured while getting data from a node.\n");
return e;
}
HMstdout.Printf( " \"%s\"", data.Str());
}
break;
default:
// Anything else is either illegal or unimplemented.
HMstdout.Printf( "Node type %d not implemented.", node->GetType());
break;
}
// Finish the line.
HMstdout.Printf( "\n");
return e = HM_OK;
}
int
main( int argc, char ** argv)
{
// Check that we have exactly one argument.
if ( argc != 2) {
HMstderr.Printf( "\
Usage: %s <doc>\n\
Where <doc> is a MarkMinder/HyMinder document database.\n", argv[0]);
return 1;
}
// Run the application, passing the first argument to the program
// as the document filename.
Browse browse( ( HMUChar *) argv[1]);
// Print any error messages accumulated while running the
// application.
browse.PrintErrors();
// If a serious error occured, report it and exit with a non-zero
// exit status. Otherwise, exit with a zero exit status.
if ( browse.Status()) {
HMstderr.Printf( "%s: Error %d\n", argv[0], browse.Status());
return 1;
} else return 0;
}
-- end Browse.cc --
- -
From: paula@texcel.no (Paula Angerstein)
Mr. Gibson,
I believe you have spoken with Tushar Patel at Texcel briefly about
out product Information Manager. I am the principal architect and
project manager for Information Manager. I read with interest your
recent posting on the net about the possibilities of managing
documents as a set of objects. We have been thinking along these
lines for several years based on requirements we have experienced
with large manufacturing-based companies. I believe we are
releasing one of the first commercially viable systems for
integrating document management with engineering data, logistics
information, and product support information.
I would like to speak further with you about your requirements.
I'm not the "sales rep" (that will come later), but I'd like
to see how your needs fit into what we've seen with other
companies. Let me know if it is okay to phone you, and if so,
when it is convenient.
Meanwhile, I'm sending you an email version of the Information
Manager Product Overview. I'll get some nice-looking copy to
you by post.
Looking forward to talking with you,
Paula Angerstein
Texcel UK
phone: +44 1753 833111
email: paula@texcel.no
Information Manager Product Overview Texcel International
==================================== ====================
Texcel's Information Manager (IM) is an integrated suite of applications
built around an SGML repository. Information Manager provides complete
support for authoring, management, reuse, and auditing of documents and
their constituent parts.
End-user packages for workflow, collaborative authoring, electronic
review, dynamic document assembly, document query and browsing, and
repository administration are all included as a part of Information
Manager.
Key concepts
------------
Reusing information, business processes, software, and expertise is the
key to leveraging existing investments. Taking advantage of new and
enabling technology equips you to respond efficiently and rapidly to
evolving requirements.
Information Manager is designed to increase productivity and reduce
overall cost of document authoring, management, and production through a
combination of robust software components, a well-defined open
architecture, adherence to international standards, and built-in
extensible business processes. The result is a configurable system that
carefully balances turnkey functionality with the necessary
extensibility and customization capabilities to support large scale,
site-specific solutions without having to "reinvent the wheel" with each
system, site, project, or document.
Standards compliance
--------------------
Information Manager adheres to existing and emerging standards wherever
possible to ensure the quality and longevity of its components as well
as to open up the system to popular third-party tools, databases, and
applications:
- Information Manager rigorously supports the Standard Generalized Markup
Language (SGML)
- The data model is compliant with the Object Management Group (OMG)
object model
- ANSI SQL2 compliant access is supported between client and repository
and between repository and third-party RDBMSs
- The workflow applications comply with the Workflow Management Coalition
reference model.
Product Component Overview
==========================
While each component of Information Manager offers a competitive
solution to a subset of a broader set of requirements, it is Information
Manager taken as a whole that enables new and innovative ways of
managing the business of document authoring, management, and production.
The following sections provide an outline of these components.
Collaborative authoring
-----------------------
Document authoring has traditionally been limited to copying material
from older documents, altering that material, and, of course, creating
original material. The Information Manager authoring package enables
workgroups of authors to work concurrently on documents while being
automatically tied into unlimited bodies of previous work. The ability
to share information, version portions of documents, and stay current
with collaborative efforts frees the author to focus attention on
authoring rather than ancillary tasks of coordination and
administration. Specifically, the authoring tool provides:
Check-out with access control
Check-out process finds documents and fragments in the repository
External objects (SGML entities) are automatically included
Verification of author's access privileges by project, role within
project, and document content
Compound document editing
Text
Graphics
Tables
Equations
Document and DBMS Queries
Interactive assembly of contents
Query application retrieves and coordinates relevant components and
metadata in the repository
Configurable display window provides familiar and consistent interface
to documents
User access is defined result-by-result permitting updatable, read-only,
and copy-on-demand objects
Full SGML compliance
Real-time context-sensitive editing ensures consistent document
structure and full SGML compliance
Guided editing simplifies authoring by dynamically indicating
contextually valid document objects
Show or hide SGML markup
Outline-based editing and navigation based on SGML elements
Highly flexible and extensible
Automatically supports any SGML DTD
Configurable menus and key mappings support site-specific interface
guidelines
Tracks document and component revisions
Check-in of work generates new versions tied to version history
simplifying collaborative work
Version review permits browsing and reuse of earlier work, supplemental
comments, and project-related metadata
Document query and browsing
---------------------------
Authoring is further enhanced by advanced database query capabilities
carefully crafted to operate over large volumes of highly structured
data. With Information Manager, users can find information no matter how
deeply it is buried in a document anywhere in the repository.
Extended Query Support
All SGML constructs are completely accessible and referencable within a
query
Search criteria can be based upon content, attribute values, structure
(context) within one or more documents, or any combination in this
computationally complete query tool
Automatic query optimization based upon type of query and cost-based
optimizer assures scalability
Easy to use
Predefined queries can appear as menu choices
Graphical user interface generates user-defined queries
Advanced syntax for experts
Dynamic document assembly
-------------------------
Documents that assemble themselves automatically out of elements in the
repository are an important component in the complete life-cycle of a
document set, especially for documents dependent on rapidly changing
data or that need to be produced periodically. Document assembly
improves the accuracy and integrity of documents while improving
productivity through automation of repetitive tasks. Information Manager
offers a robust document assembly tool wherein templates dynamically
retrieve document fragments and content via embedded queries, including
the following features:
Improved accuracy, integrity, and productivity
Assembly template can contain boilerplate contents with which
dynamically retrieved content is intermixed
Any document fragment, individual element, or attribute value anywhere
in the repository can be retrieved as content
Completed document is fully SGML compliant and can be published (in
print or online) by any SGML-aware publishing system
Assembled document can be automatically placed in work queue for further
review (see next section)
Workflow Management
-------------------
As the authoring and production of documents becomes more complex and
the interaction among authors, documents, and viewers becomes more
sophisticated and immediate, a reliable and configurable tool to manage
document life-cycles and collaborative business processes becomes
critical. Information Manager automatically tracks and routes documents
as they move from desk to desk during their life-cycle based on a
captured model of your organization and business processes.
The workflow solution is comprised of sub-components corresponding to
the functional areas detailed in the Workflow Management Coalition
reference model. Each functional area has a standard API for
programmatic interaction with the workflow engine. In addition, rich
user interfaces are used to define processes; enter, modify, and query
the state of any workflow object; and register users, projects, and
roles. The following applications constitute Information Manager's
workflow solution.
Process definition tool
Graphic design tool models workflows of your business processes
Conditional workflows support parallel tracks with automatic
synchronization of sub-tasks and dependencies
Subprocesses within a workflow provide a hierarchical set of dependent
tasks
Business process validation rules automatically detect inconsistencies
such as redundancies and loops
Metadata and user-defined attributes are easily assigned to tasks and
objects supporting complex and site-specific configurations
Work queue
Work queue acts as a primary user interface for authors and reviewers
displaying tasks, their status, upcoming deadlines, owners, and
descriptions
Configurable GUI interface presents customized or standard presentation
of tasks
Work queue entries can be sorted by project, priority, status, or on any
user-defined attribute
Task status highlighted with color for easy identification of critical
events and tasks
All Information Manager tools can be automatically invoked providing
single interface
Deadline and other user defined notification can be sent to any
individual or role in real time or through email
Upcoming workload and what-if scenarios can be generated
Forms-based interface allows altering routing and behaviors of specific
tasks within broader projects
Workflow management tool
Enables managers to create or alter workflows
Assigns users to tasks
Sets attribute and other user defined values
Establishes deadlines and milestones
Enables audit trail data capture
Generates status reports
Connects to third-party reporting tools
Electronic review
-----------------
As documents are routed from person to person and documents are
versioned across collaborative workgroups, an integrated tool to capture
comments and correction and pass them along "in context" adds
significant value to the entire process. Information Manager's
comprehensive electronic review tool set enables authors, editors, and
managers to iteratively review documents for comment and alteration.
As an integrated part of Information Manager, the electronic review tool
takes advantage of query and viewing capabilities to allow the reviewer
to include in the actual comments such information as replacement text,
more accurate references, and supporting documentation. Additionally,
comments can be automatically generated by permitting a reviewer to
"edit" a copy of the document; comments are automatically generated
based on the difference between the true document and the temporary
copy, an intuitive and powerful interface to improve the productivity of
both the reviewer and the author applying the suggested changes.
Reviewer creates comments
Comments can be attached to any element of a document (for example, a
paragraph, section, or chapter), conveying the scope of the comment
Review document is retrieved as read-only to protect the original
document
Comments are SGML documents themselves, ensuring consistency and maximum
reuse
Automatic initialization of comment fields, such as those identifying
the reviewer and date
Suggested revisions stored as fully marked-up SGML content permitting
immediate inclusion by author if suggested content is accepted
Auto-commenting turns edits overlaid on the read-only document into
comments
Author reviews comments
Comments indicated in document by configurable icon
Point-and-click in document to read comments
Listing of comments based on parameters such as priority, reviewer, and
date
Assign disposition to comment, such as accepted or rejected, triggering
workflow actions
Reply to reviewers with explanations, improving communication
Status of comment, such as pending or closed, automatically maintained
and fed to workflow
Author updates documents
Accepting a comment can automatically update the document with suggested
revision and alter status of comment
Differencing a revised document with earlier versions improves accuracy
and completeness
A history of comments and their disposition is maintained for auditing
and recovery
Repository architecture
-----------------------
Tracking and managing thousands of documents, business processes, and
the metadata associated with document life-cycle management requires a
robust, scalable, and secure datastore. The Repository Manager serves as
the central data management tool for Information Manager.
Supporting the unique requirements of large volumes of highly structured
documents requires a specialized model and access mechanism based on the
best of both document and database technology. The answer can be found
in the latest generation of DBMS technology known as Object-Relational
Database Management Systems (ORDBMS). The principle behind ORDBMS
technology is straightforward: incorporate advanced object-oriented
modeling constructs by extending and evolving the proven data management
and query processing techniques of RDBMS. This melding results in a DBMS
with mature security, scalability, and recovery capabilities able to
support mission-critical applications while providing the required
modeling to support the complexity of highly structured documents.
Information Manager's repository is fully object-relational and as a
result can efficiently offer the following features:
Open Architecture
SGML documents can be easily inserted, updated, versioned, and
retrieved, making the repository truly SGML-centric in its design
Full element and entity management is supported to any depth or variety
DTDs are specially recognized objects and thus maintain a version
history through check-in and check-out
Access to external databases is inherently supported including 2-phase
commit where available
Access control
Privilege checking at the repository and application levels
Hierarchical projects with inheritance of roles and privileges are
inherently supported
Content management
Full version history maintenance is automatically generated
Shared content across documents is easily done
Inter-document links is also a natural component of the repository
Application development features
Arbitrary, application-defined metadata permits extensible management
functionality
Event notification to standard and application-defined protocols
Full SGML-addressing query language with sensitivity to the difficult
issues of mixing content and contextual selection criteria
Structure-based retrieval and update at a programmatic level for
navigational operations
Repository administration
-------------------------
The administration of a specialized document repository requires tools
specialized for the job. Information Manager provides comprehensive
tools for managing the repository, including the creation of projects,
roles, and users, all with a fully graphical user interface.
Specifically, the repository administration tool offers:
Manage users and privileges
Add or delete users
Alter permissions and passwords
SGML input
Install or unload DTDs
Search file systems and load selected SGML documents
Associate a document with its DTD and appropriate application files such
as a FOSI
Audit trail generation
Track different levels of activity, ranging from project creation to
read access of a document or fragment
Generate configurable reports on the access history for any elements in
the repository
Search and sort on any access history data
Workflow
Assign roles within a workflow
Create or alter the workflow process
Associate workflow with document types
Create and assign triggers for notification on user-defined events
Database management
Monitor and optimize database usage
Add database volumes
Archive and dearchive to offline storage
Application architecture
------------------------
In order to assure that Information Manager is open to any application,
an API and a central broker called the Application Manager are included
for advanced development and integration.
Application Manager
Simple but flexible communication channel that supports communication
and notification between the Repository Manager and between multiple
applications
Message format is application-independent
Launching of applications upon receipt of targeted message
Channels are multi-threaded and can interoperate with more than one
application at a time
Information Manager in action
=============================
Because Information Manager is highly flexible and configurable, any
particular customization illustrates only one way the system can be put
to use. Following is one example of how Information Manager is used in
various ways throughout the life-cycle of a set of documents.
A workgroup of authors produces a set of reports every month on funds
managed by a financial services company. Using IM's authoring tool, an
author uses last month's report for a financial regulatory agency as a
"template" for this month's report. The template automatically brings
with it the appropriate legal boilerplate through its shared content
feature that retrieves paragraphs maintained by the legal department.
Daily values of funds over the last month are automatically drawn from
the financial SQL databases using IM's external database referencing
features.
Creating new information
------------------------
IM's authoring tool then provides an ideal environment for generating
new material. SGML context-sensitive editing ensures the reports have
all the required information in the proper order. When writing up the
summary of the effect of the discovery of a new drug on the fund's
performance, the author can find out quickly through IM's easy-to-use
query interface whether discovery of a drug has been included as part of
an impact assessment on this fund before. If so, the author can copy in
the relevant material and edit it, or even simply reference an existing
paragraph or diagram using the shared content feature.
Several authors can work on a report at the same time, one perhaps
writing up the fund results and another doing the analysis. Each author
simply checks out the relevant section of material for editing.
Meanwhile, the responsible lawyer can retrieve the entire report for
viewing to quickly determine if there are any figures that need
particular attention this month.
Reviewing and updating
----------------------
As authors check in their sections noting that they are ready for review
through the work queue, IM routes the sections to the lawyers and other
reviewers through predefined workflows to ensure the material is
authorized and correct. Reviewers are automatically notified that
material is awaiting their review via their work queues. IM's electronic
review tool provides the easy-to-use mechanism for reviewing the
sections and attaching comments. When the author receives notification
that his section is either approved or needs comments addressed, he can
use the electronic review tool to browse the comments and apply them as
necessary.
When all sections have completed the proper review cycles and have been
noted as approved, the report is routed to the production department for
distribution.
Automatic assembly
------------------
Having completed the report submitted to the financial regulatory
agency, IM is now used to automatically pull together the shareholder
report. Through the document assembly tool, much of the regulatory
report is dynamically retrieved into the appropriate sections of the
shareholder report. The assembled report is routed to the fund's manager
for addition of introductory remarks.
Traceability and accountability
-------------------------------
For the year-end review of the fund by the regulatory agency, IM is used
to gather the appropriate documents, recreating versions as they were
delivered or as they were developed. The author and approver of every
section, indeed paragraph, are determined as necessary.
System Profile
==============
The Information Manager runs on the following Unix servers:
- Sun SPARCstation under Sun OS 4.1.1, 4.1.2 or 4.1.3, or Solaris 2
- IBM RS/6000 under AIX 3.2
- HP 9000 Series 700/800 under HPUX
- DEC Alpha under OSF/1
- PC under Windows 3.1 (Client only)
Minimum site requirements
-------------------------
The following are minimum site requirements:
Information Manager can run either as a stand-alone system, or as a
client/server system. Client processes and the server process may run on
the same or different machines, potentially of different types.
A minimum of 16 Mbytes of main memory is recommended for the stand-alone
version and for each process of the client/server version.
A minimum of 32 Mbytes of swap space is recommended for the stand-alone
version and for each process of the client/server version.
The network protocol for TCP/IP must be available to run the
client/server version for communication of clients and server. The
server and clients must be connected by an installation network.