🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.protocols.misc
Article #1018

Free EDI

#1018
From: Joseph H Allen
Date: Wed, 19 Feb 1997 00:00
181 lines
9456 bytes
It's time to start "Free EDI".  EDI (Electronic Data Interchange) is an old
set of document standards designed to allow businesses to communicate with
each other.  Typical of the business transactions covered by EDI are
wholesaler to retailer communications: the retailer sends a PO (Purchase
Order) to the wholesaler, which then sends the ordered materials to the
retailer.  Then the wholesaler sends an Invoice to the retailer.

There are two big problems with EDI as it currently stands.  First, the
standards process is membership based and copies of the standards themselves
cost lots of money.  This results in EDI being very non-open and
inaccessible- supposedly only 20,000 businesses in the US use EDI.  One
tends to think of the X12 committee existing for the sole purpose of
supporting itself.  The only books you can find on EDI are content-free and
read as sales pitches for EDI VANs and the standards committee.

The second problem is that EDI is only a high-level document standard, not a
low-level communications protocol.  This has the effect that when two
companies wish to communicate with each other, they must pay a "VAN" (Value
Added Network) gobs of money to accomplish this goal (VANs charge per
transaction, per byte, per minute, for data conversion, per month, and for
just about every other conceivable "service").  VANs are completely
redundant in these times of cheap modems and the low-cost Internet.

"Dread" is the feeling any company gets when thinking about communicating
electronically.  Any money you save from not requiring as many data-entry
personnel is ofset by the VAN fees and the EDI consulatants required to make
the system work.  Often companies are forced to use EDI anyway- for example
large retail chains may force their vendors to use EDI.

Free EDI would be a public set of standards (down-loadable for free from any
web site which wants to carry them) which allow companies to communicate
with each other either directly (modem to modem or what have you), or
through the Internet.  The process of establishing a standard for a
transaction would be based on the Internet "RFD" (request for discussion)
model.  Basically, someone proposes a standard on a USENET newsgroup.  A two
month discussion period follows, in which anyone interested gets to append
or modify the standard.  A vote is then taken and the standard is considered
established if there are more yeas than nays.  The real test for the
standard would be if companies actually used them.  If a standard seems
insufficient for a set of industries, they are perfectly free to establish
their own set as long as it is publicly available.

To start things off, I'll propose a common structure for Free EDI
transactions:

 - The communications system for Free EDI will be SMTP-TCP/IP Internet
   e-mail.  The advantage of this is its universality.  Everyone has access
   to Internet e-mail and SMTP-TCP/IP is very common for "intra-nets" as
   well.

 - Security will be based on the defacto internet security system: PGP. 
   Each message will have a PGP signature from the sender and will be
   encrypted with the recipient's public key.  This will be sufficient
   security so that even EFTs (electronic fund transfers) can occur through
   Free EDI.

 - Free EDI will be transaction based in the database-locking/rollback sense.
   Each EDI transaction will be completely executed or have no effect (no
   partial transactions).  Several transactions can be sent in each email
   message.

 - Transaction IDs will be universally unique.  This will allow Free EDI
   transactions to be broadcast via USENET or in USENET-like environments. 
   If the recipient receives the same transaction twice, the second one is
   ignored.  The recipient must keep a list of recently received
   transactions so that it knows which transactions to ignore.

 - An un-encrypted Free EDI message will be in readable text.

 - A Free EDI transaction will be composed of a set of "tables" (or
   relations) in the database sense.  Each table is composed of a table
   header which identifies the columns in the table followed by member
   records.  The first table of each EDI transaction will identify the Free
   EDI transaction standard which is being used for the transaction (and
   perhaps include a version number or other information).

 - An un-encrypted Free EDI message will have this detailed format:

   (In general, ASCII text will be used.  Each line is terminated with a
   line-feed preceded by an optional carriage return).

   HEADER
   Begin Free EDI Message
   TRANSACTIONS
   Z
   TRAILER

   The TRAILER can contain any data.  The HEADER can contain any data
   except the line 'Begin Free EDI Message'.

   Each line in the TRANSACTIONs section will be limited to 77 characters
   (excluding the end-of-line sequence).  Long lines will be split into
   short lines as follows: any line ending with a backslash '\' followed by
   a line beginning with a '+' will be considered the same long line
   (excluding the \, line-feed, + sequence).  Transaction lines will only
   use characters in the range 32 - 255 plus 9 (ASCII tab).

   There are several types of transaction lines, identified by the
   first character (whitespace is to be ignored in these formats: if a space
   is required, the word SPACE will be used):

        X string		Start of transaction.  'string' identifies
				the transaction.

	E string		End of transaction.  'string' must match
				the one at the beginning of the transaction.

	T name tab COLUMN-DEFs	Table header.  'name' is the table's name.

				COLUMN-DEFs are a tab-separated list of
				column definitions.  The number of
				COLUMN-DEFs is the number of columns in the
				table.  The order of the COLUMN-DEFs must
				match the order of the corresponding fields
				in the data records.

				Each COLUMN-DEF is a space-separated list
				of symbol/value bindings.  Two bindings
				are required for each column:

					name=xxx	'xxx' is the column's
							name.

					type=ttt	'ttt' is gives the
							column type and is one
							of:

					int	Decimal integer
					str	String
					frac	Decimal fraction (a number
						with an optional decimal point).
					date	A date in the format:
						  Month Day, Year

						Where Month is: Jan, Feb, etc.

	A name tab FIELDs	Add a data record.  'name' is the table for
				which this record is for.  FIELDs are a tab
				separated set of fields.  The number of
				fields must match the number of columns. Any
				fields can be empty, no matter what the data
				type.  The seperating tabs are required for
				even for empty fields, however.

	Each transaction begins with a 'T' line and ends with an 'E' line. 
Table headers and data records are contained within the transaction.  The
table header must be given before any data records for that table are given.

	The first table is always the 'transid' table.  For example:

		Ttransid	name=id type=str	name=ack type=str
		Atransid	eft1	free-edi@motorola.com

	Might be the first table for an EFT-type transaction called 'eft1'. 
	An acknowledgment for this transaction is to be sent to the given
	e-mail address.  A complete EFT transaction would also have
	something like:

		Teft	name=frombank type=str	name=fromaccnt type=str\
		+	name=tobank type=str	name=toaccnt type=str\
		+	name=amnt type=frac
		A	123456	12397654	123456	12387654	1259.37

	- an order to transfer $1259.37 from one account to another of the
	same bank.

Please start discussing the sufficiency of this as a data format.

To move on from here we are going to need a newsgroup for discussion (I have
no idea how to start the process for newsgroup creation) and an ftp site
for recording the standards.  I can donate an ftp site (ftp.worcester.com),
but it is slow and should probably be mirrored by others.  Another issue is
the name: 'EDI' probably violates someones trademark, so we need a new
name.

-- 
/*  jhallen@world.std.com (192.74.137.5) */               /* Joseph H. Allen */
int a[1817];main(z,p,q,r){for(p=80;q+p-80;p-=2*a[p])for(z=9;z--;)q=3&(r=time(0)
+r*57)/7,q=q?q-1?q-2?1-p%79?-1:0:p%79-77?1:0:p<1659?79:0:p>158?-79:0,q?!a[p+q*2
]?a[p+=a[p+=q]=q]=q:0:0;for(;q++-1817;)printf(q%79?"%c":"%c\n"," #"[!a[q-1]]);}
Technical Details
Message-ID: <E5v7qE.D85@world.std.com>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: 1103af,b5b6fb3cf8b99ab3,start
X-Google-Attributes: gid1103af,public
X-Google-Thread: 1025b4,b5b6fb3cf8b99ab3,start
X-Google-Attributes: gid1025b4,public
X-Google-Thread: fc5c9,b5b6fb3cf8b99ab3,start
X-Google-Attributes: gidfc5c9,public
X-Google-Thread: fbe20,b5b6fb3cf8b99ab3,start
X-Google-Attributes: gidfbe20,public
X-Google-Thread: 10963c,b5b6fb3cf8b99ab3,start
X-Google-Attributes: gid10963c,public
X-Google-Thread: 1023f3,b5b6fb3cf8b99ab3,start
X-Google-Attributes: gid1023f3,public
X-Google-Thread: 1145cb,b5b6fb3cf8b99ab3,start
X-Google-Attributes: gid1145cb,public
From: jhallen@world.std.com (Joseph H Allen)
Subject: Free EDI
Date: 1997/02/19
Message-ID: <E5v7qE.D85@world.std.com>
X-Deja-AN: 219895001
Organization: The World Public Access UNIX, Brookline, MA
Newsgroups: comp.protocols.misc,gnu.misc.discuss,biz.comp.accounting,bit.listserv.edi-l,tnn.protocols.edi,comp.protocols.misc,comp.os.linux.misc,comp.databases,sci.crypt