/[cvs]/nfo/perl/libs/OEF/doc/Why/Queue.pod
ViewVC logotype

Contents of /nfo/perl/libs/OEF/doc/Why/Queue.pod

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations)
Sat Dec 21 17:03:19 2002 UTC (21 years, 6 months ago) by joko
Branch: MAIN
+ initial check-in

1 package OEF::Why::Queue;
2
3
4
5
6 - take care to declare your Plugin-modules as 'mixins' to BizWorks::Process
7
8 - take care to specify BizWorks::Process-modules correctly
9 (including the full-name to the perl-namespace in the 'package'-declaration at the top of each file)
10
11
12 ~~~ 3
13
14 - refactor use of class 'SystemEvent'
15 - maybe rename to show its scope already in classname (e.g. 'OefEvent')
16 - 1. generic inject on schema-level (like already successfully done with guid)
17 - auto-select of correct database at wiring-time (addLogDispatchHandler)
18
19 - module-refactoring & namespace garbage collection:
20 + refactored mechanism to use sub-modules inside the BizWorks::Process-namespace (anchorless)
21 - refactor BizWorks::Process to be anchorless itself
22 - spread new loading-mechanism over already used scripts and integrate to API to be able to do some kind of ...
23 ... "remote component loading" (use in admin panel!) ("admin panel"=admin-area/page/site/oberflรคche/bereich? -- !)
24 - refactor parts of BizWorks to OEF? (OEF::Component, OEF::Process) again, think about looking at CPAN's PApp (more in detail!) here
25 - refactor files in etc/ to be compliant to some - not yet developed (tbd!) - kind of configuration-metabase-structure
26 ---> look at some already investigated modules from CPAN (Meta::XYZ???)
27 - refactor internal structure of files in doc/ to be html-renderable. use pod? (just with the new ones starting from 0.03)
28
29 - use the session (backend->frontend) described below also to propagate error-messages from back- to frontend
30 --> each frontend uses one remote-/backend-session
31 ---> restricted access! (tbd)
32 --> each admin(-area) uses one remote-/backend-session
33 ---> full access!
34
35 - document ids (identifiers) used:
36 - oid: object id (created by the innards of Tangram)
37 - guid: global id (created by a hook on object-insertion inside Tangram::Storage::_insert)
38 - serial: hash built from the content of the object (payload) via (e.g.) Digest::MD5 identifying it somehow...?
39 - sid: session id (created for _each_ object per session inside BizWorks::API::Session::_useobject ...
40 ... and also gets stored there (instead of the others in this list which come along with the object itself.)
41
42 - about: global identifiers
43 - if you're designing a fully distributed (global) system it's important that your objects have assigned some kind
44 of "global identifier" (e.g. generated from Data::UUID or similar) when used across possibly disconnected systems.
45 --> each disconnection must/may/can be assumed as a "redeploy"
46 (an operation which invalidates e.g. all oids and/or breaks all relationships (or even more!))
47 - so relying on per-deployment identifiers (oids) from one of n systems will break your neck certainly :-)
48 - how to implement this?
49 - implement & use session-based mechanisms! (compare ASP/php sessions)
50 - assure you have full session-based-communcation between _all_ layers ;-)
51 .... else communication using identifiers will break at this very layer
52 - provide a guid -> <new-id-created-representing-the-master-guid> - mapping for each session
53 - integrate these new mechanisms as new layer between the backend and frontend
54 --> this will give you multiple frontends talking to the backend with their own identifiers! (and probably much more....)
55 - use this stuff to enhance infrastructure at system-setup/redeploy-/take-up/down-level:
56 - here we could apply (more or less) generic rules in the process-flow:
57 - flush session-metadata (guid->sid - mapping) ...
58 - ...
59 - this gives us
60 - possibility of having backend-db-redeploys transparent for the rest of the system
61 - possibility to drive "older" frontends (because we already have the mapping to the old identifiers) ....
62 ... just introduce a "VERSION" to actually measure age!
63
64 - about: data
65 verbs:
66 pattern matching, filtering, scanning, searching, reading, writing, mungling, munging, transforming,
67 translating, migrating, finding, replacing, grep, stepping, viewing, reporting, including, feeding,
68 syncing, encapsulating, sending, transmitting, recieving, serializing, unserializing, mapping, meta, merging,
69 looking up, indexing, sharing, distributing, centralizing, backing up, restoring, comparing, diffing, matrix manipulation,
70 math manipulation, visualizing, filtering, iterating through, traversing, calculating, accumulating, freezing, processing,
71 routing, transferring, converting, loading, saving, storing, activating, archiving
72 nouns:
73 transitioning, set, structure, object, file, database, memory, filesystem
74 combined nouns:
75 --> combine the ones above
76 adjectives:
77 nested, flat, instantiated, raw, real, test, production,
78 ----> puzzle all by-random ;-)
79
80 - what's that?
81 - why Perl?
82 - hate writing too much code?
83 - why Tangram and Class::Tangram?
84 - hate writing sql?
85 - hate writing constructors?
86 - these are the most simple reasons from a RAD perspective,
87 (OEF) should give you much more, please read on... (and otherwhere)
88
89 - PApp::Storable 2.04 - ;-) try to interconnect with Tangram 2.04.....
90
91 - Data::Filter ...
92 - ... utilizing Regexp::Group
93
94 - _don't_ start OEF!!! try to use PApp!!! (+POE, +P5EE)
95 ---> write components for these (and maybe try to tie them together in a convenient way)
96 ---> like already done with Data::Storage
97 ---> to _really_ start building higher level components for/with them (for real/bigger/distributed applications)
98 ---> "OpenDavid", "OpenAccess", "OpenExchange"
99
100 - about: a database: (+rdbms, +odbms)
101 - basic actions (rdbms)
102 - holding
103 - storing and retrieving by identifier
104 - querying
105 - features (oo-style)
106 - orm (object relational mapper: maps oo-object-properties to table-fields)
107 - schema (maps oo-classes to oo-objects)
108 - relations
109 - constraints
110 - object inheritance
111 - highlevel services
112 - transactions
113 - stored procedures, views
114 - replication (master -> slave)
115
116 - refactoring: use PerlIO::via to get _real_ layers (in this case for the "per-file basis")?
117
118 ~~~ 2
119
120
121
122 - refactor perl/libs/misc
123
124 - refactor perl/libs/libp.pm into Data::Conversion:: and/or Data::
125
126 ~~~ 1
127
128 - Tangram::Storage/Data::UUID:
129 - rewrite _full_ functionality of Data::UUID to a pure perl version Data::UUID::PP or Data::UUID::PurePerl
130 + Data::UUID::PurePerl which uses Digest::MD5 with a random payload internally
131
132 - OEF::Component::Transfer should get commands issued to
133 tell.pl transfer ....
134
135 - documentation/self-documentation:
136 - doc/meta (for self-documenting purposes, place sloccounts and cvs-graphs/commitinfo/commitgraph) here
137 - doc/tracker (bug-, feature- and issue-tracking-system) - interface with cvs (file based use) somehow.....
138
139 - cmd.pl/command.pl --> tell.pl
140
141 - core-services to be abstracted out as components:
142 - lowlevel
143 - object manipulation (query, load, edit, save)
144 - data manipulation (transformation, conversion, encoding, encapsulation)
145 - communication services (rpc-xml, soap, file-system-based (pipe, socket, dir/file-poll/-watch), other rpc-mechs, net/raw (tcp, udp, ...))
146 - highlevel (utilizing above components and cross-utilizing themselves)
147 - reporting facility
148 - logging
149 - xyz
150 - processing facility (here is the actual code!)
151 - routing facility
152 (- view generation)
153
154 - implement command-abstraction:
155 - use router/hop - mechanism
156 - declare commands in etc/BizWorks/Commands.pm, (or insert them to db and enhance router/hop-mechanism with "nodes") - map them to:
157 - description
158 - argument-container (hash containing passed-in arguments: this should be processed via some kinda "request"-object)
159 - at the end - a "response"-object should be the result of the command-routing process
160 - given this - it should be as easy to switch between synchronous/asynchronous-processing on command-level easily (speaking "on-the-fly")
161 - rewire this to a new script: cmd.pl/command.pl
162
163 - add diff/merge on per-node-basis (inside!) for Data::Transfer::Sync as an alternative to md5-checksum-hashing
164
165 - write small tool to scan source-code for various often-used-patterns:
166 - 1st run: TODO, HACK, REVIEW
167 - 2nd run: lowercase versions of above listed items
168 - report text/code after that (make context-width (before, after) configurable)
169
170 - backend-sync: detect changes to underlying file when using DBD::CSV when syncing - will get destroyed otherwise ;)
171
172 - central Data::UUID authority (two steps)
173 - move all code to a central location (BizWorks::Helper::UUID)
174 - central GUID-server/authority (like a ticket-authority) (RPC around BizWorks::Helper::UUID, etc.)
175
176 - integrate a mechanism to disable new-guid-assignment when calling Tangram::Storage::_insert
177 - purpose: option for db_backup.pl dbkey=backend --action=restore
178
179 - introduce generic "advanced.error.propagation"-mechanism for functions in Data::Storage::Handler to
180 let them return more verbose error-messages if any errors actually occour
181 - don't just return and don't pass back verbose strings in return values directly!
182 => pass back response-hash = {
183 errcode => 5,
184 errmsg => '<verbose error message>',
185 ok => 0,
186 }
187 - go oo via Event?
188 - go exception-style via try { ... } catch { ... }?
189
190 - ideas to abstract the rotation-mechanism: (feed.pl --action=rotate)
191 - rotate.by.flag (is what we have now implemented in a hardwired fashion (backend_import.pl))
192 - rotate.by.date (give date to rotate by ....)
193
194 - an abstract/third language to write validation processes in?
195 - intention: include this code (the identical) at _two_ system-nodes independent of used language (language-binding needed!) (python, javascript?)
196
197 - libraries/modules: currency and/or datetime calculation for php and/or perl!?
198 - fields of "datetime": date, time, timezone
199 - fields of "currency": from -> to, setBase, getByCountry, (setBaseByCountry???)
200 - perl:
201 - Date::Manip
202 - php:
203 - PEAR/Date
204 - PEAR/Date/TimeZone???
205
206 - frontend-sync - new concept:
207 - sync: two features - not more!
208 1. use guids for identification of nodes (wipe out usage of tangram-oid!!!: now the synchronization-layer is independent from tangram)
209 2. generic hook for im-/exports: wrap xml im-/export around that?
210 - maybe: don't do that above, but just _add_ the guid to the field-map of each node while syncing (generic "introduce"/"inject"-mechanism!)
211
212 - OEF: docu: declared databases can be used similar to / compared to mountpoints known from e.g. the unix filesystem.
213 $process->{bizWorks}->{<database-key>}->storageMethod
214
215 - OEF: look at pef@sourceforge!!!
216 - pef = perl enterprise framework
217 - contact authors!!!???
218
219 - describe how to start write (new) code for/with OEF
220 - start with simple .pl-script
221 - encapsulate code inside the very same .pl-file into a special compartment to get it accessible from core OEF
222 - maybe provide an external tool to automatically do this job? (e.g. cat example.pl | oef.pl --refactor=script-compartment --outfile=example_c.pl)
223 - include to Config.pm!?
224 - move code to own process-namespace (e.g. "BizWorks")
225 - maybe provide an external tool to automatically do this job? (e.g. cat example.pl | oef.pl --refactor=process --outfile=BizWorks/)
226
227 - attempt to start "OpenAccess" as a MS Access clone????? using...
228 - Data::
229 - OEF::
230 - Perl::Tk and/or mod_perl/Oak:: WebXyz::
231 - POE
232 - P5EE
233 - some more code...... ;-)
234
235 - OEF::Scripting
236 - binding for scripting via perl/python/javascript/php? (even an emulated/open vbscript???)
237
238 - OEF/FAQ.pod
239 - i can't find any getter/setter-methods in the source - where are they?
240 -> don't worry - they are there - but hidden away from Tangram / Class::Tangram - please read their documentation to get an insight into the mechanisms used in the layers using tangram for storage
241 - there are/will be some other "real"-getter/setter-methods or OEF will provide/wrap other class-generators as adapted/bridged handlers
242 e.g. Tie::SecureHash, Class::Contract, Class::Xyz, ..... (try to integrate/move utilization of Class::Tangram into this (new) layer as well....)
243
244 - introduce mechanism to provide something like a "dynamic reversed mixin-inheritance"
245 (from the view of perl's mixin-module available from CPAN)
246 - purpose:
247 - don't mixin plugin-subobject's to a common concrete parent-container-objects, but ....
248 - .... dynamically (via eval) mixin an abstract parent-container-object into an arbitrary instantiated plugin-object's namespace
249 - this (maybe) will get you shared resources between applications and plugins but namespace-seperated methods on plugin-level, but ....
250 - .... still lets you have common methods available to all plugins declared in the abstract parent-container-object
251 (needed e.g. for 'load/unload' itself....)
252 => hierarchical plugin namespace at runtime - sharing resources, common methods and (maybe) other preconfigured (helper-)objects
253 - another idea/enhancement on top of this: dynamically mixin arbitrary/given package into _current_ __PACKAGE__
254 - another idea/enhancement parallel to this (maybe better/easier to use/implement/merge-with-POE?):
255 - provide each plugin with a meta-data-storage-container (kinda _SESSION/_STACK) which can/will get flushed on destroy, but ...
256 ... can also be made persistent on demand/request, or ...
257 ... sent to a remote location: would process-migration be possible with this???
258 _start_proc(local)
259 _pause_proc(local)
260 _migrate_proc(local, remote)
261 _migrate_proc_meta(local, remote)
262 _migrate_proc_stack(local, remote)
263 _resume_proc(remote)
264 while (status = _query_proc(remote)) {
265 print status
266 last if status.ready
267 last if status.error
268 }
269
270 - write code for (automatic )documentation-purposes:
271 - perl-filter to (hard) dump all _values_ sub- input- and output- variables
272 - perl-filter to (hard) extract sub-name and attributes
273 - perl-filter to (guess) all _names_ of a) passed-in (request)-variables (arguments, options) and b) passed-back (response-)variables ((processing-)results, boolesch or arbitraryly encoded status)
274 - perl-filter to (hard) extract additional in-/out-metadata ... how? already proposed somewhere - search linkdb
275
276 - guid should be generated in a core module in the Data::-namespace to be accessible by both Data::Transfer::Sync and BizWorks::xyz
277 -> mkGuid
278 -> Data::Storage::Sync - metadata: add ->{isGuidProvider}???
279
280 - Data::Transform::Deep:
281 - rename 'expand' to 'deep_expand'
282 - create new sub 'merge' (from 'hash2object_traverse_mixin'), use from 'hash2object'
283 - use IterArray and/or IterHash???
284
285 - include main namespace (BizWorks, BizWorks::Process) in Config.pm somehow
286 ----> refactor code to provide declarative boot/startup
287 => SYNOPSIS:
288 my $app = OEF::Application->new(
289 config => $config,
290 namespaces => {
291 'BizWorks' => {
292 },
293 databases => [qw()],
294 packages => [qw()],
295 );
296 my $app = OEF::Application->new(package => 'BizWorks');
297 my $app = OEF::Application->new(script => 'feed.pl');
298
299 $app->boot();
300 $app->run();
301
302 propagation of config / further boot is done _after_ parsing the configuration
303 e.g. booting BizWorks is just declard in there - it will not happen "by default" any more
304 => the door maybe is open now to load plugins from/to other namespaces/scopes besides BizWorks
305
306 - generic "makeSerial"-function (BizWorks::Process::Common) to make serials from some concrete objects
307 - rule: capitalize first letter of object-/class-name - append digest of object-payload (patched Data::Dumper)
308
309 - patch Data::Dumper to respect e.g. Set::Object
310
311 - synchronization: don't delete all nodes when running "export": just delete touched ones and show this via print "r" if $self->{verbose}
312
313 - transparently send tangram-objects via RPC::XML???
314
315 - introduce TTL and manual-purge-mechanism for HttpProxy
316
317 - introduce OEF, OEF::Process in nfo/ (Open Enterprise Framework)
318 - the OEF-namespace:
319 - OEF::Process (BizWorks::Process)
320 - OEF::Script (xyz.pl, BizWorks::RunMe)
321 - OEF::Core (BizWorks, BizWorks::Boot)
322 - OEF::Request and OEF::Response? asynchronous?
323 - OEF::Application (BizWorks)
324 - OEF::Engine?
325 - DOEPF? (Distributed Open Enterprise Perl Framework)? hmmm... no what about PHP? Python?
326
327 - what about code in BizWorks::Process::Core??? maybe use Data::Storage::Handler::Tangram::sendQuery
328
329 - introduce mechanism for developer-machines to detect and propagate schema-changes to e.g. frontend-databases (configure this option/feature in Config.pm)
330
331
332 1;

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed