当您根据现有的数据库规划工作流应用程序时,请记住:
- 将现有数据库注册为工作流应用程序之前,请制作该数据库的一个备份副本。
- 不要试图对产品数据库进行设计更改。将数据库移动并复制到某个测试环境中,并在该环境中执行所有工作流实现和架构更改。在确保工作流应用程序按照预期的那样运行之后,请将其部署到生产服务器中。
创建计划嵌入工作流应用程序的数据库时,应该在开始开发之前熟悉某些架构限制。如果计划向现有 Microsoft® SQL Server™ 数据库添加工作流,还应该认真审阅这些限制。
一般原则
- SQL Server 可实现在单列主键中使用下列数据类型:datetime、smalldatetime、float、real、decimal、money、smallmoney、int、smallint、tinyint、timestamp、nvarchar、nchar、varchar、char、varbinary、binary 以及uniqueidentifier。
- SQL Server 不允许在主键/唯一键中使用下列数据类型:text、ntext、image 以及 bit。
- 如果表关系基于主键/外键关系(在该关系中,包括多列键在内的键是受 SQL Server 支持的),则“工作流设计器”表层次结构就支持表关系。
- 如果某个主表中包含单列主键/唯一键,并且该列属于 tinyint、smallint 或 int 类型,就只能对该表实施行级安全。
- 当您向“工作流设计器”的表层次结构中添加主表时,将为该主表和任何相关的明细表创建视图。如果已设置这些表的权限,就必须手动设置相关视图的权限。“SQL Server 工作流设计器”不会将现有的表权限复制到新创建的视图中。
注意 不会为不相关的表和查找表创建视图。
- 为工作流启用了数据库之后,如果在该数据库中创建视图,则必须将权限手动应用到新创建的视图中。如果此视图将成为数据访问页的基础,则必须为要使用数据访问页的角色授予主键的选择权限和其它列的插入和删除权限。
- 命名对象时,不要使用空格和特殊的字符,如:" / / [ ] :; | = , + * ? < >. 还要避免使用 SQL Server 关键字,因为此名称会被解释为关键字,而非数据库名称。
工作流架构原则
您只可以用单列主键或唯一键在表上启用工作流。不能用连接键(多个构成主键的列)在表上启用工作流。
行级权限架构指南
- 要启用行级权限,表中应该包含兼容整数的列,此列可以由实施行级权限的代码作为行标识符来使用。兼容整数的类型包括:int、smallint、tinyint、numeric 和 decimal。
“SQL Server 工作流设计器”先查找 int 主键,然后查找标识列。rowID 列由 modGetPermissionsJoinColumn 存储过程提供。