Java开源Saas开发框架+Activiti流程管理=JSAAS



      Java开源Saas开发框架+Activiti流程管理=JSAAS


<h2>1.SAAS云应用场景</h2>
SAAS云应用近几年来越来越火,这得益于国内云计算的基础设施的发展,如以前我们开发应用所需要的硬件计算资源、平台的操作系统、互联网IP、带宽及域名等,均可以非常有效解决了,企业建设应用或平台,不再需要考虑如何购买这些资源,我们仅需要通过在阿里或腾讯那里购买到这种云服务器即可,这些资源的使用及付费已经做到像交水费及电费那样简单。而现在唯一需要考虑的是在这些云计算资源上如何构建我们需要的企业<strong>应用</strong>。


在传统的应用上,我们开发的每个一个应用均是服务于一家企业或单位,我们可以把它称之为<strong>私有云。在今时今日的互联加的应用模式下,</strong>亦可以服务于某个企业的多个客户或子公司,其业务可以随时分割,如:


<strong>案例一:</strong>


企业开发一个会员系统,可以给其所有的客户使用,每个客户可以独立管理其会员。包括会员积分、消费管理、充值、微信端消息推送管理等。


<strong>案例二:</strong>


省需要开发一个云医疗集中数据采集平台,需要每家医院定期上报数据及对其自身的数据进行统计,同时平台的管理员可以对所有的医院的数据进行汇总及统计。


<strong>案例三:</strong>


企业开发一个协同应用,提供给不同的子公司使用,同时集团公司需要跟子公司之间有数据交互,并且需要有些流程需要在集团公司与子公司之间进行交互使用。


我们把以上的应用场景都可以用SAAS模式来实现,同时对于传统旧的应用,我们可以用单个租户模式来实现即可。这种模式我们称之为<strong>云应用,</strong>如果把这种模式面向公网进行租户注册使用,我们即称之为<strong>公有云,</strong>若并且开放对应的接口服务,我们可以把它称之为<strong>平台服务,即PAAS。</strong>


其实云应用还可适用以下的应用场景:
<ul class="chooseus_list">
  <li>私有云部署应用,全单位或公司共用所有业务</li>
  <li>多个部门登录管理不同的业务</li>
  <li>集团内存在多个分公司,分公司负责类似相同的业务</li>
  <li>多个部门或分公司人员或业务有关联</li>
  <li>每个分公司需要有独立的数据管理</li>
  <li>集团或总公司需要集中管理数据</li>
  <li>按不同子系统管理不同的业务,授权不同子公司或部门</li>
</ul>
<h2>2.SAAS应用的几种存储实现模式</h2>
<h3>方案一、独立数据库</h3>
这是第一种方案,即一个租户一个数据库(Database),这种方案的用户数据隔离级别最高,安全性最好,但成本也高。
<strong>优点:</strong>
为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;
如果出现故障,恢复数据比较简单。
<strong>缺点:</strong>
增大了数据库的安装数量,随之带来维护成本和购置成本的增加。
这种方案与传统的一个客户、一套数据、一套部署类似,差别只在于软件统一部署在运营商那里。如果面对的是银行、医院等需要非常高数据隔离级别的租户,可以选择这种模式,提高租用的定价。如果定价较低,产品走低价路线,这种方案一般对运营商来说是无法承受的。
<h3>方案二、共享数据库,隔离数据架构</h3>
这是第二种方案,即多个或所有租户共享Database,但一个Tenant一个Schema。
<strong>优点:</strong>
为安全性要求较高的租户提供了一定程度的逻辑数据隔离,并不是完全隔离;
每个数据库可以支持更多的租户数量。
<strong>缺点:</strong>
如果出现故障,数据恢复比较困难,因为恢复数据库将牵扯到其他租户的数据;
如果需要跨租户统计数据,存在一定困难。
<h3>方案三、共享数据库,共享数据架构</h3>
这是第三种方案,即租户共享同一个Database、同一个Schema,但在表中通过TenantID区分租户的数据。这是共享程度最高、隔离级别最低的模式。
<strong>优点:</strong>
三种方案比较,第三种方案的维护和购置成本最低,允许每个数据库支持的租户数量最多。
<strong>缺点:</strong>
隔离级别最低,安全性最低,需要在设计开发时加大对安全的开发量;
数据备份和恢复最困难,需要逐表逐条备份和还原。


如果希望以最少的服务器为最多的租户提供服务,并且租户接受以牺牲隔离级别换取降低成本,这种方案最适合。


<strong>JSAAS云应用的JSAAS的模式,默认是支持第三种模式,这种模式对于非公有云的应用是非常合适的,毕竟容易实现数据的简单分离与汇总,但若用户对数据要求性特别高的情况下,可以通过加一个前端的GNC(Global Name Controller)控制模块,根据企业访问的域名从而实现应用及数据存储的分开,从而有效实现第一种与第二种方案。如下图所示:</strong>


<img class="alignnone size-full wp-image-664" src="http://www.redxun.cn/wp-content/uploads/2016/06/saas-deploy.png" alt="saas-deploy" width="539" height="525" />


&nbsp;
<h2>3.红迅JSAAS开发平台简介</h2>
JSAAS企业应用平台是一款带有企业信息化基础管理的Saas开发平台框架,它是基于流行的轻量级框架Spring上构建,以支持中小企业、大型集团企业、政府单位的日常事务管理,平台提供基础的数据交互功能模块、文档处理管理模块、组织架构管理模块、流程管理模块、企业公告、微信交互管理模块等,适合于有IT研发能力的大型企业或向Saas应用运维的IT开发企业。


<img src="http://www.redxun.cn/styles/images/redxun/saas-functions.png" alt="Open Saas Framework" />


平台可以满足以上的开发场景,构建未来以下的应用,以适应企业或机构使用企业的云端应用。未来的企业服务一定是<strong>云+端</strong>的天下,我们在构建云服务的同时,布局端的应用也显得无比关键,它使得我们开发后续的应用更加灵活与方便,如下图所示,我们未来上构建的企业应用均可以基于JSAAS上,并且目前,红迅软件已经构建了KMS,OA应用。未来半年内,我们将构建DRP(会员分销系统),CRM系统,以满足越来越多企业对应用的一体化的需求。


&nbsp;


<img class="alignnone size-full wp-image-701" src="http://www.redxun.cn/wp-content/uploads/2016/07/JSAAS_680.png" alt="JSAAS_680" width="680" height="510" />


因此JSAAS平台上,未来向面向云端使用的应用将会有:
<ul>
  <li>CRM(客户关系管理)</li>
  <li>OA (协同管理)</li>
  <li>ERP(企业应用管理)</li>
  <li>KMS(知识管理)</li>
  <li>HRM(人力资源管理)</li>
  <li>DRP(分销应用管理)</li>
  <li>其他</li>
</ul>
如下:


<img class="alignnone size-full wp-image-702" src="http://www.redxun.cn/wp-content/uploads/2016/07/jsaas-ent.png" alt="jsaas-ent" width="680" height="451" />
<h2>4.组织架构设计</h2>
要实现支持多机构的管理,JSAAS平台的对组织架构的管理提供了相对传统的应用有部分区别,区别如下:
<h3>4.1. 机构(租户)管理</h3>
平台可以同时支持多个机构来使用,因此,主要是SAAS模式启用的情况下,可以支持机构的在线注册或后台动态添加,而每个机构即可以单独管理其下的组织架构,包括其登录的管理账号。


<img class="alignnone size-full wp-image-707" src="http://www.redxun.cn/wp-content/uploads/2016/07/sysInstList.png" alt="sysInstList" width="680" height="160" />
<h3>4.2. 组织维度管理</h3>
每个机构为了方便管理其业务,会把其组织架构按其业务管理的需要,进行组织架构的划分,如从人事的维度出发,其会把人员进行如下划分:


<img class="alignnone size-full wp-image-705" src="http://www.redxun.cn/wp-content/uploads/2016/07/adminDep.png" alt="adminDep" width="228" height="359" />


而从销售的维度,其会按如下划分:


&nbsp;


<img class="alignnone size-full wp-image-706" src="http://www.redxun.cn/wp-content/uploads/2016/07/salesDep.png" alt="salesDep" width="183" height="359" />
<h3>4.3. 用户组管理</h3>
平台把组织里划分为组与人两种实体管理对象,其中用户组是管理用户的集合,挂在用户维度下。如下图所示销售维度下的区域,均是用户组。用户组可以参与平台的授权、任务审批、任务分配等。
<h3>4.4. 用户管理</h3>
平台的使用者是用户,用户可绑定手机、邮箱接收平台提供的消息,如任务催办的消息、会议失效的通知消息。
<h3>4.5.关系管理</h3>
在业务的管理上,我们把用户间,用户组,用户组与用户的关系统称为关系管理,并且提供关系的动态添加及配置,并且提供通过关系类型及关系一方,可以找到对应的用户或组。如在汇报线的关系中,我们经常需要往上找两级,找到其对应的负责人,并且把任务提交给他来处理。
<h2>5.应用扩展</h2>
JSAAS平台允许开发者通过不断叠加应用,以达到不断完善平台的功能,如CRM,OA,ERP,DRP,KMS等,通过在线配置子系统,并且动态添加功能发布至应用即可。平台目前不采用OSGI技术,目标是为了更好兼容及管理平台的表,通过模块的代码往里加,以达到子系统的模块管理。


<img class="alignnone size-full wp-image-710" src="http://www.redxun.cn/wp-content/uploads/2016/07/jsaas-ext.png" alt="jsaas-ext" width="680" height="443" />
<h3>5.1.子系统管理</h3>
对于一些非SAAS应用,我们可以把子系统设置为非SAAS模式,即在使用过程中,其不会分配给SAAS的机构来使用,只会给平台的用户来使用。这样可以避免一些强大的功能或统一的数据管理功能,不开放给租户机构使用。


<img class="alignnone size-full wp-image-712" src="http://www.redxun.cn/wp-content/uploads/2016/07/jsaas-sys.png" alt="jsaas-sys" width="680" height="451" />
<h3>5.2.子系统菜单配置</h3>
平台可以配置多个子系统下的菜单,通过这种菜单的扩展配置,后台的代码开发,就可以比较容易实现功能模块扩展。平台提供代码生成器方式,只需要配置好表结构,生成代码即可。对于开发人员来说,这是一种简单的开发模式,只需要理
解业务,功能开发对于来说,很简单,底层及前端的UI的代码提供了基础的数据操作。再通过在页面组装应用即可。功能即可以开放给租用机构来使用。


<img class="alignnone size-full wp-image-713" src="http://www.redxun.cn/wp-content/uploads/2016/07/jsaas-menu.png" alt="jsaas-menu" width="680" height="371" />
<h3>5.3.2 应用授权管理</h3>
平台允许管理员管理所有的系统菜单及资源,同时可以授权给SAAS的租户管理员进行其角色或用户组的分配,这种逐级分权的菜单授权访问,可以保证平台有效实现业务的的应用授权管理。


&nbsp;


<img class="alignnone size-full wp-image-714" src="http://www.redxun.cn/wp-content/uploads/2016/07/grant.png" alt="grant" width="453" height="605" />
<h2>6.企业的流程应用</h2>
流程应用是企业比较常用的应用要求,比较简单的是类似企业的行政的日常管理流程,如请假、用车申请、会议申请、费用报销申请等。而跟企业生产、销售、采购等也需要涉及到的业务流程,我们可以通过平台提供的流程构建工具来实现,在SAAS模式下,平台可以根据不同的行业提供不同的流程解决方案,企业在租用该平台的时候,通过在线的下载流程资产库中流程解决方案的模板,可以有效实现自身的业务流程,而这一切很简单,不需要过多的开发。


JSAAS根据国际的BPM对业务流程的理解,我们分为三种角色来使用流程业务:
<ul>
  <li>1.流程业务规则设计者,也称为业务人员(懂流程业务)</li>
  <li>2.流程审批视图设计者,也称为表单设计人员(懂数据业务)</li>
  <li>3.流程统筹配置者,也称为流程管理员(懂系统管理业务)</li>
</ul>
我们根据三种角色,提供了三种管理工具,以达到可以有效配置流程业务管理的需要:
<h3>6.1.流程定义设计</h3>
流程业务规则设计--也称为流程定义设计,如下所示:


<img class="alignnone size-full wp-image-326" src="http://www.redxun.cn/wp-content/uploads/2016/06/activiti-modeler.png" alt="activiti-modeler" width="680" height="377" />


流程设计器使用Activiti 官方的Modeler设计器,保证未来升级及支持BPMN2的元素上的功能支持上比较强,对于一些终端的客户来说,虽然显得有点复杂,但后续可以改造,以满足一些水平层次低少少的用户。
它可以支持以下流程特性:
1. 串行审批
2. 并行审批
3. 分支审批
4. 条件并行审批
5. 消息通知审批
6. 多实例子流程
7. 多实例任务(会签),动态加签
8. 外部子流程
9. 流程事件定义
10. 定时信号触发事务定义
11.其他服务节点定义等


而在JSAAS平台中,我们不要求用户使用过多的其他业务审批节点,只需要普通的任务节点描述清楚流程即可。对于一些自动触发的任务节点,也按正常画在流程图上即可。
<h3>6.2.流程表单设计:</h3>
流程审批视图设计--流程表单设计及业务数据交互设计
<img class="alignnone size-full wp-image-402" src="http://www.redxun.cn/wp-content/uploads/2016/06/5.png" alt="5" width="887" height="738" />
表单设置的界面就是用户填个写数据的界面,平台支持表单设计完成后,可以用Json格式存储,也支持持久化至物理表中去,这种方式由用户使用该表单的数据方式来决定。不强制数据一定需要存储于物理表中,实现表单的在线动态配置,动态格式来存储。


<img class="alignnone size-full wp-image-722" src="http://www.redxun.cn/wp-content/uploads/2016/07/form-json.png" alt="form-json" width="385" height="684" />


业务表单的设计支持比较复杂的表单功能的在线配置,支持动态的数据抓取展示,级联数据展示等,由于其有比较丰富的数据展示控件,因此容易实现数据录入的强大、复杂的功能。甚至支持脚本的编写及数据抓取服务。


<img class="alignnone size-full wp-image-727" src="http://www.redxun.cn/wp-content/uploads/2016/07/form-script.png" alt="form-script" width="731" height="548" />


其设计的原理就是表单设计器配置表单生成表单的html静态代码,即控件都增加了Miniui的样式,在解析及渲染的时候,自动展示数据及从服务端获得数据,并且增加对应的响应事件。因此,使用上比较简单,对于简单的表单,则可以由普通的业务人员通过界面拖拉即可完成,对于有比较强的数据交互的,可由懂前端的人员进行配置及编写交互脚本即可。
<h3>6.3.业务流程解决方案组装者</h3>
该操作一般是面向流程业务的实施者,他们根据流程规则设计的流程跳转定义、每个环节的审批者、审批表单、数据展示权限、催办管理等。包括在开发平台上配置并测试模拟运行流程以满足其需要。我们把这种实施称之为流程解决方案实施者,形成的流程解决方案,可导出至流程解决方案库中,供其他租户机构使用,从而达到流程资产共享。
<img class="alignnone size-full wp-image-724" src="http://www.redxun.cn/wp-content/uploads/2016/07/solution.png" alt="solution" width="680" height="427" />
<h3>6.4. 流程审批与现有的组织架构的整合</h3>
JSAAS平台的流程审批简化了与组织架构的松耦合,其只是绑定了用户及用户组,第三方的组织架构接入时,仅需要通过配置实现用户与组及关系的接口即可,简化了其整合的难度。
<h3>流程表单与已存在的业务表单的整合</h3>
尽管JSAAS平台提供强大的Html的表单设计功能,但对于已经存在的业务表单,若想参与流程审批的处理,我们提供流程审批时的流程调用业务的接口功能,也提供业务操作时调用流程引擎的功能接口,并且通过JSAAS提供的平台界面实现关联配置处理。
<h2>7.协同应用</h2>
为了兼容更多的企业客户的应用需求,平台提供了最基本的协同应用管理,如消息通知、公告、知识管理、文档管理、通讯录管理、微信通知管理、用车管理、会议申请管理、考勤管理等,同时支持不断的企业业务应用扩展,而JSAAS平台更多是提供较强的二次开发能力,红迅软件更愿意与我们的合作伙伴共同成长,不断延伸不同行业的应用,未来构建强大的云端应用,成就我们的企业、同时也成就我们。
<h2>在线试用及联系我们</h2>
<a href=#>

更多资讯请联系我们:
<ul>
  <li>QQ: 3102760881</li>
  <li>手机:18819248092</li>
  <li>电话:020-29026351</li>
  <li>邮箱:keitch@redxun.cn</li>
</ul>

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。

Lucence源码分析---5 - 2016-07-25 22:07:11

lucence源码分析—flush 在前几章的分析中经常遇到flush操作,即当索引的相关数据存入内存中的某些数据结构后,再适当的实际就会通过flush函数将这些数据写入文件中,本章就开始分析flush函数,从DocumentsWriter的doflush函数开始分析,下面来看。 DocumentsWriter::doflush private boolean doFlush (DocumentsWriterPerThread flushingDWPT) throws IOException, Abort

代理模式之简单的动态代理 - 2016-07-25 19:07:30

目录 目录 动态代理定义 重点类和接口 代码示例 代码 代码运行截图 Java 动态代理具体有如下四步骤 美中不足 动态代理定义: 所谓Dynamic Proxy是这样一种class:它是在运行时生成的class,在生成它时你必须提供一组interface给它,然后该class就宣称它实现了这些 interface。你当然可以把该class的实例当作这些interface中的任何一个来用。当然,这个Dynamic Proxy其实就是一个Proxy,它不会替你作实质性的工作,在生成它的实例时你必须提供一个h

[干货] Flume综述与实例 - 2016-07-25 19:07:29

Flume 是一个分布式的、可靠的数据收集、集合和移动的组件。基于流式数据模型,非常健壮、支持容错、故障转移等特性。本用实例辅助说明Flume的大部分核心概念。 版本记录: 2016-07-23 初稿 安装FLume Flume的安装非常简单,其核心就是agent。 从官网下载稳定版本: wget http://apache .fayea .com /flume/ 1.6 .0 /apache-flume- 1.6 .0 -bin .tar .gz tar zxvf apache-flume- 1.6 .
本文由EasyDarwin开源团队成员Alex贡献: http://blog.csdn.net/cai6811376/article/details/52006958 EasyDarwin云平台一直在稳步的升级迭代中,近日,EasyDarwin云平台实现了语音对讲的功能。对讲功能的加入,标志着EasyDarwin云平台进一步的完善。 流程设计 客户端使用POST的方式在body中携带协议报文向云平台发送开始对讲命令; 云平台组织协议报文向指定的设备发送; 设备执行开始对讲命令后向云平台返回相应报文; 云平

Spring事务管理(5)-开启事务 - 2016-07-25 18:07:44

在前几篇文章中,我们分析了Spring的AOP实现,AOP的实现原理即JdkDynamicAop或Cglib。目标方法执行的时候,进入invoke方法中先执行Advisors链。Spring的事务开启需要在目标方法执行前进行,因此可以作为一个前置增强添加到Advisors链中。 Spring的声明式事务配置如下: bean id = "transactionManager" class = "org.springframework.orm.hibernate3.HibernateTransactionMa

Linux之vim学习 - 2016-07-25 18:07:26

vim 分三种模式:一般模式、编辑模式、命令模式 1.一般模式 一般模式下可以进行移动光标、删除、粘贴复制等操作 移动光标操作 h或向左箭头:光标左移动一个字符j或向下箭头:光标下移动一个字符k或向上箭头:光标上移动一个字符l或向右箭头:光标右移动一个字符 30 j:光标下移动 30 个字符ctrl+f:屏幕向下移动一页,相当于Page Down (常用)ctrl+b:屏幕向上移动一页,相当于Page Down (常用)ctrl+d:屏幕向下移动半页ctrl+u:屏幕向上移动半页nspace右移动n个字符
1.DispatchAction-分派Action 1.1 为什么需要DispatchAction 如果每个请求都对应一个Action,就会造成action过多,程序显得比较臃肿,所以可以把一类请求写到一个action中处理,即DispatchAction 在没有使用框架之前,当我们通过一个控制器处理多个请求的时候,我们是通过在URL后面跟上参数来区别不同的操作,比如,下述链接: http://localhost:8080/UserManager/main?operateId=adduid=123 htt

[置顶] 逐步深入TCP/IP协议栈 - 2016-07-25 18:07:17

一、关于应用层用户数据的历程,见下图:                                                                             TCP/IP数据包的封装 过程: 应用层将数据通过协议栈逐层向下传递,其下的每层接到来自上层的数据时,根据每层的协议都要在其数据 的前端添加首部信息进行封装。不同的协议层对数据包有不同 的称谓,在传输层叫做数据段,在网络层叫做数据报, 在链路层叫做数据帧。在经过链路层时,数据已经封装成帧并递交给物理层的传输介质上,到

Linux命令应用大词典 目录 - 2016-07-25 18:07:40

【作者】 於岳 【编辑】 李永涛 【ISBN】 978-7-115-40151-9 【日期】 2015-12 【页数】 703页 【字数】 1123千字 【开本】 16 【定价】 89元 【总数】 本书包含46大类729个命令 按章节分 第1章 登录、退出、关机和重启 章节-页码 命令 介绍 备注 1.1-P1 login 用户登录系统 1.2-P1 logout 退出登录Shell 1.3-P1 nologin 限制用户登录 1.4-P2 exit 退出Shell 1.5-P2 sulogin 单用户登

Dubbo--生态系统安装 - 2016-07-25 18:07:33

dubbo的整套环境主要有几个系统: Zookeeper注册中心安装 管理控制台安装 简易监控中心安装       在 Dubbo官网 中已经讲的很详细。本文主要是为了记录一下自己在安装过程遇到的问题,同时也把安装完成之后的文件包记录 下。       运行环境: tate@ubuntu:~$ uname -aLinux ubuntu 3.19.0-65-generic #73~14.04.1-Ubuntu SMP Wed Jun 29 21:05:22 UTC 2016 x86_64 x86_64 x8