标题：Himalaya平台
简介
Himalaya平台Himalaya可译为喜马拉雅，是一款企业管理软件开发平台。
Himalaya设计理念从系统的构想阶段开始，Himalaya平台就确定了开放、实用、动态灵活、方便开发等基本理念，并确定了系统的设计要求：  基于互联网的企业应用。在可靠的安全机制下，提供基于Internet的应用系统访问、操作，保证业务的连续性和系统的可用性。
提供开放的构架，充分保证其扩展性。遵循J2EE、XML、Web Service标准，提供可伸缩的体系架构，可以根据需要不断扩展应用系统的容量和性能，支持各种主流技术平台，能够与遗留系统和第三方系统有机集成。
以业务逻辑为驱动，提供综合性的开发平台。采用模型驱动的，能够通用于各类信息管理软件，提供针对企业Web服务的一个可伸缩、适应性强的综合性平台。它为开发人员的协作开发提供了公共的开发环境，不但可以确保互操作性，而且实现技术的重用，最大限度地降低了成本和风险。
提供面向服务的架构和工具，提升开发效率。提供了面向服务的架构和可视化集成开发工具，可以快速定义出业务逻辑和数据模型及呈现，让应用系统开发集中精力关注各种业务目标，无须关心底层的基础结构。
深度灵活、满足动态需求。能根据业务发展速度随需应变，满足单据、逻辑、流程、查询、报表的动态变更，可以轻松地将企业资源集成到各种应用和业务流程。保障业务流程的优化，和业务的快速发展。
丰富灵活的客户端。可以按照实际的业务需要部署BS或者CS模式的客户端，即可以实现功能强大、操作便捷，也能够做到部署灵活、维护简单，以真正做到适合用户需求，提升用户体验。
Himalaya技术特点
开放架构，支持异构系统遵循开放的协议和标准
基于J2EE的开放构架，并且遵循 HTTP/SSL，Web Service/SOAP，LDAP/Active Directory，.Net，XML等开放协议和业界标准。选择遵循这些公开的标准，不仅有利于平台的后继发展，而且可以保证用户在组建IT系统时的自主选择权利，保护用户以往的IT系统投资，减少了系统的总拥有成本，减少了企业中信息孤岛现象。 
支持异构环境
在平台上构建的应用系统可以做到不依赖任何特定操作系统、中间件、硬件。因此设计合理的基于技术平台的程序只需开发一次就可部署到各种环境，这在典型的异构公司计算环境中是十分关键的。平台遵循的J2EE标准也允许客户订购与J2EE兼容的第三方的现成的组件，把他们部署到异构环境中，节省了由自己制订整个方案所需的费用。 
跨平台多数据库支持
采用纯Java技术开发，可以在多种主流服务器和操作系统平台上运行，如在主流Unix、Linux、Windows 平台上运行。为用户提供灵活多样的解决方案，方便用户对系统的扩展、升级、维护，同时也能充分保护用户的投资。  稳定可靠，性能可扩展
热备和容错性支持
平台面向集中管理模式，需要支持几十甚至几百人的并发用户访问，因此必须具备高可靠性。由于单台服务器面临着单点故障的隐患，比如，网络故障，由于高峰期出现的宕机，掉电，操作系统故障等等，很难做到不间断运行。通过在平台中加入服务器集群技术，可以做到热备功能，在某一台应用服务器出现诸如网络或者操作系统故障时，其备份应用服务器可以自动接管其工作，从而使得业务系统保证24*7的不间断运行，实现高可靠的应用环境。
负载均衡和性能扩展平台支持动态负载均衡，可以利用多个服务器组成一个集群，通过配置，将所有的业务操作请求按比例动态分配到不同的服务器，实现动态负载均衡。负载均衡可以优化服务器资源的合理利用，提高系统的稳定性，避免突发的高峰值造成系统的瘫痪；同时，负载均衡技术也保证了系统的处理能力可以通过增加服务器的方式实现线性增长，适应业务量的增长，从而保护客户的IT投资。
基于Internet部署，支持多种客户端
不同的业务系统对人机界面的要求各异，在实现用户的需求方面，单纯使用浏览器客户端或者桌面客户端很难完全满足客户的需求。因此，Himalaya平台提供了多种方式的客户端组件，以支持不同的业务需求。
Himalaya平台的桌面客户端基于RIA（Rich Internet Application）架构，具备自动安装和升级功能，与浏览器一样使用HTTP协议进行数据交互，因此与浏览器客户端一样，适合基于Internet的部署方式，具有统一维护、自动升级、零客户端维护工作量等优势，可以大大减轻系统维护工作量，保证客户端程序的一致性。
面向业务模型
企业信息化的过程之所以困难重重，就是因为在不同的业务模式下，存在各自千差万别，随机而动的业务规则。这些纷繁复杂的业务规则，表现在信息管理系统中，就是特定业务模型中的数据按照不同的规则输入，转换和输出。
技术平台的核心思想就是将业务模型从运行系统中分离出来，作为系统运行的定义和规则而存在，在系统运行时，由平台依据这些定义和规则，实现具体的执行和技术支撑。
业务逻辑独立于技术实现
在技术平台中，将业务逻辑从运行系统中分离出来，作为系统运行的规则存在，把具体运作交给平台实现，完全不必考虑实现技术。正是这个特性消除了复杂应用软件系统一直存在的，业务人员与技术人员之间很难弥合的“鸿沟”。使得业务领域的专家能够充分发挥自己所积累的丰富的行业经验，利用业务模型构建工具，构建出专业化的行业应用。
便捷的建模工具
操作系统平台、软件基础架构平台等都是面向软件开发人员，它使用起来技术门槛是比较高的。技术平台必须具有功能增强、流程重构的业务建模工具，而且这种业务建模工具是可以面向非技术人员（实施顾问或者业务人员）的。是不必技术背景，业务人员就能快速建立业务模型、流程更改重构的“傻瓜”工具。
使用平台提供的建模工具，在实现一个业务系统时，核心开发和配置工作包括：
定义数据模型
根据业务需求制定的数据模型，能够在可视化环境中设计和调整，其具体的技术实现，包括和后台数据库之间的结构映射、基本数据交互行为等，则由系统运行平台管理；  指定数据流转的业务规则
以可视化的方式, 通过托拽和连线的操作完成对业务逻辑的表达和更改，基本业务属性的变化可以通过流程节点参数配置完成。
功能强大的业务引擎用户只需在可视化开发环境中定义好数据模型和处理流程，即可控制系统在实际运行时自动按照定义执行该流程。
通过对业务与底层操作、数据存储的分离，使得应用层的业务配置具有强大的灵活性。减少了业务逻辑的管理和维护的代价，同时使用户得以集中精力专注于应用逻辑，使得业务逻辑的积累和重用成为可能。
应用功能特性
流程控制
在业务流转的过程中，对数据的控制包括数据流向，状态控制，触发，时间控制，以及各种参与其中的影响事件等。
针对控制的复杂性与易变性，技术平台提出了流程控制引擎的概念。通过对流程控制中的节点和路径的定义，允许用户创建和调整流程定义，指定流程中的事件处理，通过流程将整个业务处理过程联系起来。
复杂逻辑的支持
平台抽象出了控制事件的基本元素是在综合考虑进各种现实模型的基础上。开发系统时通过对基本元素的搭建，满足各种业务需求。
在提供的基本定义上，用户可以自由的搭建自己的控制事件。用户可以实现：不同触发转向不同状态，超时的判断，控制逻辑的组合；以审批事件为例，可以定义多用户的分级审批，定义权限角色，对于审批的触发者，可以进行各种定制。
对控制流程到达的每一状态，可以进行描述，参数的传递，可以对每一次状态的转移设定条件控制。判断条件可以是：表单数据的数量，监听，等待指定系统事件的发生，等待超时等。
灵活的变更支持
企业信息化的过程之所以困难重重，就是因为各自千差万别，随机而动的业务规则。如果对事件的控制过程是采取系统定制的方法，面对业务变更及变更的潜在危机，将一筹莫展。
由于在平台中，对于控制是采取模型驱动，控制事件是根据业务需求自行构建的，当业务发生变更时，只需相应的调整控制逻辑。而且平台可视化的控制流程图，基于现实模型的构建单元，使得控制逻辑变更非常的直观与便捷。
流程控制引擎的控制方式，在面对变化时，有着其无可比拟的优势，高效灵活的协助企业应对瞬息万变的市场，以及杜绝一处变更带来得与其他运行模块的潜在冲突。
控制流程的管理和查询
业务信息流中的各种控制事件，可以是整个业务系统的神经节点，也是各类不同信息系统的特色及工作重点所在。技术平台对“控制事件”的管理、查询提供了的支持。可以获得每个控制事件的状态描述。
各控制事件在业务系统中，可能对应着各个业务事件，该描述为设计业务系统留下了很大的发挥空间，具体到信息系统中，可作为对业务事件的统一管理，调度等。
数据访问层
为了有效使用业务建模中的数据模型定义，平台加入独立的数据访问层（Data Access Layer），作为用户的业务操作与底层数据库的隔离层，完成数据源绑定、数据间关系维护、数据操作权限判定等复杂的处理过程，也从系统基本上杜绝了数据的安全隐患。  数据访问层对外提供统一的接口，开发人员只需要根据数据模型定义，调用这些接口，即可实现业务系统中的数据维护功能。
数据操作的封装通过数据访问层，具体业务系统实现人员可以直接处理数据模型，而不需要考虑数据库及安全的底层操作，这降低了对业务系统开发人员的技术背景要求，也大大减轻了二次开发的工作强度，使业务系统的开发集中在业务逻辑的设计和实现。
支持多种多数据库
通过数据访问层，平台屏蔽了不同数据库产品之间的差别，从而使业务系统不再依赖于特定的数据库产品，同时也为方便用户根据实际需要选择合适的数据库。
目前平台支持主流数据库产品Oracle、SQL Server和DB2，并且可以拓展到任意支持JDBC 的数据库。
平台对多数据库的支持，为用户提供灵活多样的解决方案，方便用户对系统的扩展、升级、维护，同时也能充分保护用户的投资。
数据迁移支持
技术平台对多数据库的支持，不仅表现在可以选用不同的数据库平台，它也提供了在不同数据库间转换的有力支持。平台在数据库备份、恢复时提供数据筛选功能，即可以设定条件，对指定范围数据相应操作。可以通过简单的操作实现不同需求的数据导入、导出操作。
对数据迁移的封装，使得最终用户方在缺乏精通多数据库人才时，也能够完成数据库平台的转移工作。在产生信息系统拓展，或其他数据迁移需求时，无需从头构建业务系统，更高效平稳的实现过渡。同时丰富了数据来源，当新建一套业务系统时，不必从头构建，可以从原有系统中集成。
业务单据自动生成 
依据数据模型，系统可以根据预定的规则，在业务流程的特定节点自动生成符合需求的表单，在业务过程中无需再进行底层的数据库操作，支持了业务流程的自运作。
同时，系统对于业务表单提供了统一的管理机制，在系统运行时，也可以通过控制台进行察看，统一的维护。
数据维度
平台提出“数据维度”（Dimension）的概念，用以管理时间、地域、科目、组织等具有树状层次结构的数据属性，为数据访问控制、数据汇总以及多维分析提供更为灵活的支持：
可以对各层次以及同一层次的各个节点赋予不同权限，很好地支持多粒度的数据访问权限控制；
可以从不同维度，或在一个维度的不同层次进行数据汇总、分析，实现全方位的数据分析。
以数据为中心的MVC架构
按照SOA的理念，为了合理划分应用程序结构，明确各个组件的工作重点，并保证系统的运行效率，平台提出了以MVC架构为核心的程序交互和通信模式：  针对某项具体业务功能，首先确定业务处理中涉及的数据，并建立数据模型（Model）；
客户端用户界面（View）负责业务处理结果的显示（即数据模型），以及响应用户的业务处理命令，将用户修改后的数据模型提交到服务器进行业务处理；
基于数据模型，可以定义对应不同的业务处理命令的数据处理行为（Controller），数据处理行为运行在服务器端，可以组合调用多个后台服务，最终完成业务逻辑，并依据运行结果更新数据模型，进而影响用户界面，导致显示内容的自动更新；
上述程序架构被称为以数据为中心的MVC架构，通过这种方式进一步规范应用系统的开发过程，可以更好的确保开发效率和程序质量：
合理划分系统边界，简化应用程序各个部分的开发，促进开发人员的分工合作，提高开发效率；
通过将服务器端的一连串服务调用组合成为一次独立的服务调用，避免了基于SOA的应用程序效率低下的缺点，同时也确保运行过程中的数据一致性；
客户端的处理逻辑得到简化，可以提高用户界面开发速度，减轻界面测试的工作量；
具体业务逻辑被控制在服务器端运行，可以进一步提高处理效率，保证业务系统的安全性。
RIA客户端框架
RIA客户端框架即Himalaya平台的桌面客户端，是平台为了适应基于Internet部署的需求，同时又能为用户的核心业务提供稳定、快速、高效的操作界面，而设计实现的Windows客户端组件。
RIA客户端融合了桌面程序和浏览器的优点，可以为操作人员提供更好的用户体验，其特点如下：
基于.Net Framework的桌面应用程序，可以运行在各个版本的Windows平台上，能够很好地符合一般用户的操作习惯；
使用Web Service与服务器端进行交互，因此对服务器部署的要求与一般的Web程序完全一样，方便系统的部署和实施；
具备自动安装和升级功能，可以不需要用户参与，在运行时自动完成功能更新，从而方便系统升级和版本管理，大大减轻系统维护的工作量；
支持客户端本地缓存和数据压缩机制，有效降低服务器压力，减少系统带宽占用，提高程序界面的响应速度；
可以使用更多的客户端资源，快速响应用户操作，并且可以完成一般使用浏览器时无法很好完成的任务，比如读写注册表，离线操作，直接访问外部设备等等。
报表和查询
报表和查询是业务系统不可或缺的组成部分，平台在报表和查询的功能设计上，通过“查询引擎”，“模板设计”，“多格式输出”等子模块，采用现有的成熟技术，实现了功能强大，易于扩展的报表和查询功能，同时也提供方便易用的报表和查询设计功能，方便用户对业务系统报表和查询的改进和调整。
功能全面
平台内置的查询引擎可以简化用户获取需要数据的过程：
图形化的查询设计界面，用户可以使用设计工具建立，修改和查看数据的获取过程；
在数据获取过程中，使用了流程化数据处理的概念, 通过分步处理, 简化查询实现的复杂度；
可重用的数据处理节点组件，方便业务实现的标准化，确保业务知识的积累；
通过集成成熟的报表输出引擎，平台在报表输出上具有如下特点： 
支持多层嵌套分组，嵌入图形图表，多栏报表，子报表，TOC（Table of Contents）等多种样式的报表，可以方便地实现多种典型报表：表格、卡片，主从、分组、图表、套打、分栏；
支持自定义纸张，从而可以方便地实现单据套打等功能；
具有强大的分组和汇总功能，不仅可以实现复杂的多层嵌套分组报表，而且支持交叉报表；
强大的数据处理功能：可以定义不同类型的报表字段，支持字段的条件样式，能够自行定义公式，以及将公式的结果作为报表的输出；
支持柱状图，折线图，饼图等各种典型统计图表；
支持在运行时按照需要，将报表结果显示为各种不同的格式，包括Excel，PDF，HTML等常用显示格式；
便捷的设计过程  　为方便业务系统在实施和运行中，用户对报表和查询的设计和调整的需求，平台为查询和报表提供了方便易用的设计工具，包括：
基于流程图的查询设计工具，用户通过选择不同类型的查询节点，组合得到查询流程，通过简单设置节点的熟悉，即可实现数据查询的定义；这些已定义的查询可以直接被用于界面显示和报表；
平台提供所见即所得的报表设计工具，用户可以在其中完成报表定义，调整，预览直至发布的全部工作；
报表设计器提供了格式设置，自动表格对齐，智能位置调整等功能，方便用户设计报表，通过报表设计器，用户不仅可以设计一般格式的报表，还可以设计交叉报表，图表，条形码等特殊的报表内容；
高度灵活
为了解决业务系统对报表高度定制化的需求，在提供了上述功能的同时，平台同时也保留的报表和查询的功能深化和扩展方面的余地，业务系统可以通过脚本、公式等手段进一步丰富报表和查询的功能，方便实现用户的特殊需求。
用户认证和系统安全
在Internet上，数据传输和处理过程中的安全问题主要集中在以下几个方面：
用户认证：如果确认数据传输的双方的真实性；
数据安全：如何保证发送和接收的数据不被第三方窃听和篡改
目前最通用的解决方法是使用电子签名和数字证书机制，通过交易双方的证书签名，确认双方的身份；同时基于数字证书，以SSL协议对数据进行加密传输，从而保证数据在传输过程中不能被窃听和篡改。
通过对SSL和数字证书的支持等安全措施，平台可以解决业务处理过程中的安全问题：
首先平台支持以用户名/密码方式的用户认证，并且支持多种方式的校验机制，包括基于数据库的用户名/密码匹配，集成Windows Active Directory进行用户验证等；
在用户名/密码方式的用户认证的基础上，无论使用桌面客户端还是浏览器，平台都支持客户端数字证书，并且可以在服务器上验证登录客户端的证书信息，从而进一步保证用户认证的准确性；
无论是否使用客户端证书，平台均内建了对SSL协议的支持，因此，只需要通过配置使服务器运行在HTTPS方式，即可通过SSL协议保证数据发送和接收过程的安全；
在使用桌面客户端的情况下，平台还能够方便地集成客户端网卡地址绑定，USB Key等安全认证方案，进一步确保系统的安全。
完善的权限管理
平台为应用系统提供了完善的权限管理机制，在系统层面对访问权限提供了统一的管理和控制：
采用基于角色的权限控制（Role Based Access Control），可以方便地进行权限发放和收回:
角色被赋予多个不同的权限，用户因为具有某个角色而获得相应的权限；
用户可以同时具有多个角色，这种情况下，用户权限等于其所拥有的角色的权限之和；
多个用户可以汇总为一个组，从而可以作为一个独立的单元拥有某些角色，这时，这个组中的所有用户都会具有这些角色。
提供5个类别，多个层面的权限控制：
菜单权限：
对不同功能的菜单项操作权限，不同权限的用户，如提供给系统管理员和普通操作员的菜单应该不同。
功能权限：
对不同业务功能的权限控制，与菜单权限不同，功能权限是在服务器端控制的。
数据实体权限(表单权限)：
定义不同用户对数据模型中的字典，单据等数据实体的访问权限。
字段权限：
对数据实体中每个字段的访问权限，是对上面数据实体权限的深化。
数据记录权限：
对同一个数据实体，不同用户可以访问的数据记录也需要通过权限进行控制，平台通过引入“维度”的概念，实现了具有层次和继承特点的数据记录权限控制。
多粒度覆盖，支持灵活的配置
只需通过简单的配置项，即可灵活的设置不同类别，不同粒度的访问权限。业务系统在实施和使用过程中，可以根据需要对业务功能和业务数据的各个方面的进行控制，并可以由系统管理员进行管理和调整。
多级别的数据权限，满足各类需求
对用户数据权限的配置从隔离程度上细化为可见性，可增改，可删除等级别，充分考虑到了业务系统不同需求：
只要选择不可见的权限，就可以使该类数据对特定用户群完全隔离；
在用户可见的基础上，其对数据的操作权限也可以设定不同的级别； 
完善的逻辑体系
平台针对权限的管理分发，设定了基于“角色”、“用户”、“组”的完善的逻辑体系。对权限的分发按功能层次分配到各角色；当同一个登陆者身兼不同角色时，可以通过“用户”这个概念，实现多角色的叠加；依据现实的组织系统构建的复杂用户体系，可以通过多级的树状“组”条理清晰的表述、管理。
便捷的配置工具
无论是对权限逻辑的设置，还是不同访问的设定，都是非常直观便捷的。借助平台提供的用户管理工具，可以非常方便的配置以上一整套的权限管理。
可扩展性和可定制性源于平台的设计理念，从最初的版本开始，平台就把对系统功能的可扩展性和可定制性的支持作为核心功能，目前，平台已经在多个层面，以多种方式实现了对可扩展性和可定制性的良好支持，可以适应在项目生命周期各个阶段的动态业务需求。
开发阶段
在产品和项目的开发阶段，平台的服务对象是业务开发人员，在这个层面，平台主要通过集成在开发设计工具中的相关功能，方便开发人员对系统的扩展和定制：
通过数据模型设计，业务流程设计，以及可视化的界面设计等功能，方便业务开发人员实现业务需求，提高开发效率；
平台进一步提供了脚本，公式，以及扩展组件开发的支持，必要时，业务开发人员也可以选择采用这些方式扩展平台现有的功能；
平台为复杂业务逻辑的测试提供了完善的单元测试框架，在测试数据准备、运行环境模拟、测试结果校验等多个环节提供相应的支持，方便业务开发人员进行单元测试，保证软件质量。
实施阶段
平台也为系统实施人员准备了相应的配置工具，这些工具将进一步面向业务，屏蔽底层技术实现，以方便实施人员在项目过程中对系统的定制和调整：
提供面向业务的数据模型和用户界面的修改调整功能，包括单据字段的新增、隐藏等功能，以便业务人员按照需要调整应用程序的用户界面；
提供用户界面快速生成工具，方便系统实施人员快速生成运行界面，以适应实际项目的需要；
实施人员可以通过系统内置的公式，调整应用程序逻辑。
运行阶段
在项目正式运行之后，平台主要是通过以下的两种方式，来保证用户可以实时对系统进行调整和扩展：
在平台中为应用系统保留了很多可配置项目，这些配置项目可以被IT管理员根据实际需要进行调整，以满足业务系统发展和调整的需要；
平台提供的界面定义、流程定义、报表定义等功能可以嵌入到应用程序中，形成面向最终用户的运行界面调整、流程调整、以及自定义报表等功能，供IT管理员和业务人员使用。