站点内容模型
站点是内容存储管理的中心。理解站点对象模型,是理解平台开发接口的基础。
1 理解站点 (Site)
账户 (Account) 和 站点
每个公司对应一个账户,可管理通讯录,并可创建多个站点。
使用 账户名 唯一标识账户,系统默认的账户(Account)名是 zopen 。易工作中可注册使用其他的账户名。
站点名是站点的唯一标识代号,默认是 default 。新建站点的时候,可选择其他的名字。
站点服务(Service)
每个站点使用了一组服务,提供开放的对外接口,主要包括:
- 站点内容服务(workonline):负责管理文件、表单等内容,可定制开发应用
- 消息服务(message) :负责消息通讯
- 下载转换服务(viewer):负责文件下载、转换、查看
站点服务实例(Instance)
各Service为每个站点创建独立的数据区,每个数据区叫做一个实例(Instance)。
实例的名字分三部分:站点名称、账户名称、运营商名称,如: default.zopen.test 。
其中运营商名称,线下版本是 standalone ,易工作是 test (历史原因), 易开发是 dev
2 站点内容对象
上面的站点内容服务(workonline)包含的站点实例,存放了站点所有内容。
最顶层的是站点根对象(对象类型:Root),下面使用 root 指代。
站点根``root`` 下树状存放各种内容,每种内容有自己类型(object_types),分4类:
个人区 root['desks'],存放站点成员工作台
站点为每个登录用户分配一个工作台(对象类型: Home ),用于存放个人的数据和设置。
所有站点成员的工作台,统一存放在个人区中 (对象类型: HomeContainer) 。
工作台,以每个用户的唯一ID来命名,对于用户 zhangsan ,工作台为 : root['desks']['users.zhangsan']
更多区 root['more'] ,统一存放一些站点工具型的应用
更多 是站点的一个内置栏目,是一个空间类型的对象(对象类型: AppContainer )。
在 更多 ,通常存放 微信连接设置、站点统计 等工具。
软件包区 root['packages'] ,存放站点安装或定制开发的应用代码
每个站点可以在应用市场安装一组应用到站点,代码统一存放到这个软件包区。
每个软件包有唯一的名字,由开发者账户 和 软件包名字组成,比如 zopen.sendfile
站点栏目,存放正式的站点内容,比如文件库、空间等
站点栏目,包括三种:
- 文件库(对象类型: Folder): 分层树状存放文件(对象类型: File)、快捷方式
- 表单库(对象类型: DataContainer):类似数据库的表,存放表单(对象类型: DataItem)
- 栏目容器(也叫空间,对象类型: AppContainer):分栏目组织站点内容的容器,上面的 更多区 就是一个空间,站点根、个人区、工作台都是特殊的空间。
3 内容对象的地址和唯一标识
3.1 对象路径(path)
站点内容逐层存放,每个内容都有一个名字 name ,组成了站点内容存放的路径,可以用来定位站点内容.
比如上面zhangsan的工作台,在站点的路径是 desks/users.zhangsan 。
可以通过如下网络地址访问:
http://站点地址/desks/users.zhangsan
一旦对象发生移动,对象路径就发生变化。这样会导致之前的对象地址失效。
3.2 唯一标识(uid)
站点中每个对象都有唯一标识,类型为整数,如 1231231442 。
可以通过如下地址访问:
http://站点地址/++intid++1231231442
移动对象,唯一标识不会发生变化。
4 内容对象的属性
内容对象自身,可以附加存放一些数据,也就是属性信息。分为3种:
基础属性
比如标题(title)、描述(description)、创建时间(created)等,所有内容对象都有这一组通用的基础属性
设置信息
每个内容上可以存放一些系统级设置属性,比如是否允许评注。
扩展属性
每个内容,可附加存放多组属性,比如文档的档案信息、合同信息。扩展属性有应用来定义,用于特定应用场景。
5 工作流
工作流分2部分:
工作流定义,位于应用软件包中
系统采用基于活动的工作流引擎。每个工作流分多个步骤,进入步骤有多个操作项,用户点击操作项按钮,进入下一步骤。
工作流运行,产生工作项(内容类型:WorkItem),附加在表单库的各个表单中
工作项进入每个人的待办事项,完成之后成为工作历史,工作项在日历中展示就是日程。