Contact Manager

part of the ArsDigita Community System by Philip Greenspun

The Big Idea

As of March 1999, about six ArsDigita clients had come to us with the same problem All said "we don't really care if we lose 95% of the features of ACT; we want to drive all of our activities from one database."

So here is a system with 5% of the features of ACT. It has one killer feature, though: you can tie it to the Oracle table of your choice!

Stuff we need to keep in the /parameters/ad.ini file

The Contact Manager system needs to know
  1. to what table am I tied?
  2. what column holds the primary key?
  3. what data type is this column ("text" or "number"; we just want to know whether we have to wrap values in '' or not)
  4. what column holds the best short name for an entity?
  5. singular noun for an entity
  6. plural noun for entities
  7. how to do a transaction saying "this org is now signed up; they don't need to be sold anymore" (the parameter is the name of a PL/SQL proc to exec with an argument of the primary key value of the relevant entity)
  8. how to do a transaction saying "this org isn't worth signing up; they don't need to be contacted anymore" (the parameter is the name of a PL/SQL proc to exec with an argument of the primary key value)
  9. what goes after an SQL ORDER BY if we want to rank entities by descending order of necessity to contact (e.g., for potential customers of a bank's VISA card program, you'd have bankrupt_p, income desc (rank by bankrupt or not first, then by descending income.))

Stuff we store in Oracle tables

The one thing that saddens me is that it is going to be impossible to spec a referential integrity constraint in the .sql file because we don't know in advance to what table the contact manager will be tied. However, we can say that we want to keep We don't try to keep any fancy structure for things like the phone number of the contactee. This might be annoying for users and it is useless because the only thing that this software is really be able to do with structured info is sent email (so we want the name for a "Dear Foobar" salutation and the email address for the To: header).
philg@mit.edu