[cells-devel] Re: [cells-gtk-devel] Re: Anything new for me to show off at ECLM 2008?
Ken Tilton
kennytilton at optonline.net
Fri Apr 11 11:49:41 UTC 2008
Andy Chambers wrote:
>> OK, don't make yourself crazy on my account. In fact, I already have
>>Cells-gtk as I had it last running on my laptop, I might just leave it at
>>that. I am going to try to get to Celtk, Cello, TripleCells (lite
>>integration with an RDF triple-store), Cells-Gtk, and OpenAIR (the
>>cells/ajax bit andy is doing). Whew!
>
>
> Will they be recording this stuff?
We'll be trying. :)
> I've seen you mention the
> TripleCells stuff before and am intrigued. Is it basically automatic
> serialization of cells instances? That would be the best database
> ever!
Scary right? The database -- it's alive!!! I actually did that on the
trial management project, which was different because that itself was
persistent CLOS. RDF is just this lower-level deal, but as such could
readily adapt to being a persistent CLOS-alike. But on the CTM project
we had Franz's full-blown persistent CLOS implementation dancing to the
Cells:
a persistent slot could depend on other persistent slots of the same
or other persistent instances.
s dynamic slot of a persistent instance could depend on persistent or
non-persistent slots.
dynamic instances could depend on persistent or dynamic slots of
persistent instances
And then I added a couple of things, one of which was depending on the
/population/ of a peristent class, kind of like depending on a dynamic
kids slot.
Then we added a little IPC so one process could scan in a new document
and then another process showing a GUI list widget of documents would
suddenly show a new one -- no "refresh view" required.
Only took a couple of weeks, IIRC, in part because Franz did a nice job
on their metaclass and Cells at the time was metaclass based.
> You could define a lispy report language that had access to a
> directory full of cells families.
Sure. You could do something like have the report itself be a DB object
and have it automatically updated when its inputs changed, with suitable
laziness so it does not regenerate itself on every I/O. A lot of times
one gets batches of reports that require a common view of the DB and
shops write extraction programs to generate a pre-digested breakdown off
which several reports can run.
And it is a great way to get tons of business logic into the database.
Our favorite trick was to scan in two pages of a three page form.
2dbarcodes linked a page back to the DB form (we generated documents
from the DB as well as scanned and ICRed them) so we knew how many pages
to expect. The code to scan just wrote out what it found, but the Cells
logic said "there is a missing page error" on this form simply with a
rule that looked like:
(cond
((< <pages-scanned> <pages-printed>)
(make-instance 'user-error
....
etc etc where user-error was a persistent class. Slot-values linked it
to the form in question, so anyone opening the application immediately
saw a hot list of problems. It was trivial then to add code to show them
the form with the problem and the scan history related to that form, and
because of our audit trail we could also tell them which user had done
the scanning on which machine. Made for great demo. :)
So far the RDF version is just very light proof of concept, I do not
really need it, just thought it would be fun to do and only took a
couple of days.
Back to OpenAIR...
kt
More information about the cells-devel
mailing list