




已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中国联通云门户项目中国联通云门户项目 流程服务流程服务 项目开发及编码规范 中国联合网络通信集团有限公司 2019-03-18 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 2 页共 71 页 产权说明产权说明 本文件中出现的任何文字叙述、文档格式、插图、照片、方法、过程等内容,任何个人、机构未经授 权许可,不得复制或引用本文件的任何片断,无论是通过电子形式或非电子形式。 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 3 页共 71 页 文档信息文档信息 项目名称:中国联通云门户项目 项目经理:肖永威文档版本号: v 1.1 项目阶段:设计阶段文档版本日期:2012 年 12 月 120 日 起草人:张玉明起草日期:2012 年 12 月 13 日 评审人:评审日期: 评审方式:会议评审【】、邮件评审【】 版本历史版本历史 版本号版本日期作者说明 v 1.02012-12-13 张玉明创建文档 v 1.12012-12-17 张玉明 修订文档, 增加 WS 配置 classpath 增加流程建模复用组件配置及使用规范 v 1.22012-12-18 张玉明增加 4.5 Identifiers 数据提取 v 1.32012-12-18 张玉明、刘彦利增加 3.3.5 方法集和命名空间 v 1.42012-12-20 张玉明增加 4.8 4.9 节 v 1.52013-01-22 张玉明增加 3.3.7 节 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 4 页共 71 页 目目 录录 1概述 7 1.1目标7 1.2名词解释7 2功能设计.7 2.1页面设计7 2.1.1页面设计一般原则.7 2.1.2XFORM开发原则7 2.1.3菜单7 2.1.4调试7 2.2数据库设计8 2.2.1原则8 2.2.2主键8 2.2.3关联8 2.2.4触发器8 2.2.5索引9 2.3流程设计9 2.3.1原则9 3项目构建与编码规范10 3.1项目开发工具一览表10 3.2开发资源及服务器信息11 3.2.1SVN服务器11 3.2.2Cordys BOP4 开发服务器12 3.3CORDYS BOP 平台.13 3.3.1测试环境租户建立规范.13 3.3.2CWS项目构建方案.13 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 5 页共 71 页 3.3.3CWS项目项目开发注意.19 3.3.4备份策略19 3.3.5方法集和命名空间.19 3.3.6方法21 3.4编程公共命名22 3.4.1类命名22 3.5JAVASCRIPT命名22 3.5.1类成员变量命名.22 3.5.2普通变量命名.23 3.5.3类成员方法.24 3.5.4普通方法24 3.6JAVA命名 24 3.6.1类成员变量与普通变量.24 3.6.2类成员方法.25 3.6.3包命名25 3.7数据库命名25 3.7.1表和字段命名.25 3.7.2主键命名25 3.7.3外键命名26 3.7.4视图命名26 3.7.5序列命名26 3.7.6存储过程命名.26 3.7.7函数命名27 3.7.8触发器命名.27 4技术实现.27 4.1业务逻辑实现方案选择27 4.2页面28 4.3BPM32 4.3.1流程松耦合性.32 4.3.2流程事务性.33 4.3.3流程建模复用组件配置及使用规范.34 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 6 页共 71 页 4.4消息映射34 4.4.1消息结构34 4.4.2消息删除35 4.4.3本地变量35 4.4.4子流程36 4.4.5并行处理36 4.4.6Web Service / Method .41 4.4.7JavaScript编码41 4.4.8JAVA编码42 4.4.9数据库连接.47 4.4.10数据库连接.47 4.5IDENTIFIERS数据提取 .47 4.6调试与测试48 4.6.1调试48 4.6.2Webgateway48 4.6.3WS-AppServer调试.49 4.6.4NOM内存泄漏检测与调试49 4.7单元测试49 4.8开发工具整合49 4.8.1Subclipse SVN插件安装49 4.8.2Cordys CoE 插件.58 4.8.3eclipse中安装tomcat插件58 4.9开发过程中性能及故障处理 63 4.9.1限制流程实例中循环的最大数量.63 4.9.2MySQL主从复制Binary Log清理64 4.9.3Eclipse Performance.64 4.9.4Cordys 自定义认证类及BCP JAR路径配置.65 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 7 页共 71 页 1 1概述概述 指导云流程服务项目开发,提供设计、开发、编码的参考、执行规范。 1.1目标 规范项目各环节实施、开发、编码规范,以及故障处理、调优问题汇总记录。此文档会在整个项 目实施过程中不断维护,保持版本更新。 1.2名词解释 Cordys CWS REST BinLog 2 2功能设计功能设计 2.1页面设计 2.1.1 页面设计一般原则 2.1.2 XFORM 开发原则 2.1.3 菜单 菜单项应当赋予角色,而不是直接赋给用户 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 8 页共 71 页 2.1.4 调试 可以使用 fiddler、httpwatch、firebug、IE developerToolbar 来对 Http 请求及 JS 脚本进行调试 和性能调优。 2.2数据库设计 2.2.1 原则 数据库设计必须符合第一范式。 数据库只保留基本逻辑约束,包括以下方面: 主键 主子表关联外键约束 属性表不添加外键约束。 所有数据库设计的内容体现在数据模型文档中,针对特定字段的约束体现在该字段的属性和注释 中,需要特别说明的,可以在物理模型图中加 Notes。 注意:由于本项目中使用的是 Cordys BOP 平台产品,在 BOP 中能够提供 API 来解决的或者可以 通过查询平台系统表提取数据的,原则上不要再增加新表来辅助设计和逻辑实现,以避免后期与应用 耦合性过高。 2.2.2 主键 以单一整形或字符串类型字段做主键。 2.2.3 关联 当一个表通过外键引用另一个表时,往往主表的删除意味着相关记录的删除,如果确认这里的业 务逻辑是正确的,而且没有其他的影响,可以使用“级联删除”选项来简化代码,但必须在相应的数 据库模型上有所体现。 同样的,“级联更新”也起到类似的作用。 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 9 页共 71 页 2.2.4 触发器 对于一些简单的,基本业务无关的数据操作,可以使用触发器来实现:比如生成序列号。但业务 相关的,复杂的逻辑,则避免在触发器中实现。 2.2.5 索引 对于查询频度远高于修改的数据表,或者需要经常对查询结果排序的表,创建相应的索引。 2.3流程设计 2.3.1 原则 以详细设计为准,模型设计摘要如下。 1.创建流程模型时修改流程的 namespace,如下所示: /laiyifen/tbpm 2.泳道颜色使用双色交替,循环使用 cordys 提供的第 1 个颜色和第 2 个颜色, 3.泳道间的间距 1px 4.泳道的长度要统一 5. decision 的描述用“.是否.”,条件描述为“是”“否”,摆放位置应在连接线的起始 端,水平连线上方、垂直连线右侧,偏移位移在 5px 以内 6.当 decision 的出口在 3 条或 3 条以上,根据实际业务情况进行描述 7.活动节点间的连线,水平或垂直平行时用直线,除此之外用带直角的连线 8. group 组件上下边框应大于泳道边界 1px,group 的描述有实际的业务含义 9.流程中的组件大小用 default。如果文字太多(超过 50 字时),可根据实际情况调整 10.相同组件的大小在同一流程模型中保持一致 11.流程的起始位置在上方,结束位置在下方 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 10 页共 71 页 循环中驳回节点尽可能共用,以减少驳回节点个数 3 3项目构建与编码规范项目构建与编码规范 本项目开发基于 Cordys BOP 4.1 平台进行开发。Cordys 层使用 SOAP WS 进行服务开发,中 间层使用 RESTful 的 WS 对外暴露资源和服务。 REST 风格的 WS 使用 Jboss Resteasy 作为框架的基础上进行开发,开发测试服务器使用 Apache Tomcat 7.0,JDK 统一使用 1.6,Eclipse 需要 eclipse-jee-juno 版,并整合 Cordys CoE 插件 作为 WS 开发 IDE。 开发数据库使用 MySQL 5.5+,推荐使用 5.5.19 版,生产环境使用 MySQL Master/Slave 模式, 前端连接使用 MySQL Proxy 模式进行 JDBC 连接。 开发工程包 DEMO 中提供了 Ant 打包脚本,方便进行服务打包,第三方常用的 lib 库则都包含在 EIP DEMO 工程中,请避免使用其他版本的库。 每个 EIP 服务的客户端是一个 Jar 文件,命名为 XXX_impl.jar,最新的客户端 jar 文件以现网运 行的版本为准。 开发工程包请向开发人员索取。 3.1项目开发工具一览表 平台:Cordys BOP4.1 Cu7 MySQL Server:MySQL Server Community 5.5.19 Eclipse IDE:eclipse javaee juno with Cordys CoE plugin Svn plugins: Eclipse update site URL: /update_1.8.x MySQL Tools:Navicat for MySQL 10.0.11 enterprise edition Web Contanier:Apache Tomcat v7.0 Web Browser: Google Chrome 最新版,Mozilla Firefox,IE 8 +,推荐使用 Chrome 浏览器进行 开发。 SSH 客户端:Xmanager 3.0 +,SecureCRT 7.0,推荐使用 XME 3.0,可以直接使用图形界面, FTP 客户端:Xftp,Filezilla XML 格式化工具:foxe(XML 格式化工具)、XPathVisualizer 1.3.0 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 11 页共 71 页 文本编辑工具:Notepad+ 6.22 3.2开发资源及服务器信息 3.2.1 SVN 服务器 1、项目开发服务器地址:、项目开发服务器地址: 8:8443/svn/cloudbpm 项目开发人员帐号,联系配置管理员获取。 开发服务器管理员帐号: 远程桌面:adminstrator 密码:联系相关人员 IP:8 SVN 客户端需使用 TortoiseSVN 1.7.* 2、公司、公司 SVN 服务器:服务器: 项目根路径:60/svn/20121123/YMHLCFW/ 注意:本节以下所述 SVN 地址均相对此项目 SVN 根路径 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 12 页共 71 页 开发工程开发工程 SVN 地址:地址: Cordys 中 CWS 创建项目工程时绑定的 SVN 地址: 00Developing/02code/cloudbpm/trunk/projects/bpm-cordys-cws-all Cordys 中 CWS 中创建的 Java 代码在 Eclipse 中编辑时,需下载 Eclipse 工程,下载地 址: 00Developing/02code/cloudbpm/trunk/project/bpm-cws-java 项目基础类库开发的 Eclipse 工程 SVN 地址: 00Developing/02code/cloudbpm/trunk/project/bpm-common 项目 REST 服务开发的 Eclipse 工程 SVN 地址: 00Developing/02code/cloudbpm/trunk/project/bpm-rest 项目 java 版本 SDK 开发的 Eclipse 工程 SVN 地址: 00Developing/02code/cloudbpm/trunk/project/bpm-sdk-java 项目 php 版本 SDK 开发的工程 SVN 地址: 00Developing/02code/cloudbpm/trunk/project/bpm-sdk-php 类库类库 Jar 包发布地址包发布地址 项目基础类库编译后 jar 包发布的 SVN 地址: 00Developing/02code/cloudbpm/trunk/projects/bpm-cordys-cws-all/rest-ws/Java/Java Archives/bpm-lib 第三方厂商-HP 提供的类库发布的 SVN 地址: 00Developing/02code/cloudbpm/trunk/projects/bpm-cordys-cws-all/rest-ws/Java/Java Archives/hp-eip-lib 开发工具下载地址开发工具下载地址 00Developing/02code/cloudbpm/trunk/tools 版本标签创建地址版本标签创建地址 00Developing/02code/cloudbpm/tags/ 注意:各模块在模块目录下创建版本标签 个人目录地址:个人目录地址: 00Developing/04personal 每人的文件夹下有三个文件夹 根据每天的任务,将相应的成果放到这三个文件夹里 每天都得将当天成果放入文件夹中提交,并在 svn 备注中写明当天提交的是什么,多少个功能点 3.2.2 Cordys BOP4 开发服务器 CordysBOP4: 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 13 页共 71 页 服务器访问地址 49/cordys/ 位置:黑龙江集成公司 按开发人员建立租户,在各自的租户下进行开发 开放服务:SSH FTP MySQL 数据库:数据库: 数据库名:eipdb 数据库地址:49 端口:3306 用户名:eip_app1 密码:True Tomcat Server: 地址:49 端口:8080 管理用户:admin / admin webappRoot:/usr/local/tomcat-7.0.33/webapps FTP 用户用户 49 用户:ftpuser 密码:ftpTrue Cordys Bop 集团服务器:集团服务器: 访问地址 57/cordys/ 位置:集团 按开发人员建立租户,在各自的租户下进行开发 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 14 页共 71 页 3.3Cordys BOP 平台 3.3.1 测试环境租户建立规范 EIP 云门户端是按省分分配的应用 ID。 EIP 云门户中的EIP 应用 ID、EIP 租户 ID与 Cordys 流程平台中的CARS 租户的对 应规则为: EIP 应用 ID-EIP 租户 ID=CARS 租户 ID 由于 Cordys 中租户为 LDAP 的 DN 格式,所以CARS 租户 ID对应的CARS 租户 DN为: cn=zhangym195,cn=organizational users,o=CARS 租户 ID,cn=cordys,cn=defaultInst,o= 例如:EIP 中的某 XX 系统的应用 ID 为 na999,某 YY 的租户 ID 为 hl328,其对应的 Cordys 中 的租户 ID 为 hl328-na999,对应的 Cordys 中的租户 DN 为:cn=zhangym195,cn=organizational users,o=hl328-na999,cn=cordys,cn=defaultInst,o= 3.3.2 CWS 项目构建方案 集成平台的各个基础通用组件分别建立独立的 workspace 主要包括:统一用户管理,附件和报表, 日志模块,工作台其他应用功能在一个 workspace 中分别建立独立的 project。 Is the reversed domain name really required to be used as part of the qualified name? It is strongly recommended, because this prevents name collisions with content from another software vendor. Product uniqueness within your domain, is at your own responsibility. In case, you are the one and only consumer of the developed application, you could consider to skip the reversed domain name part of the folder structure and hence from the qualified name. Disadvantage is that you could get name collisions in future. svn 目录结构如下: 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 15 页共 71 页 i.tags、branches 和 trunck 是 SVN 标准结构,trunck 下面 workspaces 是工作空间窗口, bpmservices 为本项目工作空间,rest-ws 是 REST 服务开发的项目,还可以按以后规划 建立其他项目 ii.以上 SVN 内容在导出到 CWS 后,目录结构如下 iii.其他开发人员可以按此格式在 CWS 中建立项目,使用3.2.1 节 svn 服务器中 Cordys 中 CWS 创建项目工程时绑定的 SVN 地址提供的地址对项目进行检出,然 后再本地开发 iv. 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 16 页共 71 页 其中: rest-ws 为工作空间中的项目名称,一般一个服务分类独立一个项目 Business Process Model 为流程模型(business process models 和 case management models)目录,此目录下面一般以流程级联目录进行命名,此目录不会部署到流程模型的名称路 径中。 采用 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 17 页共 71 页 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 18 页共 71 页 Set Start Point of Qualified Name,将此目录下级目录作为命名起始位置。 DB Metadata 为数据库元数据目录 Java 目录下面包含 Java archives 和 Java sources 目录, Application packages can contain Java Archives (JARs, for short) that include Java classes developed as part of the application, or JARs from external providers (so called third party JARS). In the former case, you need to define a Java Archive Definition; 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 19 页共 71 页 detailed instructions on this can be found in this webinar. In the latter case, there are two options: the required JAR is available itself and can therefore be delivered as part of the developed application; the required JAR is delivered by another application. In the last case, you must include a file path dependency. Note that in this scenario, the developed application can be deployed without the required Java Archive being available on the production environment. Roles 为角色目录 Rules 为规则目录 User Interfaces 为用户界面文件目录,包括 user interfaces 和 external user interfaces Web content 目录为 HTM(L)页面文件、Javascript 文件、CSS 样式表、图片、图标等目录 文件。 这个目录要求定义一个 Web Library Definition。此目录中的文件将部署到 Cordys Web Server 目录。 XML Store content 所有有效的 XML 结构能够发布到 CordysXML Store 中。典型地,它将用 于不会存储在数据库或在文件系统中的属性和设置文件 这个目录要求定义一个 XML Store Definition 以使部署文档到 Cordys XML Store All documents having a valid XML structure can be published to the Cordys XML Store. Typically, it will be used to store properties and settings that will not be stored in a database or on the file system. Not all documents with extension xml need to be published to the Cordys XML Store. For example, message bundles end at xml but needs to be part of some Java archive. You need to define a XML Store Definition to deploy documents to the Cordys XML Store. More explanation and detailed instructions you can find at this webinar. Web Services 开发的 Web 服务目录 Web WsAppServer Packages 目录为根据 DB Metadata 生成成的 package 目录 XMLSchema Definitions 为 XMLSchema 目录 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 20 页共 71 页 3.3.3 CWS 项目项目开发注意 如果项目按每租户每开发人员模式进行 BOP4 项目开发的话,提醒各位基于 SVN 的 CWS 开 发人员,在修改代码前 一定要先检出代码 ,修改后再 提交到 SVN 如果想将项目保存到 自己的 服务器 Workspace 下面 使用 3.3.4 备份策略 3.3.5 方法集和命名空间 WS 命名空间说明 JAVA 代码命名定义格式: http:/ 公司域名 / 项目编号 / 模块名 公司域名: 项目编号:bpm 模块名:见下表 模块名模块名编号编号对应操作接口对应操作接口描述描述 流程执行流程执行ProcessExecute 1.发起流程 2. 列举出所有流程执行类的操作 待办处理待办处理PendingOperate 1.任务认领 2.工作移交 3.委派 列表出所有统一待办待阅、应 用待办待阅及 Cordys 平台任 务相关的处理操作 流程定义流程定义ProcessDefine 1.查看流程 2.获取流程环节 3.获取流程执行人 列举出涉及流程定义类的操作, 如获取当前用户下所有流程名 称,获取当前流程环节,获取 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 21 页共 71 页 4.当前环节的后续环节等等。 流程管理流程管理ProcessMgmt 1.获取流程实例 2.查看流程历史 流程管理相关的所有操作 组织管理组织管理OrgMgmt 1.用户查询 2.用户同步 涉及与 4A 相关的组织用户同 步及用户、角色、等组织信息 查询操作,通过封装 4A 提供 的 REST 服务接口,开发同步 WS 来实现。 应用开户应用开户AppRegister 1.建立租户 2.建立系统资源(建 立 SG、SC、CLASSP ATH) 3.分配数据库资源 4.分配用户 5. 涉及应用开户 流程模型流程模型BpmModel 1.车辆(Vehicle) 2.会议(Meeting) 3.档案(Archive) 命名示例: 如【流程执行】模块下面的启动流程操作命名空间如下 http:/ /bpm / ProcessExecute JAVA 包命名方式: cessexecute 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 22 页共 71 页 流程模型命名空间说明 流程模型 NS 定义格式: http:/ 公司域名 / 项目编号 / BpmModel/ APPID 公司域名: 项目编号:bpm APPID:应用开发时 EIP 中申请的 APPID。 JAR 包命名规范 1、JAVA 包命名包命名 bpm-模块名-版本号.jar 2、提供给第三方提供给第三方 REST 接口接口 SDK 命名命名 bpm-模块名-interface-版本号.jar REST 接口 URI 命名说明 http:/EIP 部署服务主机:端口/bpm/rest/模块名/服务操作/参数 1/参数 2 示例: 9:8080/bpm/rest/ ProcessExecute /workflowBackOne/appId/appToken/controlUserId/processInstanceId/track_id 3.3.6 方法 命名方式为 Get%BUSINESS_ENTITIY%Object (返回 0-1 个 tuple) Get%BUSINESS_ENTITIY%Objects (返回 0-n 个 tuple) Get%BUSINESS_ENTITIY%Object/ObjectsBy%PARAM1%_and_%PARARM2% (固定参数查询) Get%BUSINESS_ENTITIY%ObjectsByDF (动态查询) Get%BUSINESS_ENTITIY%Object/ObjectsBy%PARAM1%_and_%PARARM2%_and_DF (固定参数+DF 查询) 参数较多时,可考虑在 object 后以功能进行命名。 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 23 页共 71 页 如 GetChangeObjectsByDF GetAnnualPlanObjectsByPlanID_and_PlanType GetAnnualPlanObjectsFilter method 的命名基本上遵循两点 1.系统默认生成的规则: Object 表示返回单个 tuple,Objects 表示返回多个 tuple 2.自定义规则:By 后面是条件,DF 表示动态查询 这里 PARAM 之间之所以用下划线连接,是因为数据库字段有时候可能全部大写,无法断词。 3.3.7 JAVA 类注释 1.1.方法注释:方法注释: 项目中的方法注释按以下模板生成。生成成后效果,如图所示: 配置方法:在 Eclipse 中按以下方式打开菜单: windows - preferences: 找到 Java Code Template 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 24 页共 71 页 右侧 “Configute generated code and comments”:区中点击 “Metods”,然后 Edit 此模板, 将下面内容 /* * Method Name: $enclosing_method * Description: $todo * author $user * $tags $return_type * throws */ 表 - Eclipse 的模板配置 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 25 页共 71 页 粘贴后,如图示: 保存即可。生成的模板注释后如下所示: /* * * Method Name: startProcess * Description: 根据传递的流程特定消息来启动流程并返回流程实例ID * author yuming * param type 类型 definition * param receiver 流程图名称(全路径) * param messages 流程流转消息(XML Node) * param source 可选参数 * return String Instance_Id * throws * IllegalArgumentException 参数错误 * throws * SOAPException 执行异常,流程启动失败 */ 2. 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 26 页共 71 页 3.4编程公共命名 进行面向对象的设计,考察方法本身是否为类的职责。 3.4.1 类命名 WS-AppServer 依据后台数据库表对象或 Object 自动生成的 Class,以系统默认命名为准;其他 自定义类命名方式为 名词 名词中各个单词的第一个字母大写 如: OaObject 或 动词+名词 动词第一个字母小写,名词中各个单词的第一个字母大写 getOaObject 3.5Javascript 命名 3.5.1 类成员变量命名 命名方式为 _名词+名词 如 _password _userName 首字母小写,如包含多个名词后面名词首字母大写。成员变量都应当被封装,不能被外部直接访 问。采用“_”前缀,同时提供 getter/setter 方法。 3.5.2 普通变量命名 非对象类型变量命名方式为 %TYPE%名词+名词 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 27 页共 71 页 如 sType iIndex giIndex %TYPE%为变量类型(虽然 Javascript 没有类型的概念,但是从代码可读性和校验方便性考虑还 是应当添加),包括以下取值: i: int gi: gloable int variable s: String 对象类型变量命名方式为 名词+名词%OBJECT_TYPE% 如 employeeNode orderArray %OBJECT_TYPE%为对象类型,包括以下取值: Node Array 其它 所有无类型前缀的变量都是“对象”,而后缀表示它是哪种“对象”。 有多个名词时采用 Camel 格式,也即各名词首字母大写。 3.5.3 类成员方法 命名方式为 function _动词+名词+名词(参数列表也即普通变量列表) 如 function getUser(sCode) 需要考虑是否对外部公开 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 28 页共 71 页 公开则无“_”前缀 不公开则有“_”前缀 实例方法通过 prototype 定义,静态方法直接定义。 如 Dtotype.toCordysString=function() Date.fromCordysString=function(sDateTime) 3.5.4 普通方法 与类成员方法的唯一区别是不需要考虑外部可见性。 3.6Java 命名 3.6.1 类成员变量与普通变量 命名方式为 名词+名词 如 PassWord UserName 首字母小写,如包含多个名词后面名词首字母大写。成员变量都应当被封装,不能被外部直接访 问。采用 private 修饰符,同时提供 getter/setter 方法。 3.6.2 类成员方法 命名方式为 %可见性% %返回类型% 动词+名词+名词(参数列表也即普通变量列表) 动词第一个字母小写,名词中各个单词的第一个字母大写 如 private String generateReport(int employeeIndex) 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 29 页共 71 页 3.6.3 包命名 命名方式为 com.unicom. %MODULE% 如 com.unicom.bpmsi 注意保持 WS-AppServer Repository 中的 package 和 java 中的一致 3.7数据库命名 .1 表和字段命名 对于 Oracle,、表名全部大写,根据应用的不同用下划线分隔 如 OA_* HR_* 如果表明超长,测应用名称缩写 比如 REPAIRREPORT_*缩写为 RR_* .2 主键命名 命名方式为 PK_表名 如 PK_EMPLOYEE 全部大写。 .3 外键命名 命名方式为 FK_表名_被引用表名 如 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 30 页共 71 页 FK_EMPLOYEE_DETAIL_EMPLOYEE 全部大写。 .4 视图命名 命名方式为 VW_表名_表名 如 OA_VW_EMPLOYEE_USER_INFO 全部大写。 .5 序列命名 命名方式为 SEQ_表名 如 OA_SEQ_EMPLOYEE 全部大写。 .6 存储过程命名 命名方式为 S_动词_名词 如 OA_S_UPDATE_EMPLOYEE 全部大写。 .7 函数命名 命名方式为 F_动词_名词 如 OA_F_CALCULATE_USER_NUMBER 全部大写。 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 31 页共 71 页 .8 触发器命名 命名方式为 DT_动词_名词 如 OA_DT_GENERATE_USER_ID 全部大写。 4 4技术实现技术实现 4.1业务逻辑实现方案选择 本项目中的业务逻辑可以通过以下几种方式实现:Javascript in XForm, WS-AppServer, BPM, SQL in WS-AppServer Web Service (method), SAP Connector, Scheduler 和 Store Procedure。 一般的指导原则是: 考虑企业内部原有和目标业务流程规范性、业务流程操作习惯和项目执行力度 是否采用 BPM 进行技术实现取决于是否可以或需要增加业务的可见性 尽量使用 BPM 进行较高层次的业务建模,而使用 WS-AppServer 构建细粒度的功能或事务逻辑 如果性能是业务逻辑的瓶颈,应尽量采用 WS-AppServer 实现 尽量简化客户端(Javascript in Xform)的实现代码,而选择后面的几种方式把实现封装在 SOAP method 中(其实就是统一的后台调用接口) 尽量少使用 Store Procedure,因为它特定数据库的依赖性太强,而且无法实现标准的 tuple old/new 接口 无论是不太涉及业务对象、简单轻量级的业务逻辑,比如拼接日期、格式化字符串或者进行数 学运算等,还是较为复杂的业务逻辑,比如需要从数据库中获得相关业务对象信息进行比较复杂的组 装,应使用 WS-AppServer;对于和 SAP 系统的集成,使用 SAP Connector 根据逻辑的复杂性和要实现的目标不同,分情况处理: 1.如果某项功能仅实现单个业务实体的增删改查(包括以一张表为主体,但涉及多表的关联查询) ,同时该实体的变化又不至于扩散(扩散的例子:删除订单还要同时修改对应计划的状态),那么就 可以由 SQL in WS-AppServer Method 实现。 2.如果某项功能需要复杂的逻辑处理,这些处理可以由系统完成,或者对业务实体的增删改影响 到了其他的实体(变化扩散),由 WS-AppServer 实现。 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 32 页共 71 页 3.如果某项功能需要多个不同用户的合作才能完成,且某些角色的所要完成的业务工作是多样的, 那么可以由 BPM 实现。 4.如果逻辑取决于用户的交互,还是前端判断比较合理。(例如根据用户对控件 A 的选择结果确 定控件 B 显示的内容 5.对于本项目需要较高性能要求的情况,采用详细设计中基于 WS-AppServer 的复合框架,进行 请求封装 4.2页面 页面实现有以下指导原则: 页面脚本做结构化处理,考虑调试情况和异常处理,示例如下 var gDebug = false;/ 调试标志 var gDebugBPM = false;/ 调试 BPM 标志 var gParam; / 全局传入参数 var gType; / 是否新建报销单全局标识,默认新建 var gOpen=false; / 重入标志 var OPERATION_NEW = 0; / 新建 var OPERATION_DRAFT = 1; / 草稿 var OPERATION_PROCESS = 2; / 流程中 / 表单初始化 function Form_InitDone(eventObject) try / 重入检验 if(gOpen) / 已打开 CordysRoot.application.showError(“请首先关闭已打开页面!“, “系统错误“, null, errorHandler); return; else gOpen = true; initGlobal(); initForm(); catch(e) CordysRoot.application.showError(“页面初始化发生错误,请重新尝试或联系系统管理员!n“+e.message, “系统错误“, null, errorHandler); 中国联通云门户流程服务项目中国联通云门户流程服务项目 项目开发及编码规范 第 33 页共 71 页 function errorHandler() closeApplication(); / 初始化全局变量 function initGlobal() / 获得传入参数 gParam = application.event.data; / 流程中 if(isFromBPM() gType = OPERATION_PROCESS; if(!gDebugBPM) gID = id.getValue(); else / 修改已有 if(gParam / 新建 else gType = OPERATION_NEW; function isFromBPM() if(parent if(gDebugBPM) return true; return false; / 设置表单默认值和可用性 function initForm() initDefault(); hideHiddenFields(); if(XXXModel.soapFaultOccurred) CordysRoot.application.showError(“读取 XXX 信息失败“, “系统错误“, null, closeApplication); return; / 隐藏所有不可见字段 function hideHiddenFields() grpHidden.hide(); / 设置默认值 function initDefault() / 点击提交 function tbbCommit_Click(eventObject)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 不明物体管理制度
- 专卖卫生管理制度
- 专家库内部管理制度
- 专柜工作管理制度
- 世博园运营管理制度
- 业务对接管理制度
- 两癌资金管理制度
- 中医质量管理制度
- 中国绿色管理制度
- 中央项目管理制度
- 江苏省苏州市2023-2024学年高一下学期6月期末考试化学试题
- 浙江省宁波市鄞州区2023-2024学年四年级下学期期末数学试题
- 江苏省常州市教育学会2023-2024学年七年级下学期学业水平监测语文试题
- 酵素招商营销策划方案-培训课件
- 连接器基础知识培训
- 注塑工艺验证周期
- 招标代理机构入围 投标方案(技术方案)
- 食管静脉曲张套扎术
- 装修施工验收指南
- 年产10万吨聚氯乙烯生产工艺设计毕业设计
- 2023年-2024年电子物证专业考试复习题库(含答案)
评论
0/150
提交评论