NCV61-自由表单技术红皮书(未整理,待轻量化发版)_第1页
NCV61-自由表单技术红皮书(未整理,待轻量化发版)_第2页
NCV61-自由表单技术红皮书(未整理,待轻量化发版)_第3页
NCV61-自由表单技术红皮书(未整理,待轻量化发版)_第4页
NCV61-自由表单技术红皮书(未整理,待轻量化发版)_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、自由表单技术红皮书NC-UAP 6.1用友NC-UAP2012-07-13第 1 页目录第一章前言3第二章表单定义42.1表单类型42.2表单定义42.2.1新建42.2.2 生成表42.3表单模板5第三章流程挂接53.1流程配置53.2表单动作53.2表单展现5第四章表单设计器64.1表单布局64.2表单元素64.3表单验证6第五章 表单历史65.1表单查询6第六章 表单打印66.1表单打印6第一章 前言随着计算机软件技术的不断完善和发展,国内信息化建设的日益深入,越来越多的信息化系统开发和运行,人们越来越多的关注并参与到信息化建设中。于是逐渐产生了一个比较突出的矛盾,那就是人们日益增长的信

2、息化建设需求的不断变化和日益落伍的信息化建设手段之间的矛盾。比如:项目进度要求日益提高,而传统的开发模式过于依赖慢速的编程;系统要求越来越灵活,客户需求变更频繁,而传统的硬编码方式来适应客户需求变化的做法日益落后和低效率;传统的实施过程可能需要二次开发,需要编程,导致普通的没有编程能力的实施人员无法独立的完成实施任务,为此迫切需要功能强大简单易用的实施配套工具软件,提高实施人员的工作能力。面对这些矛盾自由表单油然而生,它通过表单模板、表单定义和工作流来实现真正意义上的自由表单。应用系统运行时,根据当前用户加载已分配有权限的表单模板。根据表单模板设计的页面样式展现表单界面,同时通过表单公式等进行

3、表单数据验证。根据配置的工作流,在提交单据时实现单据自动流转审批。根据表单定义中定义的数据表加载表单数据。这种处理模式完全能够满足客户不断修改表单的需求。而且这个过程与之前的传统开发相比,程序员不必为每次表单的变化而再次进行简单而重复的编码工作。同时实施人员也可以通过简单的配置快速订制出符合需求的表单,从而加快项目的进度。第二章 表单定义2.1 表单类型 一组业务含义上相同的表单定义都属于一个表单类型。新建表单类型的同时会在自由表单菜单分组下新增一个对应的菜单项,该菜单项的名称和编码跟当前表单类型一致。2.2 表单定义表单定义是对一类业务表单的简单定义。主要定义名称、编码、组织和数据库主表名称

4、(这里只定义主表名)每个表单定义下可以新建多个不同的表单模板。2.2.1 新增过程新增表单定义同时会新增以下内容: 流程类型:在自由表单流程类型分组下新建一个流程大类。名称、编码和表单定义相同。指定流程的服务类为自由表单的服务类DefaultFreeFormOper。 功能节点:在自由表单功能节点分组下新增一个功能节点,名称、编码和表单定义相同,该功能节点的url参数中指定了model为自由表单的DefaultFreeFormModel。同时指定参数当前表单定义的pk和新建的流程类型的pk,分别用于在加载表单时,找到对应的表单模板和流程类型。 菜单注册:在表单类型所对应的菜单项下新增一个菜单注

5、册。名称、编码和表单定义相同。可以定义是否常用,以控制是否在发起工作中显示该自由表单,默认为否。2.2.2 生成表 表名规则:主表以“ff_main_”开头,子表以“ff_sub_“开头。主表表名是根据表单定义中的表名生成。子表表名是根据表单模板中定义的grid的id生成。 生成过程:l 主表:根据模板对应的PageMeta和UIMeta,遍历其中所有的TextComp的id作为主表的字段名,生成主表。主表表名为表单定义中定义的表名。l 子表:根据模板对应的PageMeta和UIMeta,遍历其中所有的GridComp的id作为子表的表名,每个grid的所有列的id作为子表的字段名,生成所有子

6、表。即每一个grid对应一个子表。 调用方式与扩展:由于不同的数据库的sql脚本可能不同,所以需要根据不同的数据库,生成不同的sql脚本,目前已经支持的数据库有ORACLE,SqlServer,DB2,PostgreSQL。l 调用方式:AdjustTableFactory.getInstance().execute(tableName, xmluimeta);/参数为主表名称和设计的模板pkl 其它数据库的扩展:接口类:IAdjustTable定义了获得数据库sql的方法。抽象类:AbstractAdjustTable实现了接口中数据库通用的一些sql方法。所以扩展时只需要继承抽象类Abst

7、ractAdjustTable,实现特定数据库的sql脚本方法即可。2.3 表单模板 表单模板分为虚模板和子模板。虚模板是所有子模板的基模板。每个虚模板下可以有多个子模板,每个子模板都是当前虚模板的一个单独的版本。 复制模板:所有子模板都是在虚模板的基础上复制而来的,所以子模板不能新增和修改。每次复制得到的新的子模板为一个新版本,版本号加0.1。 启用模板:当启用当前虚模板的其它子模板版本时,会自动把之前启用的置为非启用。即为了保证每个虚模板下只能有一个启用的子模板。 分配模板:只有虚模板才可以分配,因为在自由表单加载查找模板时也是查找的虚模板,然后再根据虚模板得到启用的子模板。 设计模板:只

8、有子模板才可以进行设计,具体的设计请参考表单设计器部分。第三章 流程挂接3.1 流程配置 在自由表单流程类型分组下找到已经生成的自由表单流程大类,配置具体的工作流即可。同时也可以在流程大类下新建具体的流程子类型。3.2 表单动作3.2.1 表单提交自由表单的提交是直接调用的工作流的方法。调用工作流方法之前需要提供以下参数放入session中,工作流处理过程中会用到: 对应的流程类型:在查找自由表单对应的流程类型时,会首先根据自由表单功能节点url中的流程类型pk参数找到自由表单所对应的流程大类。然后根据当前用户所在组织查找当前流程大类下属于该组织的子流程。如果查找到多个符合条件的子流程则只返回

9、其中一个。如果没找到适合的子流程,则使用流程大类定义的流程。 对应的任务pk:在任务中心打开单据时会调用到DefaultFreeFormOper类的getHanlderUrlByTask方法,该方法在自由表单对应的节点的url后面追加了当前自由表单的单据pk、任务pk和制单人pk等参数。所以在这里提交单据时可以直接拿到url参数中的任务pk。 对应的自由表单FreeFormVO:通过url参数获取表单pk,通过表单定义获得表名,通过页面元素获得所有字段,通过页面获得当前子表的ds,最后分别放入FreeFormVO所对应的属性中。 调用工作流WfmCmd wfmCmd = new WfmCmd(

10、);wfmCmd.execute(); 自由表单服务类DefaultFreeFormOperl 提交调用工作流后,工作流会调用自由表单服务类DefaultFreeFormOper的update方法,该方法根据自由表单的pk的有无判断insert或者update表的数据。l insertMainTable和updataMainTable方法通过自由表单VO中动态字段Map和固定字段数组来生成主表相应sql。l saveSubTable方法会根据自由表单VO中保存的子表Dataset的FieldSet、行状态、Dataset的每行的value来成相应的sql。3.2.2 子表操作子表的新增、修改、

11、删除操作在页面的体现就是对grid行数据进行的操作。新增、修改、删除分别对应后台DefaultFreeFormController的onGridEditClick,onGridAddClick,onGridDeleteClick方法。在方法里可以直接获得子表的Dataset进行相应的处理。目前自由表单中,子表操作的方法名暂时不能自定义,为固定名称。3.3 表单展现3.3.1 加载表单页面页面展现是通过类DefaultFreeFormModel重写createPageMeta和createUIMeta方法实现。 获得表单模板过程:l 首先如果能直接得到工作流配置中定义的模板,则直接使用该模板。l

12、 如果没有得到,则取当前url的参数表单定义中已经分配给当前用户的有权限虚模板。如果没有分配虚模板,会随机得到当前表单定义下一个现有虚模板。l 根据得到的虚模板取得其下启用的子模板。3.3.2 加载表单数据加载表单数据目前是在DefaultFreeFormModel类的afterInternalInitialize方法中定义的。 加载主表数据:首先通过url中的表单定义的pk获得主表的表名。在通过在任务中心打开单据时,所获得的表单主表的pk来查询得到当前自由表单的主表数据。在通过遍历当前页面的元素的id和表中的字段名称的对应关系,对页面中的各个元素赋值。 加载子表数据: 通过遍历页面中的所有的

13、grid的id即可得到所有子表的表名。由于每个子表的外键pk_relation都关联主表的pk字段。所以同样可以根据主表单据的pk字段查询得到每个子表中属于当前主表的数据。然后再根据ds和字段名之间的关系,为grid的每一行赋值。第四章 表单设计器4.1 表单布局表单布局可以通过设计器中的布局控件来完成,如网格容器,横向容器和纵向容器等。如下图列出了当前表单设计器中的表单布局控件: 4.2 表单元素表单元素主要包括文本框、参照、表格等。可以根据单据的实际需要使用不同的表单元素。如下图列出了当前表单设计器中的表单元素: 4.3 表单验证 表单设计器提供对公式的支持,通过自定义一些简单的公式可以实现对页面的简单验证和联动效果。比如文本款根据公式会随着页面中某一个元素的值的变化而变化。某些值不合法时弹出提示窗口等。第五章 表单历史5.1 表单查询表单历史提供对自由表单历史数据查询功能。通过表单历史能详细查看所有的自由表单的具体数据。表单历史分为两类:管理员可以查看所有自由表单。用户可以查看属于自己的自由单据。其中每一个表单的详细信息的页面展现和数据加载同第三章中的表单展现部分。第六章 表单打印6.1 表单打印目前自由表单已经支持打印功能。通过实现打印接口ICpFreeFormTemplatePrintService

温馨提示

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

评论

0/150

提交评论