Search code examples
data-modelingformal-languagesdocument-managementecmsensenet

What is the formal model behind Sense/Net ECM?


First, I don't know if this is the right place to discuss idea related to Sense/Net SN evolution & learning process about it!

Anyway, this is my story:

I have tried & tested some SN functionality especially content type definition CTD; It is really elegant!

Sense/Net wiki documentation gives us "Know How" and we may write 200 wiki pages about SN. All included information are true. However, we don't have the complete model in which we can see the whole system model and how all cases derived from it.

I searched SN codeplex.com pages but didn't find how SN evolved to be mature ECM platform.

Also, searched google using the following KWs:

  • "Document Management System Modeling"
  • "Role-based access control (RBAC) model"
  • .....

Please collaborate & help.


Solution

  • It's curious that no one from SenseNet has answered, but I'll give it a shot even though I don't know a lot of the history. I've been working with SenseNet for the last 4+ years, developed the pysensenet extension, communicate with the developers, and am familiar with the source code, so I know a bit about the framework.

    The framework has evolved over that last 15+ years and is pretty remarkable. Here are a few facts and highlights:

    • The data model is at it's core an XML Tree where each tree node has an internal representation as a C# class and can hold any number of properties/Fields. This is referred to as Content, and the database as the Content Repository.
    • The XML Tree is persisted in a SQL Database and uses Lucene.NET for indexing.
    • Content / data queries are made in Lucene and not SQL.
    • At one time the database was arbitrary (SQL), then stored procedures in MS SQL Server locked it into MS SQL, although recently (SenseNet 7) supports blob storage in MongoDB.
    • Fields can be one of 9 built-in field types, or a custom type that you define.
    • A node in the XML Tree, aka "Content", can hold a field that references another node somewhere else in the tree, like a linked list inside a tree! OK, a doubly linked list since both nodes can refer to each other. Very cool.
    • There is no "external model", or as SenseNet says, "Everything is Content".
    • The permission system is node based and is incredibly granular. For example, you can define permissions such that one role, group or person, can only see the Content at a particular node. And it integrates with Active Directory.
    • All Content can be versioned and tracked. For example, a Content Type of "Contact" (person) could have versioning on for the person's name. This way if someone changed their name, the Content Repository would have a history of the all name changes.

    Hopefully this doesn't come off as a SenseNet marketing piece -- I don't work for them and don't benefit if you purchase a license -- but may help you compare it to other technologies such as SharePoint and Alfresco.