In general there are several approaches to tailor xowiki's base classes. An important issue is in which scope you intend to modify the behavior:
- for all xowiki instances or for certain ones
- for all applications where a page of class ::xowiki::Page is used
- for all situations, where ::xowiki::WikiForm is used
Certainly, it is as well possible to define a new class. This will keep the information in the same tables as usual, but will create an additional table according to the OpenACS sub-typing conventions keeping essentially the revision_ids of the new class and additional attributes of the class (in your case none). I would not recommend to deviate from the OpenACS conventions to far. But i am not sure, that you want to define a new class for your application.
If you want to modify the behavior for a single "type of application", i would recommend to subtype the xowiki package (e.g. myapp) and to mixin the wanted behavior for every connection request to myapp. You can do this by creating a class ::myapp::Package with superclass ::xowiki::Package and add/remove the behavior each time a package instance is initialized/destroyed (provide methods "initialize" and "destroy"). The package s5 does a similar thing. In your case, you could mixin the wanted behavior for e.g. the WikiForm (don't forget to remove the mixin in the destroy method of the Package). The method "initialize" was added in april this year to xotcl-core.
Hope this helps
-gustaf neumann