表单库
表单和表单库
表单管理
表单存放在表单库中.
目录
1 表单库 DataContainer
存储表单页,表单页是结构化的数据。类似传统数据库里面表的一行数据。
表单库的对象类型 obj.object_types:
('DataContainer', 'Container')
表单库是一个 容器 对象,包含 容器 对象的所有接口.
1.1 表单库状态
表单库的状态 obj.stati 包括一组:
- datamanager.started: '活动', '启用'
- datamanager.finished: '关闭', '已冻结, 禁止添加新表单'
1.2 新建表单库
在应用容器(AppContainer)中,创建一个名字为 sendifle 的表单库:
container = obj.add_datacontainer(name='sendfile', item_content_type='zopen.sendfile:sendfile', content_type='zopen.sendfile:sendfile_container', item_stage='zopen.sendfile:sendfile', item_workflow='zopen.sendfile:sendfile', title='文件外发', description='')
其中:
- name: 表单库的名字
- title: 表单的标题
- description:表单的描述信息
- item_content_type:表单的定义
- content_type:(可选)表单库设置表单的定义
- item_stage: (可选)表单的阶段定义
- item_workflow:(可选)表单的工作流
1.3 表单库的设置信息
表单库 container 的设置表单保存后,信息存放在 container.md 中,比如:
container.md['title'] container.md['description'] container.md['reviewers']
2 表单页
表单页用来存放结构化的表单数据,是系统的基础内容,不能包含其他内容.
表单页的对象类型 obj.object_types:
('DataItem', 'Item')
2.1 创建表单页
如果希望添加表单的时候校验各个字段,可以用这个API:
item = obj.add_dataitem(data={'title':'the title', 'description':'the desc', 'age':12}, name='', **options) item.index()
这个会指向相关的参数合法性校验,会自动设置默认值。其中:
- data: 要添加的表单数据
- name: 表单存放在容器中的key
- options:这个是运行表单触发脚本所需要的一些额外的参数,如果没有,可以忽略
2.2 表单页的属性
上面新建的表单页 item 的属性存放在 item.md 中,比如:
item.md['title'] item.md['description'] item.md['age']
2.3 表单的状态
和文件类似,表单的默认状态包括:
- visible: 保密
- visible.default 普通
- visible.private 保密。一旦保密,内容不再继承上层文件夹授予的查看权限。
- modify: 编辑状态
- modify.default 草稿
- modify.archived 存档:一旦存档,文件禁止任何人删除、修改。
- modify.published 发布:一旦发布,文件禁止任何人删除、修改。
- modify.abandoned, '废弃', '流程单已被废弃,不可做任何其他处理'
- modify.pending 流程运行,流程正在运行
- modify.paused, 流程暂停, 暂停流程处理,此状态仅限于表单
- modify.finished 编辑结束,表单流程结束,默认会进入这个状态
2.4 表单的阶段
阶段就是一种可自定义的状态,在软件包里面定义阶段。
内容所处的阶段状态,以前缀 stage 描述,比如:
- stage.valid
- stage.open
- stage.finished
可以如下方法得到对象的stage:
stage = obj.state.get('stage') print stage.name, stage.title, stage.description
3 附加菜单
可以将表单库放入批量选择等的附加菜单。
配置位于 obj.settings['addon_actions'] 中,存放的信息是:
[{"id":'default', # 菜单ID "title":"分享", # 菜单项名称 "items":[{'uid':1212,'for':['Folder']}, {'uid':1221, 'for':['Folder]}] # 具体的表单 } ]
4 表单库设置
4.1 表格显示列
container.settings['grid_columns'] = ('title', 'size', 'created', 'zopen.sales:query',)
4.3 表单使用的阶段
container.settings['item_stage'] = ('zopen.sales:query',)