基于PaaS平台多租户实践
2016-02-24 22:55
323 查看
本实践的系统平台是以业务流程为核心的办公流程能力平台,服务于全省,为全省业务流程重组提供信息化解决方案和管理支撑服务。
系统用户范围为全省,以省公司本部及13地市分公司为公司组织单元。多数流程业务在公司内部运行,部分流程业务是在全省垂直管理范围内运行。
本实践是基于OpenText Cordys BOP 4.3产品实现的。
组织机构服务,主要是自行开发来实现,并与租户对应。功能比较简单,而麻烦体现在业务实施上,例如:哈尔滨市分公司有两个,一个是以省公司本部部门方式参与垂直管理;另一个是哈尔滨市分公司租户,是以公司方式存在的。
在组织机构信息中:
地市分公司与省公司平级,在系统中对应的各自租户;
展开省公司组织机构,发现在省公司内还有与部门并列的地市分公司,此部分地市分公司只是参与省公司垂直管理的部分人员。
上图举例中,此系统用户(李**)身跨两个租户,分别在默认租户“哈尔滨市分公司”,以及参与垂直管理的省公司租户中。
租户账号列表为省公司和哈尔滨市分公司;
在每个租户中,都拥有各自的角色,例如在省公司租户中,为部门成员和流程审批_接口人角色。
在系统平台上,多租户是以“Organization”来体现。除了系统的system租户外,又建了16个租户,包括省公司本部、13个地市、维护中心和集成公司。
其中,“/home”是系统默认主目录,“/HLJ”是黑龙江租户,“/
流程服务可以单独提供工作流服务,其所对应的数据库是独立的MySQL数据库,与业务数据库无关。
在数据库设计中,租户隔离是通过系统平台实现逻辑隔离,具体技术体现为在数据库表的字段中,有租户DN标识字段:
省公司DN,例如:o=HLJ,cn=cordys,cn=defaultInst,o=hlcuc.com
地市分公司DN,例如:o=HRB,cn=cordys,cn=defaultInst,o=hlcuc.com
业务系统使用Oracle及MongoDB数据库。
登录时,首先使用默认租户,这里一般是指其所属地市公司。
用户跨租户
用户切换租户
上图是地市接口人打开待转地市的传阅任务单,而下面的代码片段是要处理并识别出须要转地市的待阅任务。其中:
“LCSP”是指流程审批业务,此业务有转发布到地市功能;
“ZHDB”是指接口角色综合代表,综合代表是发布传阅任务的接口接收人。
《在IT系统中使用多租户技术提供人员跨部门及虚拟团队的解决方案(草稿)》 肖永威 2014.10
《面向集团客户云计算运营平台的运营开通技术方案及应用架构——之云计算运营平台方案(三)》 肖永威 2013.12
系统用户范围为全省,以省公司本部及13地市分公司为公司组织单元。多数流程业务在公司内部运行,部分流程业务是在全省垂直管理范围内运行。
本实践是基于OpenText Cordys BOP 4.3产品实现的。
1. 平台业务概述
1.1. 组织机构
在此PaaS平台上,提供统一的组织结构服务,注册用户及其租户划分,是通过平台LDap来管理,也就是说,租户划分在平台层面解决。组织机构服务,主要是自行开发来实现,并与租户对应。功能比较简单,而麻烦体现在业务实施上,例如:哈尔滨市分公司有两个,一个是以省公司本部部门方式参与垂直管理;另一个是哈尔滨市分公司租户,是以公司方式存在的。
在组织机构信息中:
地市分公司与省公司平级,在系统中对应的各自租户;
展开省公司组织机构,发现在省公司内还有与部门并列的地市分公司,此部分地市分公司只是参与省公司垂直管理的部分人员。
1.2. 用户管理及其角色管理
在人员信息中,跨租户情况如下:上图举例中,此系统用户(李**)身跨两个租户,分别在默认租户“哈尔滨市分公司”,以及参与垂直管理的省公司租户中。
租户账号列表为省公司和哈尔滨市分公司;
在每个租户中,都拥有各自的角色,例如在省公司租户中,为部门成员和流程审批_接口人角色。
2. 多租户模型
参考Gartner所提出的7种多租户模型,现系统已经支持第六种模型称为“Shared Everything”,即全共享,以及第七种模型称为“Custom Multitenancy”,即定制化的多租户。2.1. 多租户业务模型
按分公司的维度,部署多租户模型。在系统平台上,多租户是以“Organization”来体现。除了系统的system租户外,又建了16个租户,包括省公司本部、13个地市、维护中心和集成公司。
2.2. 软件服务部署
2.2.1. Service Groups,Service Containers部署
Service Groups,Service Containers部署在System租户下,方便其他租户共享使用。2.2.2. Web界面部署
http://IP地址/home/HLJ/******/home/index.html
其中,“/home”是系统默认主目录,“/HLJ”是黑龙江租户,“/
******”是自定义公司名称简写,“/home/index.html”是系统主页地址。
2.2.3. 流程服务部署
按独立提供流程服务模式设计,所有流程服务都部署到system租户下,将来,将适当考虑部分流程部署到其自身应用租户下。流程服务可以单独提供工作流服务,其所对应的数据库是独立的MySQL数据库,与业务数据库无关。
2.3. 数据库部署
2.3.1. 租户隔离
参考Gartner所提出的7种多租户模型,现系统已经支持第六种模型称为“Shared Everything”,即全共享,以及第七种模型称为“Custom Multitenancy”,即定制化的多租户。在数据库设计中,租户隔离是通过系统平台实现逻辑隔离,具体技术体现为在数据库表的字段中,有租户DN标识字段:
省公司DN,例如:o=HLJ,cn=cordys,cn=defaultInst,o=hlcuc.com
地市分公司DN,例如:o=HRB,cn=cordys,cn=defaultInst,o=hlcuc.com
2.3.2. 数据库隔离部署
系统平台,包括流程服务,使用MySQL数据库;业务系统使用Oracle及MongoDB数据库。
3. 多租户在系统业务应用中体现
3.1. 跨租户用户
跨租户人员登录处理登录时,首先使用默认租户,这里一般是指其所属地市公司。
/** * 返回当前的组织对象 * @returns {{}} */ getCurrentOrganization: function () { var currentOrganization = {}; $.each($.cordys.utils.formatCustomObject(userDetail['organizaitons']['company']), function (orgIndex, org) { if (org['company_dn'] == currentOrganizationDn) currentOrganization = org; }); return currentOrganization; },
3.2. 跨租户流程衔接
跨租户流程衔接是通过跨租户接口人,也就是参与垂直管理地市接口人接到待办任务后,按业务规则转到本人默认租户下,再启动流程。这里涉及到两个技术点:用户跨租户
用户切换租户
上图是地市接口人打开待转地市的传阅任务单,而下面的代码片段是要处理并识别出须要转地市的待阅任务。其中:
“LCSP”是指流程审批业务,此业务有转发布到地市功能;
“ZHDB”是指接口角色综合代表,综合代表是发布传阅任务的接口接收人。
function DO_TransformToProcess2() { //通过业务编码区分,省公司还是地市的流程 var biz_rsvn_numer = window.bizInfoInstance['BIZ_RVSN_NUMBER']; // 获取用户角色信息 if (biz_rsvn_numer === 'LCSP') { //获取用户的角色 判断网省公司发布 还是 地市分公司 发布 if(vv_V_TEST){ $.cordys.utils.sendCordysAjax({ method: "GetFormByNameAndOrgDn", namespace: "http://unicom.com/workflow", parameters: { formName: '省公司流程审批发布流程_省公司传阅', orgDn: window.localStorage.currentUserTenantdn } }).done(function (response) { response = $.cordys.utils.formatCordysAjaxQueryEntity(response); var roleCode; if (response.length) { roleCode = 'ZHDB'; window.open('workflow_wrapper.htm?formID=' + response[0]['FORMUID'] + '&roleCode=' + roleCode + '&bizRvsnNumber=' + window.bizInfoInstance['BIZ_RVSN_NUMBER'] + '&mongoBoId=' + window.bizInfoInstance['MONGO_BO_ID']); } else { alert('没有查询到指定的流程!') } }); }else{ $.cordys.utils.sendCordysAjax({ method: "GetFormByNameAndOrgDn", namespace: "http://unicom.com/workflow", parameters: { formName: '省公司流程审批发布流程_地市传阅', orgDn: window.localStorage.currentUserTenantdn } }).done(function (response) { response = $.cordys.utils.formatCordysAjaxQueryEntity(response); var roleCode; if (response.length) { if (/rjdb/i.test(window.localStorage.currentUserTenantdn.split(',')[0].split('o=')[1])) { roleCode = 'ZHDB'; } else { roleCode = window.localStorage.currentUserTenantdn.split(',')[0].split('o=')[1].toLocaleUpperCase() + '_DSZHDB'; } window.open('workflow_wrapper.htm?formID=' + response[0]['FORMUID'] + '&roleCode=' + roleCode + '&bizRvsnNumber=' + window.bizInfoInstance['BIZ_RVSN_NUMBER'] + '&mongoBoId=' + window.bizInfoInstance['MONGO_BO_ID']); } else { alert('没有查询到指定的流程!') } }); }
3.3. 跨租户人员待办任务处理
获取待办任务与租户DN无关,按用户帐号获取。3.4. 业务流程开发
在此平台生态环境上,为每个租户建立开发租户、测试租户。其中,流程建模、表单快速开发都是按租户进行管理。3.5. 业务流程部署
租户管理员部署自己租户流程。参考
《基于PaaS平台租户部署及人员跨部门设计方案》 肖永威 2014.12《在IT系统中使用多租户技术提供人员跨部门及虚拟团队的解决方案(草稿)》 肖永威 2014.10
《面向集团客户云计算运营平台的运营开通技术方案及应用架构——之云计算运营平台方案(三)》 肖永威 2013.12
相关文章推荐
- IaaS, PaaS, SaaS 解释
- 在Google使用Borg进行大规模集群的管理 3-4
- 在Google使用Borg进行大规模集群的管理 5-6
- 基于 docker 的个人网站部署
- 看视频学习业务流程模型介绍,学习测试有奖品
- 让纸单飞
- 零代码开发平台迅速抢占管理软件市场
- 使用 Tsuru 和 Docker 构建自己的 PaaS 系统
- 2015企业应用终极预测
- 探讨SaaS在2015会有怎么的改变
- 【中服PaaS】PaaS平台下一步该如何走
- 在PaaS上构建SaaS应用程序应该确定哪些方面
- 天翎myapps快速开发平台扮演企业管理软件主要角色
- 天翎myApps:助力业务系统集成
- 协同管理平台让业务透明化、高效化
- CRM:助力开发新客户,稳定老客户
- 天翎流程软件myApps-2.5.sp9开发版发布
- 谈谈工作流自动化软件的应用
- 主要PaaS平台支持语言整理
- 关于云计算的定义