<?xml version="1.0" encoding="ISO-8859-15"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#"
      xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title mode="escaped" type="text/html">Bogdan Stefanescu</title>
  <tagline>ATOM Feed - Bogdan Stefanescu</tagline>
  <link rel="alternate" type="text/html"
        href="http://blogs.nuxeo.com/sections/blogs/bogdan_stefanescu" />
  <id>tag:blogs.nuxeo.com:sections:blogs:bogdan_stefanescu</id>
  <generator url="http://cps-project.org" version="3">CPS</generator>
  <modified>2005-01-25 19:17:16</modified>

  <link rel="service.feed"
        href=" http://blogs.nuxeo.com/sections/blogs/bogdan_stefanescu/atomFeed"
        title="Bogdan Stefanescu"
        type="application/atom+xml" />
  <link rel="service.post"
        href=" http://blogs.nuxeo.com/sections/blogs/bogdan_stefanescu/postAtom"
        title="Bogdan Stefanescu"
        type="application/atom+xml" />
  <link rel="service.categories"
        href=" http://blogs.nuxeo.com/sections/blogs/bogdan_stefanescu/atomCategories"
        title="Bogdan Stefanescu"
        type="application/atom+xml" />

  
      <entry xmlns="http://purl.org/atom/ns#"
       xmlns:dc="http://purl.org/dc/elements/1.1/">
     
  <title mode="escaped" type="text/html">Apogee Resource Model</title>
  <link rel="alternate" type="text/html"
        href="http://blogs.nuxeo.com/sections/blogs/bogdan_stefanescu/2006_02_21_apogee-resource-model" />
  <issued>2006-02-21T18:39:10Z</issued>
  <modified>2006-02-21T18:39:10Z</modified>
  <created>2006-02-21T18:33:20Z</created>
  <draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
  <author>
    <name>bstefanescu</name>
  </author>
  
  
    <dc:subject>apogee</dc:subject>
  
  
    <dc:subject>eclipse</dc:subject>
  
  
    <dc:subject>nuxeo</dc:subject>
  
  
    <dc:subject>rich_client</dc:subject>
  
  
  <summary type="text/html" mode="escaped">A new thread was started on Apogee list regarding the Apogee resource model.
  Anyone willing to participate on this topic may subscribes here: http://lists.nuxeo.com/cgi-bin/mailman/listinfo/apogee
  
   
   The document describing the Apogee resource model can be found here: http://apogee.nuxeo.org/sections/documentation/apogee-global
  
   The resource model is still under development so ...</summary>

  <content type="text/html" mode="escaped"
           xml:space="preserve">A new thread was started on Apogee list regarding the Apogee resource model.
  Anyone willing to participate on this topic may subscribes here: &lt;a
  href="http://lists.nuxeo.com/cgi-bin/mailman/listinfo/apogee%20"&gt;http://lists.nuxeo.com/cgi-bin/mailman/listinfo/apogee&lt;/a&gt;
  &lt;br /&gt;
   &lt;br /&gt;
   The document describing the Apogee resource model can be found here: &lt;a
  href="http://apogee.nuxeo.org/sections/documentation/apogee-global%20"&gt;http://apogee.nuxeo.org/sections/documentation/apogee-global&lt;/a&gt;
  &lt;br /&gt;
   The resource model is still under development so it may change in
  future.&lt;br /&gt;
   &lt;br /&gt;
   Here is a short summary of things discussed: &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   &lt;i&gt;Aren't files and folders model restrictive compared with CPS object
  model ?&lt;br /&gt;
   Can resources have a file and a folder nature in the same time? (this means
  resources having content as files but also children as folders)&lt;br /&gt;
  &lt;/i&gt; &lt;br /&gt;
   Files and folders are handles to real objects described by resource
  metadatas and that may be put in a tree structure. So that folders are nodes
  that may contains children and files are terminal nodes. &lt;br /&gt;
  Real objects behind these handles are not affected by the handle type (file
  or folder) - this is used only to define the resource tree. &lt;br /&gt;
  The real object may be unaware that it is a file or folder in the Apogee
  resource model. &lt;br /&gt;
  Objects may be of any type. Every resource may support having content - even
  folders. For example a resource folder may point to a "Link", "Calendar" or
  wathever object you want even to a "file"having some content in a file
  system. The same applies for the file resource. It may points to a real
  folder in a file system ... &lt;br /&gt;
  &lt;br /&gt;
  So the File and Folder properties are defined on the resource level not on
  the underlying object level. &lt;br /&gt;
  Underlying object are completely described by the associated metadata.
  &lt;br /&gt;
  Each ECMporvider may defines it's own objects and metadatas - so that Apogee
  should be able to handle any type of object. &lt;br /&gt;
  This is why the resource model is not defining objects but only basic
  resources like Site, File and Folders and Metadatas objects that describes
  the underlying object or content.&lt;br /&gt;
   &lt;br /&gt;
   
  &lt;hr size="2" width="100%" /&gt;
  &lt;br /&gt;
   &lt;i&gt;About containment: How it will be managed for maximum flexibility?&lt;br /&gt;
   Is there envisaged a virtual tree structure to create mixed tree using
  resources from different ECM providers?&lt;br /&gt;
  &lt;/i&gt; &lt;br /&gt;
   Containement is managed at the persistence level - by ECM providers. &lt;br /&gt;
  The resource tree is build by calling ISiteController.getChildren(folder)
  for each folder resource - operation that is implemented by the
  corresponding ECM provider - so that the resource tree will reflect the tree
  structure defined by the provider. &lt;br /&gt;
  &lt;br /&gt;
  For the local ECM provider that will be implemented in Apogee we will use a
  db4o database. The resources will be stored as objects and the three
  structure will be defined explicitely by each object by keeping the parent
  path and the local name of the resource (relative to its parent) &lt;br /&gt;
  Example: &lt;br /&gt;
  Object { parentPath: "path/to/parent"; name: "myName"; } &lt;br /&gt;
  To query for all children for a given folder we may query for all objects
  having the parentPath equals to the folder path. &lt;br /&gt;
  This is an example. There are also other ways of describing the tree inside
  db4o. &lt;br /&gt;
  &lt;br /&gt;
  Anyway, we can envisage to define in the resource model "Virtual Sites"
  owning a resource tree made by resources belonging to other sites having
  different ECM providers. So that we can create virtual trees of objects.
  &lt;br /&gt;
  Implementing this is possible. &lt;br /&gt;
  The virtual site should be bound to a special ISiteController implementation
  that delegates operations to the controller corresponding for the target
  resource. &lt;br /&gt;
  For example the ISiteController.exists() method can be writted as follow:
  &lt;br /&gt;
  &lt;br /&gt;
  public boolean exists(ISiteResource resource ) { &lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp; return resource.getSite().getController().exists();
  &lt;br /&gt;
  } &lt;br /&gt;
  &lt;br /&gt;
  Also, the resource should keep a reference to its real site and NOT to the
  virtual site - so that it is not even aware that is used inside another
  site. &lt;br /&gt;
  The containment for virtual sites cannot be defined be the ECM providers...
  since resources from different providers are put together in the same tree.
  &lt;br /&gt;
  This can be done directly in the resource model (by the virtual site) by
  using RDF relations between existing resources. &lt;br /&gt;
  Something like: "resource1_URI hasParent resource2_URI" RDF relations can
  also be easly stored in a db40 database.&lt;br /&gt;
   &lt;br /&gt;
   
  &lt;hr size="2" width="100%" /&gt;
  &lt;br /&gt;
   &lt;i&gt;Communicaion between several ECm providers? For example is publishing a
  resource to several ECM provider sites working?&lt;br /&gt;
  &lt;/i&gt; &lt;br /&gt;
   Yes, operations may be executed between sites. For example a copy operation
  may allows that the resource to be copied be in other sote than the
  destination folder where the resource to be copied. The same thing can be
  done for a publish.&lt;br /&gt;
   &lt;br /&gt;
   
  &lt;hr size="2" width="100%" /&gt;
  &lt;br /&gt;
   Authentication is an ECM Provider function? Using the site controller or
  how? &lt;br /&gt;
   &lt;br /&gt;
   &lt;i&gt;Yes, supports for authentication will be added in ISiteController
  API.&lt;/i&gt; &lt;br /&gt;
   &lt;br /&gt;
   
  &lt;hr size="2" width="100%" /&gt;
  &lt;br /&gt;
   &lt;i&gt;Are workflows used in the resource model core?&lt;/i&gt; &lt;br /&gt;
   &lt;br /&gt;
   I want to keep the resource model core as simple as possible and
  functionality to be added as extensions and not directly in the core - and
  plugged into the operation execution logic by using the notification
  mechanism. &lt;br /&gt;
  Anyway we could add some fonctionality directly in the resource core. This
  will be decided at the time of designing the functionality. &lt;br /&gt;
  &lt;br /&gt;
  But for workspace or security checks I think they should be implemented by
  each ECM provider since they need custom workflow and security mechansims.
  &lt;br /&gt;
  &lt;br /&gt;
  The UNDO/REDO manager is an example of a generic service that may directly
  implemented in Apogee core (and not by providers) since it manages
  ISiteOperation objects that are not depending on any ECM provider.&lt;br /&gt;
   &lt;br /&gt;</content>

  <id>tag:blogs.nuxeo.com:sections:blogs:bogdan_stefanescu:2006_02_21_apogee-resource-model</id>
  <link rel="service.edit" type="application/atom+xml"
        href="http://blogs.nuxeo.com/sections/blogs/bogdan_stefanescu/2006_02_21_apogee-resource-model/atom?2006_02_21_apogee-resource-model"
        title="Edit Here - Apogee Resource Model" />
</entry>

  
  
      <entry xmlns="http://purl.org/atom/ns#"
       xmlns:dc="http://purl.org/dc/elements/1.1/">
     
  <title mode="escaped" type="text/html">Books Repository for Eclipse</title>
  <link rel="alternate" type="text/html"
        href="http://blogs.nuxeo.com/sections/blogs/bogdan_stefanescu/2005_02_02_books_repository_for" />
  <issued>2005-03-08T01:20:33Z</issued>
  <modified>2005-03-08T01:20:33Z</modified>
  <created>2005-02-02T17:35:33Z</created>
  <draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
  <author>
    <name>bstefanescu</name>
  </author>
  
  
    <dc:subject>eclipse</dc:subject>
  
  
    <dc:subject>nuxeo</dc:subject>
  
  
  <summary type="text/html" mode="escaped">
  This is the project I am currently working on.
  

  The Books Repository should be implemented in Java as an
  Eclipse plugin and its goal is to store and browse large
  collections of books.
  A book repository is a tree like structure of resource
  objects. The resources managed by a book repository are:
  
   

  
   Library - a book collection. Can contains a list of
   Books
   

   Book ...</summary>

  <content type="text/html" mode="escaped"
           xml:space="preserve">
  &lt;p&gt;This is the project I am currently working on.&lt;br /&gt;
  &lt;/p&gt;

  &lt;p&gt;The Books Repository should be implemented in Java as an
  Eclipse plugin and its goal is to store and browse large
  collections of books.&lt;/p&gt;
  A book repository is a tree like structure of resource
  objects. The resources managed by a book repository are:
  &lt;br /&gt;
   

  &lt;ul&gt;
   &lt;li&gt;Library - a book collection. Can contains a list of
   Books&lt;br /&gt;
   &lt;/li&gt;

   &lt;li&gt;Book - a book. A Book can contains Sections and
   Documents&lt;br /&gt;
   &lt;/li&gt;

   &lt;li&gt;Section - a book section. A section is a logical part of
   a book and may contains Documents&lt;br /&gt;
   &lt;/li&gt;

   &lt;li&gt;Document - a searchable text document. A document
   contains textual data and may contains other external
   documents (not necesarly text document) known as
   attachments&lt;br /&gt;
   &lt;/li&gt;

   &lt;li&gt;Attachment - a document attachment&lt;br /&gt;
   &lt;/li&gt;

   &lt;li&gt;Note - a note is an user comment that may be attached to
   a document&lt;br /&gt;
   &lt;/li&gt;

   &lt;li&gt;Bookmark - a bookmark is a reference to a node in a
   Library tree structure&amp;nbsp;&lt;/li&gt;
  &lt;/ul&gt;
  Only Note and Bookmark resources are editable by the user -
  the rest is read only.&lt;br /&gt;
   &lt;br /&gt;
   The resources are described by a set of properties knows as
  the resource METADATA. &lt;br /&gt;
   All the resources may defines the following METADATA
  fields:&lt;br /&gt;
   

  &lt;ul&gt;
   &lt;li&gt;id (string) - The local resource identifier&lt;/li&gt;

   &lt;li&gt;name (string) - The Library name&lt;br /&gt;
   &lt;/li&gt;

   &lt;li&gt;creator (string) The creator&lt;br /&gt;
   &lt;/li&gt;

   &lt;li&gt;date (string: YYYY-MM-DD) - The creation date&lt;br /&gt;
   &lt;/li&gt;

   &lt;li&gt;description (string) - The resource description&lt;br /&gt;
   &lt;/li&gt;

   &lt;li&gt;subject (string) - A list of searchable keywords that
   describes the resource&lt;/li&gt;
  &lt;/ul&gt;
  The only required fields are: id and name&lt;br /&gt;
   Each resource type may add custom fields to their METADATA
  but these fields are not yet defined. Also, the format of the
  id field is not yet defined.&lt;br /&gt;
   &lt;br /&gt;
   Each resource instance is globaly identified by an URI.&lt;br /&gt;
   Local identifiers (id field) are unique id relative to a
  given context.&lt;br /&gt;
   &lt;br /&gt;
   The Library structure (e.g. the resource tree) and the
  METADATA is described using the RDF format&lt;br /&gt;
   At this moment the metadata element set is not yet
  defined.&lt;br /&gt;
   A possibility is to use the Dublin Core Metadata Element Set
  to describe our resources METADATA.&lt;br /&gt;
   (See &lt;a
  href="http://dublincore.org/documents/dces/"&gt;http://dublincore.org/documents/dces/&lt;/a&gt;)&lt;br /&gt;
   The RDF description will be stored in a RDF database.&lt;br /&gt;
   As RDF engine I choosed Sesame (see &lt;a
  href="http://openrdf.org"&gt;http://openrdf.org&lt;/a&gt;) because it's
  the only RDF engine I've found that embeds a Java database
  which increase the engine portability. It also supports
  external databases like MySQL, PostgreSQL, Oracle etc.&lt;br /&gt;
   For a survey of RDF engines you can check &lt;a
  href="http://www.w3.org/2001/05/rdf-ds/DataStore"&gt;http://www.w3.org/2001/05/rdf-ds/DataStore&lt;/a&gt;&lt;br /&gt;
   Another interesting RDF engine is Redland (see &lt;a
  href="http://librdf.org/"&gt;http://librdf.org/&lt;/a&gt;)&lt;br /&gt;
   &lt;br /&gt;
   Document, Attachment and Note resources may contains text or
  binary data.&lt;br /&gt;
   This data is not stored in the RDF description of the
  library. Instead, we store it in a data repository on the hard
  disk.&lt;br /&gt;
   The data repository may be implemented using regular
  files/directories or using a database. For now, I will use the
  file system approach. Thus data will be stored in files inside
  a directory tree structure that will be defined later.&lt;br /&gt;
   Document data is stored as DocBook files and Note data is
  stored as plain text.&lt;br /&gt;
   &lt;br /&gt;
   There are two kinds of search we can perform on
  resources:&lt;br /&gt;
   

  &lt;ol&gt;
   &lt;li&gt;Search based on resource properties (using METADATA
   fields)&lt;/li&gt;

   &lt;li&gt;Search on Document text data (using a text search
   engine)&lt;br /&gt;
   &lt;/li&gt;
  &lt;/ol&gt;
  As text search engine I choosed Lucene that is already
  included by eclipse&lt;br /&gt;
   (see &lt;a
  href="http://jakarta.apache.org/lucene/docs/index.html"&gt;http://jakarta.apache.org/lucene/docs/index.html&lt;/a&gt;)&lt;br /&gt;
   &lt;br /&gt;
   The DocBook files will not be displayed directly by the
  eclipse plugin because&lt;br /&gt;
   this requires extra work to create a DocBook editor using
  eclipse SWT library.&lt;br /&gt;
   Instead, we will convert the DocBooks into HTML files that
  can be viewed in eclipse using the embeded web browser.&lt;br /&gt;
   &lt;br /&gt;
   Basically, to browse a book repsoitory, we need to create a
  Tree Navigator View and a HTML Browser.&lt;br /&gt;
   The Tree view is used to display the repository structure and
  the HTML Browser is used to display the Documents data when a
  Document node from the Tree View is double-clicked.&lt;br /&gt;
   There are also views that need to be created like: Bookmarks
  list, Metadata view, Notes list, Context Navigation, Search
  result etc.&lt;br /&gt;
   &lt;br /&gt;
   Also, a Welcome page (Home page) needs to be dispalyed the
  first time the user open a book repository.&lt;br /&gt;
   The Welcome page will be implemented as an HTML page
  (displayable in a HTML Browser instance)&lt;br /&gt;
   The content of the Welcome page is not yet defined.&lt;br /&gt;
   &lt;br /&gt;
   Another requirement of the application is to implement a
  method to synchronize (i.e. update) repositories with a
  central server.&lt;br /&gt;
   This will be implemented using a diff/patch system (based on
  the unix diff tool or on a XML diff tool)&lt;br /&gt;
   Update procedure:&lt;br /&gt;
   

  &lt;ol&gt;
   &lt;li&gt;download the update packages (a collection of diff files
   and attachments)&lt;/li&gt;

   &lt;li&gt;Apply diff files on the local versions&lt;/li&gt;

   &lt;li&gt;Rebuild the RDF database and the text search
   indexes&lt;br /&gt;
   &lt;/li&gt;
  &lt;/ol&gt;
  &lt;br /&gt;
 </content>

  <id>tag:blogs.nuxeo.com:sections:blogs:bogdan_stefanescu:2005_02_02_books_repository_for</id>
  <link rel="service.edit" type="application/atom+xml"
        href="http://blogs.nuxeo.com/sections/blogs/bogdan_stefanescu/2005_02_02_books_repository_for/atom?2005_02_02_books_repository_for"
        title="Edit Here - Books Repository for Eclipse" />
</entry>

  

</feed>
