实施与服务
 应用描述
 安装部署
 术语解释
 定制使用指南
 表单部件
 权限接口
 开发指南
 工作流集成
 word格式输出
 常见问题
 表单二次开发
 承元OA标准版
 承元OA增强版
 承元OA平台版
 客户关系管理
 订单与采购管理
 
chy@chysoft.net


 
表单部件

一、整体描述
    本节主要描述通过添加新的表单部件扩展模板通用功能
    表单部件是表单的组成元素之一,表单部件是实现net.business.engine.common.I_Component接口的Java类,一般直接继承net.business.engine.common.BaseComponent类。在系统中添加新的表单部件通过以下步骤即可实现:
1. 修改部件配置文件,配置部件的相关属性
    (部件的属性可以根据需要动态设置,这点和jsp的tag类似)
2. 开发实现指定接口的Java类,实现doView和doPost方法
    (表单引擎产生部件的实例,根据设置初始化实例的相关值,传递表单环境变量)
部件的使用
(新添加的部件,出现表单定制主界面的左侧部件属性面板上,通过指定部件图标显示部件个性化的图标)
1. 在表单HTML模板指定位置引用,设置部件的属性
2. 保存模板并编译
用户可根据以上步骤开发新的部件,扩展模板功能(表单系统提供了常用的部件)。

二. 部件配置文件
1、整体描述
说明:需要开发新的表单部件或扩展部件属性时使用。
名称:syscomponent.xml
位置:WEB-INF目录下
其基本结构如下:
<?xml version="1.0" encoding="gb2312" ?>
<Components>
  <Component type="11"  name="不定长数据处理" id="test" class="test.test1" icon=”unf.gif” validUrl=”valid.htm, 300, 400”>
      <width type="2" isMustInput="false" regExp="^\\d+$">宽度</width>
      <height type="1" isMustInput="false" regExp="^\\d+$">高度</height >
      <table type="1" length="50" isMustInput="true" enum="1,2,3">数据表</table>
  </Component>
</Components>
说明:
    以上为一个部件的配置定义;
Component中包含的属性为部件的系统属性;
其中width为部件属性成员,该标记可以由开发人员自定义,isMustInput为成员属性,成员属性必须使用系统指定的基本类型和扩展类型;Component中包含的属性为部件的系统属性,包括以下类型:
 type:为两位整数,高位为实现接口的的方式(1 只用于数据的显示, 2 只用于数据的提交,3  同时实现数据的显示与数据提交方法),低位是否需传递数据连接对象(0 不需要, 1 数据显示是需要,2 数据提交时需要, 3 数据显示与数据提交均需要)
 部件的名称(name):用于在模板定制时类型的显示,在一个应用中名称最好设置为唯一,方便区别;
 标记(id),部件的唯一标记,用于部件类型的定位与寻找,在当前配置中该标记是唯一的;
 实现类(class),实现该部件的类;该类必须实现部件接口
实现部件接口net.business.engine.common.I_Component的类(具体部件一般只须实现抽象类net.business.engine.common.BaseComponent即可)
 显示图标(icon),定义在模板定制中部件的显示图标;该属性为可选项,未设置时则使用缺省图标;
 特殊校验的地址(validUrl)
定义一个程序页面,用于校验部件的相关属性设置。该页面使用模态窗口模式打开,返回一个校验结果参数,如果不为null则通过校验;
var obj = window.dialogArguments;  //获取父窗体附加数据的存储表单
var win = null;
var prefix = null;
var strListId = null;

if(obj != null)
{
    win = obj.document.parentWindow;      // 获取父窗体的windows对象
prefix = "c_" + win.getControllId() + "_"; // win.getControllId()返回当前被设置部件的Id,整个为部件元素的名称前缀
}
2、部件成员属性
1、部件基本成员属性的类型
 数据类型(type),设置部件属性的数据类型;其中 1为字符;2为数值; 3、时间,该属性为必须设置的属性;
 枚举的数据类型(enum),枚举元素中不能包含“,”,否则使用“\,”进行转换,设置为枚举类型时,设置属性则以下拉列表进行选择,数值为序号,enum=”1,2,3”
2、部件扩展成员属性的类型
(以下属性均为可选项,在具体的应用中根据需要添加)
 校验规则(regExp),即使用javascript正则表达式对属性的数据格式进行校验;例,限制输入非空字符为整数,则设置为regExp=”^\\d*$”;
 是否必须输入(isMustInput),设置该部件属性在定制时是否必须输入;false 不需要,true 需要;不设置时的缺省值为false;
 缺省值(defaultValue),在定制时设置部件的属性,给某些属性预先提供默认值;
 是否隐藏设置(hidden),该属性同缺省值一起使用,如果某个属性设置了缺省值或非必须录入项,并将隐藏属性设置为true,则该属性在定制时不可见且不能直接进行设置;不设置时的缺省值为false
 显示缓存时间(cacheTime):设置部件内容显示的缓存时间,以分钟为单位,-1则表示没有时间限制,0或没有定制该属性则表示不设置缓存功能;例:最简单的情况是,只需要设置部件的实例名称即可(暂缓)
 设置程序(url),指定设置属性的辅助定义界面程序,即设置某个属性时,指定该属性的设置界面和程序的功能;url格式为:“程序url,宽度,高度”宽度和高可以不设置或只设置其中的一个,缺省为300,300;
如果设置了辅助设置的功能,则名称上鼠标显示为手型,系统使用模态窗口方式;
限制:只对文本输入框起作用;系统自动将当前文本输入框对象传递给模态窗体;设置程序需在关闭模态窗口前对文本输入框进行附值;限制:只对文本输入框起作用;系统自动将当前文本输入框对象传递给模态窗体;设置程序需在关闭模态窗口前对文本输入框进行附值;Url程序分系统和用户开发两种类型:
A、 系统类型:
 showcss(Css样式选择):自动读取当前模板种定义的样式,以样式的Class名称进行列表选择;
 showcolor(选择颜色),例:返回“#FF00CC”格式的数值;
   系统类型Url无需在部件成员属性中设置Url属性的宽度和高度;
B、 用户定义类型
用户根据实际情况,开发属性设置程序,通过前端JavaScrpt返回数据,例:
var dialogObj = window.dialogArguments;  //得到文本输入框(当前页全局变量)

function XXXX()   //该函数通过相关方式调用
{
  //进行相关校验
  //附值
if(dialogObj != null && dialogObj.tagName == "INPUT")
{
dialogObj.value = strSetting.replace(/,+$/g, "");
}
self.close();
   }
系统已提供的URL方式设置类型(见配置文件样例):
 数据库表选择
 数据字段选择
 栏目选择
 其他可拓展
 部件的背景图标(icon):指定部件的背景图标和样式;如果存在图标,则以图标的样式和大小进行显示;如果未指定图标,则以缺省的图标进行显示;
 是否只读(readonly):指定该属性在部件定制时是否可以手动编辑设置,该选项一般同辅助选择(url)配用;属性值为true/false,不设置时的缺省为false;
3、部件成员属性的数据结构说明
 一个属性中包含多个子属性,则以ACSII的逗号(,)进行分割,逗号称之为“属性分割符”;
 属性中除属性分割符外,如果还有其它的字符,则引用数据库字段时需使用格式<$字段名称$>进行标记;如:显示页面的调用参数,id=<$Id$>&type=1(<$Id$> 将被数据库字段的实际数据所替换),如果显示页面为show.jsp,则最终编译后的Url为show.jsp? id=112&type=1;
 true/false必须为小写;
 成员属性可以设置枚举数据类型,如:定义一个设置行数的属性<rows type="1" enum="1,2,3,4,5,6,7,8,不限">行数</rows>(则设置该属性将以下拉列表框的方式显示设置属性)
3、表单部件开发说明
A. 部件需实现net.business.engine.common..I_Component接口。
B. net.business.engine.common.BaseComponent是实现I_Component接口的一个抽象类,用户开发新的部件只需继承该类即可;
C. 实现doView(数据的显示)和doPost(数据的提交)方法,两个方法的实现可根据实际需要实现其中的一个或两个;
D. 在syscomponent.xml中进行配置部署;
E. 如果需要可开发系列属性辅助设置程序;
F. 用户开发的表单部件所需设置的属性根据需要自行定义
G. 新添加的表单部件将在表单定义的主界面的部件列表中显示

三、主要表单部件介绍
(以下部件均可设置按权限进行访问,除“工作流部件”外一般模板上可以拥有多个相同部件的实例)
1、查询数据列表
    支持多字段和不同类型字段的数据列表,支持条件查询、分页、多栏目多区域数据列表。可选择格式化显示数据列表内容的排列,可自定义分页的样式效果。如:所有的信息列表(包括分页),网站的列表、论坛的数据显示等。
按不同的用户设置访问条件,过滤记录
2、内容包含部件
    包含HTML、执行JSP、ASP页面,类似程序中的Include指令。
    指定包含的页面或内容,分两种情况:一是静态包含,可以在静态编译即将包含内容翻译并添加到指定的位置(暂缓---该步骤同动态内容的处理方式一样);二是动态包含,即被包含的内容会动态变化或执行,即在模板显示的同时执行相关的操作(如:显示自身的内容、进行数据访问地操作-----此时的操作必须写在doView方法中,采用特殊的方式执行);
    对于动态包含的部件,系统将参数以URL的方式进行传递(从request对象中取参数并传递)
部件如果有输出,则包含<body>、<html>等内容的标记将被过滤掉。
3、执行部件
    执行实现指定接口方法的类代码。该部件一般用于针对表单定义的二次开发。详细见“表单开发说明”。
4、模板引用
    引用其他的显示类型模板,在一个模板中引用其他的模板。
    注意:引用只能是引用显示类型模板,否则运行和编译将会出错。
5、栏目列表
    以接口的方式读取系统定义的栏目并格式化显示。如:应用系统的各级栏目的导航(带权限)。栏目列表部件具有集成功能,使用栏目列表部件可以独立的功能集成为完整应用。通过节点工厂类(必需输入部件属性,栏目读取的节点工厂类,实现net.business.engine.common. I_ItemNodeFactory接口)根据用户权限获取指定的栏目数据。
6、格式化编辑
    将数据字典或查询列表选项中的数据以目录树、单选、多选、下拉列表的方式,用于数据的编辑或查询。
    说明:可以指定任意数据库表的字段进行格式化编辑。
7、不定长数据编辑 
    实现一对多的数据库表关联的数据管理,编辑数据行时可以进行增行和删行的处理,批量数据的编辑提交处理(可以同时进行数据的增/删/改)。
8、在线编辑部件
    集成FCK editor功能,WEB实现在线编辑的图文混排功能功能。
9、工作流管理
    工作流管理部件须实现工作流与表单的接口net.business.engine.common.I_WorkFlow。
    通过工作流管理部件当前表单关联一个第三方的工作流一起运行,实现流程的流转、业务数据的处理。

相关文章
 承元表单系统之在线编辑部件 表单部件之查询数据列表部件
 表单部件之栏目列表部件 定制模板时如何使用表单部件
 表单部件之格式化编辑部件 表单系统之不定长数据编辑部件
 表单部件之内容包含  
 
 
Copyright 2005-2018 深圳市承元软件技术有限公司 版权所有  关键字:OA办公系统 OA软件开发
联系电话:0755-82501339  0755-82501387  公司地址:深圳市福田区彩田南路福建大厦B座17层
联系E-mail:chy@chysoft.net   邮编:518026    粤ICP备11095012号-1