详细设计说明书(SaaS).doc_第1页
详细设计说明书(SaaS).doc_第2页
详细设计说明书(SaaS).doc_第3页
详细设计说明书(SaaS).doc_第4页
详细设计说明书(SaaS).doc_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

部分内容来源于网络 有侵权请联系删除 详细设计说明书详细设计说明书 SaaS SaaS 统一信息化平台统一信息化平台 文档一旦发布 请务必按文档执行并坚持遵守 如果您有改进的建议 请将您的建议发邮件或当 面告知所列作者 部分内容来源于网络 有侵权请联系删除 修订历史记录修订历史记录 版本版本日期日期作者作者修正原因修正原因 1 02013 05 23蔡源初始化文档 1 12013 08 30蔡源增加 定制化 个性化 章节 1 22013 09 29蔡源增加自动登录的设计 1 32013 10 15蔡源 增加参数字典设计 增加客户管理设计 1 42013 10 18蔡源 增加应用场景及解决方案章节 用于描述特定业 务流程或者功能流程的实现 1 52013 12 04蔡源 增加 团队协作 相关设计 主要包括项目管理 和任务管理 1 62013 01 15蔡源 增加用户与租户空间一对多的设计 用户可以在 不同空间中切换 1 72014 05 05蔡源 参数字典增加 filter 和 params 属性 用来根据业务 过滤和获得额外参数 1 82014 05 16蔡源细化具体的子系统和具体的功能模块 1 92014 05 22蔡源 细化 QuickView 增加动态查询条件定义和动态表 格定义 1 102014 06 19蔡源增加 DynamicSearch 支持动态组合查询条件 1 112014 06 26蔡源增加系统公告模块 1 122014 06 27蔡源 更新参数字典编号规则为 模块名 属性名 全局 唯一 1 132014 08 20蔡源 增加 文档管理 模块定义 增加 项目文档 模块定义 1 142014 11 10蔡源增加 个人文档 模块定义 1 152014 11 13蔡源 快速视图和动态查询条件增加 descr 属性 作为 tip 浮动显示 因为只显示名称太短了 无法详尽描 述这个视图的功能 1 162014 12 03蔡源细化 OA 协同办公的基础功能模块 1 172015 01 06蔡源 增加 业务角色 设计 用于配置数据访问权限 和字段访问权限 1 182015 02 01蔡源 将概要性内容转移至 概要设计 仅保留具体 设计部分 1 192015 02 05蔡源 增加租户配置信息设计 启用 AppStore 设计 每个业务子系统通过 AppStore 来进行管理 增加 系统版本定义与升级 1 202015 02 27蔡源客户信息增加收货地址属性 1 212015 03 27蔡源细化 MVP 所需的功能模块说明 1 222015 05 11蔡源 细化消息中心的事件推送和任务提醒 删除 文档管理 统一使用网盘 部分内容来源于网络 有侵权请联系删除 版本版本日期日期作者作者修正原因修正原因 增加通用数据权限设计 1 232015 06 03蔡源增加图片服务的说明 1 242015 06 24蔡源 配置管理重构 基于 obj json text 方式存储 而不 按单个属性存储 1 252015 06 30蔡源调整 tag 表设计 1 262015 07 02蔡源TODO 增加公开和场景功能 提升协作效果 1 272015 10 10蔡源联系人增加 isFav 属性 1 282015 10 10蔡源基础平台功能修订 调整表结构 1 292015 10 19蔡源增加 系统自动升级 1 302015 10 20蔡源 增加对业务日志的实现方案设计 OpLog 增加 opComment 属性 1 312015 10 21蔡源增加 Portal 组件的详细设计 1 322015 10 25蔡源 拆分 平台运营系统 为 平台管理系统 和 平台运营系统 将运营类分开 1 332015 11 12蔡源增加 业务关注与消息通知 的设计 1 342015 12 04蔡源附件表新增 recordUid 1 352015 12 18蔡源增加公告的缩略图 统计等 1 362015 12 29蔡源增加运营中心基础表设计 1 372016 01 18蔡源增加通用的数据权限表 1 382016 03 10蔡源增加 通用自动编号组件 的设计 1 392016 03 18蔡源增加 数据关联表 设计 1 402016 04 11蔡源增加 用户抄送 设计 1 412016 04 27蔡源增加实名认证相关字段 1 422016 05 23蔡源增加 workStatus 字段 1 432016 05 25蔡源增加用户余额的设计 支持充值提现 1 442016 06 15蔡源TenantMember 增加微信关注相关字段 部分内容来源于网络 有侵权请联系删除 目录目录 修订历史记录修订历史记录 2 目录目录 4 1 引言引言 12 1 1 编写目的 12 1 2 背景 12 1 3 参考资料 12 1 4 术语定义 12 2 SAAS 设计设计 12 2 1 多租户模式 12 2 1 1数据隔离 12 2 1 2实现多租户的三种模式 12 2 1 3数据过滤 13 2 1 4总结 13 2 2 定制化 个性化 13 2 3 门户 流程 智库 社区 13 2 4 METADATADB 14 2 5 系统用户角色 14 2 5 1租户拥有者 14 2 5 2租户管理员 14 2 5 3租户成员 14 2 6 客户用户角色 15 2 6 1系统管理员 内部 15 2 6 2高管 内部 15 2 6 3客户经理 内部 15 2 6 4销售主管 内部 15 2 6 5销售人员 内部 15 2 6 6合作伙伴 外部 15 2 6 7供应商 外部 15 2 6 8客户 外部 16 2 7 身份验证与授权 16 2 7 1授权模式 16 2 8 可扩展性 16 2 8 1基础设施可扩展性 16 2 8 2应用架构可扩展性 16 部分内容来源于网络 有侵权请联系删除 2 9 数据权限 17 2 10 参数字典 17 2 11 日志记录 17 2 11 1业务日志 18 2 12 个性化 19 2 12 1界面个性化 19 2 12 2数据个性化 19 2 12 3功能个性化 19 3 数据模型数据模型 20 3 1 用户信息 USERINFO 20 3 2 用户扩展信息 USEREXT 21 3 3 用户状态信息 USERSTATE 21 3 4 用户自动登录信息 USERAUTOLOGIN 22 3 5 用户操作日志 USEROPLOG 22 3 6 组织架构 USERGROUP 23 3 7 用户组成员 USERGROUPMEMBER 23 3 8 租户订单信息 TENANTORDER 24 3 9 租户信息 TENANT 25 3 10 租户配置信息 TENANTCONFIG 25 3 11 租户成员信息 TENANTMEMBER 26 3 12 租户状态信息 TENANTSTATE 26 3 13 应用商店 APPSTORE 27 3 14 应用订单信息 APPORDER 27 3 15 参数字典类型 DICTPARAMTYPE 28 3 16 参数字典 DICTPARAM 28 3 17 租户参数字典 TENANTDICTPARAM 29 3 18 菜单 MENU 29 3 19 角色 ROLE 30 3 20 用户角色 USERROLE 31 3 21 用户组角色 USERGROUPROLE 31 3 22 角色功能权限 ROLEFUNCPERMISSION 31 3 23 激活码 ACTIVATIONCODE 31 3 24 业务角色 BIZROLE 32 3 25 业务角色成员 BIZROLEMEMBER 32 3 26 业务角色数据权限 BIZROLEDATAPERMISSION 33 3 27 业务角色字段权限 BIZROLEFIELDPERMISSION 33 4 系统辅助数据模型系统辅助数据模型 33 4 1 快速查询视图 QUICKVIEW 33 4 1 1简单查询条件 QuickviewFilter 34 4 1 2高级动态查询条件 QuickviewAdvFilter 34 部分内容来源于网络 有侵权请联系删除 4 1 3表格呈现 QuickviewGrid 35 4 1 4最终效果 35 4 2 附件 ATTACHMENT 36 4 3 标签 TAG 36 4 4 标签关联数据表 TAGASSOC 37 4 5 用户评论 USERCOMMENT 37 4 6 用户收藏 USERFAVOURITE 37 4 7 用户 PORTAL小组件表 USERPORTLET 38 5 消息中心数据模型消息中心数据模型 38 5 1 用户消息订阅 USERMESSAGESUB 38 5 2 用户一般消息 USERMESSAGE 38 5 3 用户推送消息 USERPUSHMESSAGE 39 5 4 短信发送日志 SMSOUT 39 5 5 短信接收日志 SMSIN 40 5 6 通知公告 AFFICHE 40 5 7 通知公告统计 AFFICHESTAT 40 5 8 用户反馈 FEEDBACK 41 5 9 用户事件 USEREVENT 41 6 个人事务数据模型个人事务数据模型 42 6 1 记事本 NOTE 42 6 2 代办事项 TODO 42 6 3 个人网盘 SHAREFILE 42 6 4 联系人 CONTACTS 43 6 5 联系人分组 CONTACTSGROUP 43 6 6 联系人分组成员 CONTACTSGROUPMEMBER 43 7 运营中心数据模型运营中心数据模型 43 7 1 报表分类 REPORTCATALOG 44 7 2 报表模版 44 7 3 报表实例 REPORT 44 7 4 报表订阅 REPORTSUBSCRIBE 44 8 FRAMEWORK 设计设计 44 8 1 分布式 44 8 1 1分布式系统容错 45 8 2 分布式 SESSION SNA 45 8 2 1Sticky Session Non sticky Session和Replicated Sessions 45 8 2 2基于 ZooKeeper 集群的分布式 Session 方案 46 8 2 3基于Cookie的分布式SessionId 46 8 2 4问题 47 部分内容来源于网络 有侵权请联系删除 8 3 用户 部门 组织 角色与权限 47 8 4 动态属性与用户自定义属性 47 8 5 电子表单 48 8 5 1技术方案 48 8 6 DYNAMICQUERYOBJECT 49 8 7 FUNCINCEPTOR 49 8 8 内容过滤 49 8 9 SOA 49 8 10 电子邮件服务 50 8 11 缓存服务 50 8 11 1缓存分类 50 8 12 消息服务 51 8 12 1短信服务 51 8 13 任务服务 51 8 14 模板服务 51 8 15 附件服务 51 8 16 文档服务 51 8 16 1功能点 51 8 17 图像服务 52 8 18 QUICKVIEW 组件 52 8 18 1首字母或拼音过滤 52 8 19 自定义列呈现 组件 52 8 20 TAGS 组件 53 8 21 PORTAL 组件 53 8 21 1PortletMeta 53 8 21 2Portlet函数列表 54 8 21 3Portlet事件列表 54 8 21 4内置Portlet 54 8 22 数据清理服务 55 8 23 系统帮助 55 8 23 1功能点 55 8 24 系统自动升级 55 9 运维运维 实施实施 56 9 1 系统版本定义与升级 56 9 1 1代码中版本号变更流程 56 10 应用场景及解决方案应用场景及解决方案 56 10 1 用户会话超时 56 10 2 用户账号激活 57 10 3 租户开通 57 10 4 租户到期 57 部分内容来源于网络 有侵权请联系删除 10 5 租户续费 58 10 6 租户升级 58 10 7 租户注销 58 10 8 用户登录 58 10 8 1非租户 58 10 9 租户成员注销 58 10 10 用户信息获取 59 10 10 1租户管理员 59 10 10 2租户成员 60 10 11 邀请用户 60 10 11 1加入邀请 邮件 60 10 11 2加入邀请 站内通知 61 10 12 切换工作空间 61 10 13 数据授权 61 10 14 业务关注与消息通知 61 10 14 1数据授权与分页查询 62 11 平台管理系统平台管理系统 63 11 1 参数字典 暂不实现 63 11 2 系统配置 63 11 3 在线用户管理 暂不实现 63 11 3 1强制用户下线 64 11 4 APPSTORE管理 暂不实现 64 11 5 租户管理 64 11 6 订单管理 65 11 7 用户管理 65 11 8 数据备份 恢复 65 11 9 数据迁移 66 11 10 数据清理 66 12 平台运营系统平台运营系统 66 12 1 客服 66 12 2 大数据 66 12 2 1租户行为分析 66 12 2 2用户行为分析 67 13 基础支撑系统基础支撑系统 67 13 1 用户系统 67 13 1 1用户注册 67 13 1 2用户登录 68 13 1 3用户档案 68 13 1 4忘记密码 68 部分内容来源于网络 有侵权请联系删除 13 1 5用户登出 69 13 1 6自动登录 69 13 1 7账号迁移 69 13 1 8邀请用户 69 13 1 9受邀加入 70 13 1 10共享APP 暂未实现 70 13 1 11第三方接入 70 13 2 DASHBOARD 70 13 3 消息中心系统 70 13 3 1消息通知 71 13 3 2通告中心 71 13 3 3新闻中心 72 13 3 4短信中心 暂不实现 72 13 4 租户系统 72 13 4 1空间管理 72 13 4 2组织架构 75 13 4 3成员管理 76 13 4 4角色权限 78 13 4 5参数字典管理 78 13 4 6数据备份 恢复 79 13 4 7操作日志 79 13 4 8模板管理 79 13 4 9个性化管理 79 13 5 APPSTORE系统 79 13 5 1租用APP 79 13 5 2已购APP 79 14 个人事务子系统个人事务子系统 79 14 1 我的消息 79 14 2 我的待办 80 14 3 站内信 80 14 3 1功能点 80 14 4 记录本 80 14 4 1功能点 80 14 5 TODO LIST 81 14 6 工作计划 81 14 7 日报周报 81 14 7 1功能点 81 14 8 我的网盘 81 14 9 我的通讯录 82 14 9 1功能点 82 部分内容来源于网络 有侵权请联系删除 15 团队协作子系统团队协作子系统 83 15 1 项目管理 83 15 2 任务管理 83 15 3 主题讨论 83 15 4 文档管理 83 15 5 知识库 83 16 CRM 子系统子系统 83 17 企业门户网站子系统企业门户网站子系统 CMS 83 18 OA 办公自动化办公自动化 83 18 1 审批管理 工作流 83 19 财务管理子系统财务管理子系统 84 19 1 应收款管理 84 19 2 应付款管理 84 19 3 费用预算 84 19 4 报销管理 84 19 5 用款管理 84 20 运营中心子系统运营中心子系统 84 20 1 综合报表子系统 85 21 客户自助服务平台 客户自助服务平台 SELFSERVICE 85 21 1 咨询投诉 85 21 2 询价 85 22 附注附注 86 22 1 参数字典表清单 86 22 1 1通用 86 22 1 2用户表 86 22 1 3角色表 87 22 1 4租户表 87 22 1 5站内信 87 22 1 6TODO 87 22 1 7日程计划 88 22 1 8客户信息 88 22 1 9项目 88 22 1 10任务 88 22 1 11公告 89 部分内容来源于网络 有侵权请联系删除 1 1 引言引言 1 11 1 编写目的编写目的 详细设计的主要任务是对概要设计方案做完善和细化 说明书编制的目的是说明一个软件系统各个层 次中的每个程序 每个模块或子程序 和数据库系统的设计考虑 为程序员编码提供依据 本文档在概要设计的基础上 进一步完整详尽的描述了系统实现的技术细节 及根据业务需求制定的 系统所需要实现的业务功能 功能模块的详细定义 1 21 2 背景背景 1 31 3 参考资料参考资料 1 41 4 术语定义术语定义 缩写缩写英英中中 2 2 SaaSSaaS 设计设计 2 12 1 多租户模式多租户模式 2 1 1数据隔离 将每个承租者的数据隔离到不同的数据库 共享数据库 Multi Schema 将每个承租者的数据隔离到独立的表和模式 共享数据库 Share Schema 在所有承租者之间共享一组相同的表和模式 2 1 2实现多租户的三种模式 无共享 完全独立 每个租户独立使用一套应用程序和一个数据库 应用与数据库均不包含租户 信息 通过访问入口路由到指定租户的路径上 优点 无需修改原有应用程序跟数据库 租户间不会相互影响 可对个别租户做自定义 缺点 部署跟运维相对繁琐 物理设施资源开销最大 无法对多租户数据进行查询归并 存在数据孤岛 共享应用 多数据源 使用同一套应用程序 数据库访问时根据租户信息路由到指定数据库或 Schema 上 优点 兼顾了开发和性能 部分内容来源于网络 有侵权请联系删除 缺点 无法对多租户数据进行查询归并 存在数据孤岛 共享应用 单一数据源 使用同一套应用程序 使用同一个数据库 数据模型中定义了租户信息 通过过滤条件过滤租户数据 优点 性能最优 部署简便 缺点 对系统架构和开发工程师要求较高 否则可能存在数据安全性问题 运维复杂 当数据发生异常需要恢复时 无法简单依赖数据库的恢复机制 并将影响到 多个租户的数据 2 1 3数据过滤 在共享同一数据源的模式下 需要对每个数据查询增加租户信息的过滤条件 在单 app 环境下 一个 用户只对应一个租户 通过登录用户信息即可获得租户信息 比较简单 但是在平台模式下 一个用户可 以租用多个 app 用户与租户是一对多的情况 解决方案 用户在登录一个 app 时 app 通过 appKey 去平台获取该用户的信息 并在本地 session 中 保存用户登录信息 平台可以根据 appKey 与用户 ID 获得唯一的 tenant 即 app 本地 session 中只需保存 用户对象与 tenant 对象一对一的关系 只有用户在登录平台系统时才有一对多 tenant 的情况 2 1 4总结 实际使用中可能综合运用 3 种模式 即如果客户较为重要 愿意为安全性 性能等额外付费 可部署 为独立模式 常规情况下则使用共享数据库模式 但根据性能或部署需要 可能根据用户数切分为多个 domain 每个 domain 中的用户共享一个数据库 这样如果某个 domain 失效 不会影响其他用户的使用 但基本原则是所有数据表均按 SaaS 模式设计 以便实现不同模式下的切换 2 22 2 定制化 个性化定制化 个性化 定制化指的是同一 SaaS 服务可以为不同用户在相同基础功能的基础上提供一定程度的功能定制或强化 在不改动或尽量小改动服务的基础上实现不同用户的差异化功能性需求 如 数据模型的定制化 业务流 程的定制化 个性化指的是为客户提供的 满足用户企业或个人个性需要的非功能性需求 如国际化 主题 收藏 夹 菜单结构调整 Logo 或程序名调整 Dashboard 等 2 32 3 门户 流程 智库 社区门户 流程 智库 社区 注 所有方面 不仅是为了解决企业内部问题 更可以推向上下游 如企业门户网站就是对外的 通过注 所有方面 不仅是为了解决企业内部问题 更可以推向上下游 如企业门户网站就是对外的 通过 BPMBPM 可集成上下游的业务系统 实现供应链的业务流转并最终实现可集成上下游的业务系统 实现供应链的业务流转并最终实现 E2EE2E 智库可以形成企业最佳实践和解决方案 智库可以形成企业最佳实践和解决方案 可以在行业中共享和推广 社区更可以通过人与人之间的关系 加强企业间沟通 可以在行业中共享和推广 社区更可以通过人与人之间的关系 加强企业间沟通 注注 2 42 4 个类别 都是强调信息的汇聚 共享 传播 通过个类别 都是强调信息的汇聚 共享 传播 通过 SaaSSaaS 模式可以实现这些方面的最大化 这是传统模式可以实现这些方面的最大化 这是传统 部分内容来源于网络 有侵权请联系删除 单一企业内部信息化无法实现的 单一企业内部信息化无法实现的 通过门户来集成分散的功能 信息 提高用户对关键信息的关注度 提高用户对信息的获取和处理效 率 通过流程来组装分散的业务 实现上下游业务的 E2E 一体化 提高业务协作能力 提高业务间信息共 享 并最终提高企业整体业务的处理效率 注 流程可能在某些环节的处理效率会比以前降低 但其目 的是优化整体效率 通过智库来积累知识 沉淀企业智慧 知识的有效积累可推动企业业务流程重组和优化 加强企业文 化建设 提高员工凝聚力 社区是强调企业人与人之间的沟通 有别于上面三项都是以企业运营为目的的 这个待定 2 42 4 MetadataDBMetadataDB 元数据数据库 定义了多租户相关信息 用于租户信息管理 作为基础的公共服务独立于业务系统数 据库 2 52 5 系统用户角色系统用户角色 2 5 1租户拥有者 租用 app 的用户 作为 app 的拥有者 其拥有 app 的所有功能模块使用权限 同时作为拥有者 可以 对 app 进行续费 升级 停用等操作 此外作为 app 的第一个默认用户 也是默认的租户管理员 租户开通时默认创建 具有租户 系统 管理 模块的功能权限 可以在租用范围内创建角色 邀请其他用户加入 分配权限 2 5 2租户管理员 租户拥有者出于管理角度考虑 如租户拥有者是老板 但是管理员是 IT 管理员 可以将租户中的任 意用户提升为系统管理员 由其作为租户管理员协助或负责租户内相应的管理工作 如用户管理 角色管 理 功能权限分配 邀请用户加入等 租户管理员在权限上与租户拥有者一致 但租户拥有者作为最高级别 可随时将租户管理员降级成普 通用户 而反之则不行 2 5 3租户成员 租户开通后 默认只有拥有者一个成员 此时拥有者可通过邀请方式请求其他用户加入到该租户中共 同使用租用的 app 如 老板租用了 CRM 系统 邀请公司内部员工加入到该系统中 员工即可使用 CRM 系统 的功能 并在租户范围内共享数据 用户在加入一个租户后 需要租户管理员为其开通相应功能模块的使用权限 通过设置角色 否则 只能共享 个人事务 中公开部分的数据 部分内容来源于网络 有侵权请联系删除 2 62 6 客户用户角色客户用户角色 2 6 1系统管理员 内部 管理系统用户 角色与权限 保证系统正常运行 2 6 2高管 内部 审查客户贡献数据 客户构成数据 客户服务构成数据和客户流失数据 2 6 3客户经理 内部 维护负责的客户信息 接受客户服务请求 在系统中创建客户服务 处理分派给自己的客户服务 对处理的服务进行反馈 创 建销售机会 对特定销售机会制定客户开发计划 执行客户开发计划 对负责的流失客户采取 暂缓流失 或 确定流失 的措施 2 6 4销售主管 内部 对客户服务进行分配 创建销售机会 对销售机会进行指派 对特定销售机会制定客户开发计划 分析客户贡献 客户构成 客户服务构成和客户流失数据 定期提交客户管理报告 2 6 5销售人员 内部 接受销售任务 负责与客户接触 实施销售任务 跟踪客户消费 2 6 6合作伙伴 外部 部分数据交互 并提供合作伙伴关心的数据 可由合作伙伴自行访问 SelfService 2 6 7供应商 外部 部分数据交互 并提供供应商关心的数据 可由供应商自行访问 SelfService 2 6 8客户 外部 提供客户关心的数据 可由客户自行访问查询 SelfService 部分内容来源于网络 有侵权请联系删除 2 72 7 身份验证与授权身份验证与授权 身份验证和授权是现实应用程序的安全性概念中主要的两个 身份验证允许一个应用程序在连接时验证一个人 或一个应用程序 智能卡等 是否与它声明的 一样 授权定义一个用户在一个系统上的权利与权限 用户身份验证通过之后 授权会决定该用户在系 统上有权做什么 因此 授权应该发生在身份验证之后 身份验证和授权在 SaaS 应用程序中很复杂 在一个安全性 SaaS 解决方案中 底层的身份验证和授 权基础设施有两种设计方法 集中式或联邦式 2 7 1授权模式 黑盒模式 即简化的权限模型 不开放授权功能给用户 角色和权限由系统内置 用户在加入 App 时 自动绑定角色 对于一个 App 来说通常有 创建人 管理员和普通成员 3 个角色 白盒模式 即允许用户授权 App 创建人可在自行创建用户组和角色 并对每个功能模块进行细分授权 该模式可实现更精细的权限控制 类似传统的企业应用 2 82 8 可扩展性可扩展性 2 8 1基础设施可扩展性 计算资源快速供给 应用快速部署 资源按需分配 自动化管理 2 8 2应用架构可扩展性 应用服务器水平扩展 数据库水平扩展 MySQL Sharding 异步消息队列 缓存机制 负载均衡 流程可定制 功能可配置 2 92 9 数据权限数据权限 对于前台数据查询 通过定义数据级权限实现动态表格内容输出 不同角色的用户将看到不同列的表 格及经过过滤的数据内容 按角色定义哪些数据项可以呈现 并能调整列呈现的顺序 按角色定义过滤条件 实现基础数据的过滤 部分内容来源于网络 有侵权请联系删除 2 102 10 参数字典参数字典 参数字典分 参数类型表参数类型表 和 参数字典表参数字典表 参数类型表参数类型表定义不同类型的业务参数 如用户类型 公告类型等 每个类型又可分为 1 不可修改 2 可增加 3 可修改 4 可删除 4 种 如公告类型 可被定义为 可增加 类型的 即公告类型可 以增加 但不能被修改或删除 参数类型表参数类型表另外用状态字段定义 1 正常 2 屏蔽 9 系统 对于 某些业务需要 不需要用到的参数 可设置成屏蔽 即在业务系统中将无法使用该参数 对于状态为系统 的 则不能进行此项操作 参数字典表参数字典表为明细表 对参数类型定义业务参数 如公告类型可分为 1 公告 2 新闻 3 通 知 4 紧急通知等 由于公告类型为可增加类型 故可在此基础上进行增加 但一旦使用过的公告 则 不能进行修改或删除了 对某个业务参数细项 又有 3 种状态 1 正常 2 屏蔽 9 系统 由于业 务需要可暂时屏蔽某些业务参数 但对于状态为系统的则不能进行此项操作 2 112 11 日志记录日志记录 日志按照类型分 操作日志 业务日志 系统日志 不同类型的日志有其相应的处理逻辑及具体实现 以下分别说明 操作日志操作日志 记录操作员登录后执行的相关操作 目前只对更新数据库的操作记日志 查询不记录 业务日志业务日志 记录业务处理信息 如转账时金额的变动数额等 系统日志系统日志 记录系统日常运行时的行为日志 目前采用通用的日志框架 以手工编码的形式记录 操作日志同具体的业务应该是相互分离的 不在同一个事务中 及无论业务操作是否成功 都将记录 用户操作 而业务日志记录业务的详细信息 应作为业务的一部分 与业务存在同一个事务中 因此操作 日志一般在控制层编写 而业务日志一般在业务层编写 注 可通过注解注 可通过注解 拦截器模式提供非入侵的操作日志记录 而业务日志一般只能编码实现拦截器模式提供非入侵的操作日志记录 而业务日志一般只能编码实现 操作日志模型 属性属性名称名称类型类型备注备注 busiType 业务类型 int 0 未指定 1 保存 2 更新 3 删除 4 查看 5 查询 6 审核 moduleCode 模块编号 String 对所有功能模块 都有唯一对 应的编号 如 系统配置 对 应 SYS 001 opId 操作员 ID Long opName 操作员名称 String 冗余数据 这样就不需要关联 操作员表了 opIp 执行操作的 IP String opDatetime 操作时间 Date 数据库默认 content 操作内容 String 具体操作内容描述 status 操作状态 int 0 失败 1 成功 部分内容来源于网络 有侵权请联系删除 2 11 1 业务日志 业务日志需要记录详细的业务数据变化 无法使用 Annotation 在方法级进行拦截 需要硬编码实现 考虑到一定的通用性 我们采用基于事件 EventEvent 的日志模式 即在日志模块中通过订阅操作事件 OpEventOpEvent 获得业务模块发布的业务事件 再通过模板消息将业务参数格式化成操作详情 需要记录业务操作日志的 在业务执行完后通过 EventBus 发布继承于 BaseOpEventBaseOpEvent 的事件对象 操作 日志模块统一订阅该事件并统一转换存储 发布事件代码示例 发布事件代码示例 说明 业务操作的名称将通过国际化转换成对应用户语言 国际化 KEY 命名规则 模块编号模块编号 func func 功能编号功能编号 日志详情基于动态参数格式化 因此需要将必要的属性作为事件的动态参数传入 国际化 KEY 命名规 则 模块编号模块编号 func func 功能编号功能编号 log log 由于某些日志详情需要生成 HTML 的超链 依赖 contextPath 因 此约定 contextPath 将作为默认 0 位传参传入 业务参数在参数数组中的位置从 1 开始 如下面事件中 commentId 的位置为 1 2 122 12 个性化个性化 2 12 1 界面个性化 用户可在一定程度上对界面做定制化 如使用个性化主题 个性化布局 可自行调整菜单结构等 2 12 1 1系统菜单可配置性 菜单对不同的租户来说 可能有不完全一样的名字 例如客户管理 在医院使用时 就得改成病人管 理 客户服务人员就得改成医生 客户服务记录就是就诊记录等 另外菜单的层次结构和分布 不同的租 户可能也会有不同的要求 在设计上需要考虑以下几个问题 一个租户一套菜单 部分内容来源于网络 有侵权请联系删除 一个菜单可以关联一个子功能 组织成树型结构 构成上下级菜单结构 同级菜单之间还存在显示顺序的问题 2 12 1 2页面元素可配置性 各功能界面上的内容也是供用户和系统交互的界面元素 不同的租户可能有各种不同的需求 由于租 户可以自定义扩展数据 这些数据是需要在页面上展示的 因此无论对页面元素的个数 位置 顺序 还 是元素的含义 租户都会有一些个性化的需求 同时对于在设计时设定的界面元素 一般情况下是不允许 删除的 但有时候还是允许租户将一些无关紧要的字段隐藏 2 12 2 数据个性化 在实际应用中 不同租户之间需求的差异导致系统需要针对不同租户保存许多扩展性数据 在传统应 用中 可以通过定制实例 增加客户的扩展数据 来满足其个性化要求 在多租户 SaaS 应用中 所有租户 都使用同一个数据架构 常见的解决办法就是实现扩展数据的可配置 名称值对的方式将扩展数据的保存和原数据表分离 另外用一个统一的扩展数据表来保存 扩展数据 表将数据表的横向扩展列转换为纵向的数据集 将每一条原始数据记录的一个扩展字段 都保存成一条扩 展数据行 将数据表中的数据记录与配置元数据表中的配置记录关联 构成扩展数据记录 可以提供无限 数量的自定义扩展字段 但是其增加数据操作的复杂性 查询时也要多次访问数据库才能得到完整的业务 数据 这些都会影响数据访问性能 此外可结合使用 NoSQL 通过 SchemaFree 模式提供高扩展性和个性化 2 12 2 1参数字典 不同的用户在对参数字典的使用上也会存在差异 如客户等级 有的喜欢用 1 2 3 表示 有的喜欢 用 A B C 表示 这就需要参数字典也需要能够支持多租户 并可定制 2 12 3 功能个性化 对于 SaaS 应用 面对为数众多的租户 大部分租户可能只会使用到应用中的部分功能 因此系统需要 支持租户有选择的使用自己需要的功能 满足功能可配置要求 2 12 3 1原子功能划分 要实现功能可配置 首先需要将整个系统的功能进行分解 整个应用需要分解成最基本 相对独立 互不重叠的原子功能 所有原子功能叠加起来 就是整个应用所提供的全部功能 进行原子功能划分 首先就是功能分解 即将整个系统的功能分解成最基本的相对独立的原子功能 应遵 循以下几个原则 每个功能都是有价值的 每个功能都是不可再细分 功能间互不重叠 功能之间不循环依赖 部分内容来源于网络 有侵权请联系删除 整个系统功能是完整的 将功能分解完毕后 由于不是所有的原子功能都是可以单独使用的 有些功能是需要依赖其他功能才 能使用 功能之间是存在一定的依赖关系 因此功能分解完毕后 还需要对功能进行定义 描述相关依赖 关系 2 12 3 2功能包设计 当系统功能被划分为许多原子功能后 直接配置原子功能给每个租户是比较复杂的 需要根据用户类 型和使用的场景 对原子功能进行打包 然后为每个用户配置其合适的功能包 功能包的设计要遵循高内 聚 低耦合的原则 尽量将相关的和相互依赖的原子功能设计在一个功能包中 同时应该减少功能包和功 能包之间的依赖 使得各个功能包尽可能独立的进行操作使用 通过功能包的设计 虽然可以将系统功能组合成几个相对比较独立的部分 但是这些功能包仍然不可 以完全独立使用 也就不能够单独销售 为了让用户购买了系统以后可以充分使用其同能 需要按照不同 的商业意图构造合适用户的销售包 例如 按照客户使用功能的多少 可以把系统划分为最小版 标准版 完整版 2 12 3 3功能使用校验 在经过对系统进行原子功能划分和功能包的设计后 系统的不同租户可以按照不同版本使用了 系统 需对原子功能进行校验 确定租户在系统中可以使用和操作哪些原子功能 3 3 数据模型数据模型 3 13 1 用户信息 用户信息 UserInfoUserInfo 用户信息表中只保存比较固定的数据 便于快速查询和缓存 其他经常要变的数据放到附属表中 属性名属性名含义含义数据类型数据类型备注备注 idid 序号 主键 Integer 由数据库自动生成 loginIdloginId 登录 ID String 登录名 passwordpassword 密码 String 密码 userTypeuserType 用户类型 1001 int 1 内部用户 2 外部用户 客户 供 应商 合作伙伴等 userNameuserName 用户名称 String 用户姓名 nickNamenickName 昵称 String gendergender 性别 0002 int 0 未知 1 男 2 女 emailemail 电子邮件 String mobilemobile 手机号 String mobileValidmobileValid 手机号是否已验证 BOOLEAN realNameValidrealNameValid 是否实名认证 BOOLEAN 即 userName jobjob 职位 VARCHAR 50 statusstatus 状态 1002 INT 0 未激活 1 正常 部分内容来源于网络 有侵权请联系删除 2 注销 可恢复 3 删除 仅超级管理员 恢复 4 锁定 workStatusworkStatus 工作状态 INT 由用户手工切换 0 离线 1 在线 2 休息 balancebalance 帐户余额 BIGDECIMAL 10 2 totalBalancetotalBalance 累计充值金额 BIGDECIMAL 10 2 localelocale 语言 VARCHAR 50 支持用户自定义 timezonetimezone 时区 int 支持用户自定义 themetheme 主题 VARCHAR 50 支持用户自定义 headImgUrlheadImgUrl 头像 VARCHAR 200 头像图片路径 createDatetimecreateDatetime 创建时间 DATETIME updateDatetimeupdateDatetime 更新时间 DATETIME 3 23 2 用户扩展信息 用户扩展信息 UserExtUserExt 与用户表一对一 相同的生命周期 属性名属性名含义含义数据类型数据类型备注备注 idid 序号 主键 Integer 等于用户 ID levellevel 级别 int sourcesource 来源 String birthdaybirthday 生日 Date zipCodezipCode 邮编 String addressaddress 地址 String districtdistrict 区 String citycity 城市 String statestate 省份 String countrycountry 国籍 String lnglng 经度 DECIMAL 10 6 latlat 纬度 DECIMAL 10 6 securityQuestionsecurityQuestion 安全问题 String answeranswer 安全答案 String idTypeidType 证件类型 INT 1 身份证 2 护照 idNoidNo 证件号 VARCHAR 50 idPhotoidPhoto 电子证件 正面 VARCHAR 100 idPhotoBackidPhotoBack 电子证件 反面 VARCHAR 100 部分内容来源于网络 有侵权请联系删除 3 33 3 用户状态信息 用户状态信息 UserStateUserState 与用户表一对一 相同的生命周期 属性名属性名含义含义数据类型数据类型备注备注 idid 序号 主键 Integer 即用户 ID currentTenantIdcurrentTenantId 当前租户 ID int 当一个用户绑定了多个租 户时 用户需要选择当前 使用哪个租户 totalLoginTimestotalLoginTimes 总登录次数 int loginRetryTimesloginRetryTimes 登录重试次数 int 默认值 0 连续登录失败超过指定次 数 则帐号禁用指定时间 lastLoginDatetimelastLoginDatetime 上次登录时间 Date lastLoginIplastLoginIp 上次登录 IP String 3 43 4 用户自动登录信息 用户自动登录信息 UserAutoLoginUserAutoLogin 记录用户自动登录的信息 属性名属性名含义含义数据类型数据类型备注备注 ididUUIDIntegerUUID autoLoginIpautoLoginIp 自动登录 IP String 可检测是否为授权 IP loginIdloginId 登录 ID String encryptedPasswordencryptedPassword 加密的密码 String 可检测密码是否一致 createDatetimecreateDatetime 创建时间 Timestamp 时间戳 expiredTimeexpiredTime 过期时间 long 为 0 或负数代表永不过期 使用 cookie 时用 cookie 的过期机制即可 3 53 5 用户操作日志用户操作日志 UserOpLog UserOpLog 记录用户操作业务模块的操作日志 包括创建 修改 删除等 通过模块编号可以进行过滤 后台可 以根据需要拆分多张表 如通过 moduleCode 拆表 而代码中保持一致 属性名属性名含义含义数据类型数据类型备注备注 idid 序号 主键 Integer 由数据库自动生成 tenantIdtenantId 租户 ID int 个人文档填 0 moduleCodemoduleCode 模块编号 VARCHAR 50 funcCodefuncCode 操作项 VARCHAR 10 create update lock unlock delete download send recordIdrecordId 数据 ID INT 关联业务数据的 ID paramsparams 业务数据参数 VARCHAR 2000 必要时进行数据处理 采 用 JSON 格式进行保存 opByopBy 操作人 int 部分内容来源于网络 有侵权请联系删除 opUsernameopUsername 操作用户的名称 VARCHAR 50 冗余 opDatetimeopDatetime 操作时间 datetime opContentopContent 操作详情 VARCHAR 2000 opCommentopComment 操作注释 VARCHAR 2000 用户填写的对于该次操作 的注释 作为操作内容的 补充 3 63 6 用户余额信息用户余额信息 UserBalance UserBalance 属性名属性名含义含义数据类型数据类型备注备注 idid 序号 主键 Long UUID 直接作为订单号 funcCodefuncCode 操作编号 VARCHAR 20 charge 充值 settle 提现 income 收入 amountamount 金额 DECIMAL 12 2 statusstatus 状态 INT 0 尚未成功 1 操作成功 createBycreateBy 操作人 INT createDatetimecreateDatetime 操作时间 DATETIME payChannelpayChannel 付款通道 VARCHAR 50 OFFLINE 线下 BALANCE 余额 WECHATPAY 微信 ALIPAY 支付宝 payDatetimepayDatetime 付款时间 DATETIME tradeNotradeNo 交易号 VARCHAR 50 第三方支付返回 activateDatetimeactivateDatetime 激活时间 DATETIME remarkremark 备注 VARCHAR 2000 说明 对于收入来说 目前使用工单逻辑 有个 30 天的质保期 即新增时状态是 0 由后台定时任务判断 createDatetime 是否超过 30 天 超过的则认为收入成功 3 73 7 组织架构 组织架构 UserGroupUserGroup 通过组的方式将相关用户关联起来 一个组的用户相互知晓 组可以是系统创建的 也可以由用户自 行创建 属性名属性名含义含义数据类型数据类型备注备注 idid 序号 主键 Integer 由数据库自动生成 tenantIdtenantId 租户 ID INT parentIdparentId 父组织 ID

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论