基于XML的动态表单设计
自定义表单设计思路
自定义表单设计思路为了满足与现有工作流系统的耦合,在对现有工作流进行适当修改的基础上,定制表单系统(包括与工作流相关的)的设计计划如下:1。
基本功能模块:部门、角色、人员信息、团队和组、职位(所有这些都可能是潜在的流程参与者)在现有基础上适当扩展。
2。
权限管理:在操作权限中增加字段权限和记录权限,即表单权限、记录权限和字段权限。
3。
表单的基本信息:表单对应的表实体和实体属性的定义;4。
可视化表单定制工具:实现基于网络的图形表单设计器,努力实现可拖动控件,不需要安装任何客户端控件;困难在于数据绑定,即页面元素到数据表字段的映射。
此外,动态数据存储结构、表间数据校验和计算、主从表建立等问题也是难点。
因此,相应的样式库、脚本库、函数库、模板库等。
应该建立。
5。
除了可视化的表单定制工具外,还应具有表单加载、表单分析、表单数据处理和表单存储功能;6.设计起点:努力为未来的系统实现准备(即系统的运行已经是过程驱动或服务驱动的),以面向服务或面向过程的方式构建系统,使未来的系统维护不会停留在代码级维护水平。
7。
设计目标:我们开发的定制表单系统是实现工作流和定制表单松耦合的好方法。
它使用自定义表单,能够有效地将工作流与工作流过程定义方法和工作流系统结构结合起来。
8.整个表单系统的设计采用分层建模的方法进行设计和开发,分为数据层建模、业务层建模和表示层建模9。
采用基于描述的方法来提高表单的可维护性、可扩展性和灵活性。
表单数据模型、业务模型和表示模型是否用XML描述,需要讨论后确定(设计的表单以XML的形式保存在数据库的指定表中);10。
最初假设我们开发的自定义表单系统是基于XForms标准,而不是传统的HTML表单标准。
表单数据、行为和表示的分类也需要在设计者表单模板+数据中得到反映,设计者表单模板+数据本质上是以XML为中心的,实现了表单数据模型和表示层(表单格式)的分离创建表单的一般步骤如下: 步骤1:定义表单的基本信息;的第二步是建立表单设计者的数学模型。
基于XML的PDM与AutoCAD属性双向映射
机制 , 实现 了 P M 系统 数 据 与 A t A D uo D文 件 内部 数 据 的 双 向 交换 , P M 系统 和 C D 系统 之 间 实现 无 缝 集 成 提供 了新 C 为 D A
关 键 词 : D X A tC P M ML uo AD 属 性 映 射
中图 分 类号 :H16 T 3 1 T 6 ;P 1
P DM 系 统 中 则 对 应 有 E OM —F r P B B om、 P OM —F r 和 o 表 单 。 BOM 节 点 一 般 都 o 3 m 因
多专 注 于 开 发 专 用 的数 据 接 口 来 实 现 数 据 的传 输 f『 , l2 11 但 这 种 方 法 因 企 业 标 题 栏 形 式 的 多 样 性 及 操 作 平 台和
后 续 C P和 C AP AM 的 结 构 化 数 据 源 信 息 , 对 于 结 构 但
一
,
结 构 化 数 据 , 以 物 料 清 单 ( l o Maeil B 它 Bi f tra , OM) 组 l 为
织 核 心 。 DM 中 的 BO 一 般 采 用 多 层 树 状 模 型 来 描 P M
同 时 , 性 的 定 义 也 能 满 足 企 业 从 不 同 角 度 进 行 物 料 属 信 息 的检 索 而 达 到 信 息 共 享 的要 求 。 按 产 品开 发过 程 中的设 计 、 艺 和试 制 3 阶段 , 工 个
将 BO 分 为 E OM 、 P M 和 MBOM 种 】 由 此 , M B P BO 3 , 在
取 技 术 的 基 础 上 , 合 XML在 数 据 交 换 上 的 诸 多 优 结
点 , P 对 DM 系 统 与 Auo AD 系 统 之 间 属 性 双 向 映 射 tC
基于动态表单的数据填报系统设计与实现
125摘要:随着信息技术的不断发展,数据在各行各业都发挥着越来越重要的作用,随之而来的问题是人们需要收集填报的数据也越来越多。
为了解决传统数据收集过程中遇到的数据表格单一、归集汇总繁琐易出错等问题。
论文设计并实现了一种基于动态表单的数据填报系统。
系统基于网络平台,采用B/S架构模式,界面简洁大方,操作简单,通过使用本系统,数据收集人员在线定制表格元素,填报者只需登录网站,提交信息即可,而其他细节都由程序自动完成,减少人工参与环节。
本系统的实现一方面可以提高数据填报效率,另一方面可以解决传统数据填报工作中耗费时间和精力、数据有差错、收集整理困难等问题,对于提高数据归集利用效率、更好发挥数据价值具有十分重要的实际价值。
关键词:动态表单;数据填报;数据管理;系统设计一、前言表格作为数据良好的载体,在各个领域得到广泛的使用,特别在当今自动化工作中,表格在各个部门间进行传递数据发挥了巨大的作用。
早期的数据统计表单大多采用纸张制作而成,可重用性差,而且浪费资源,从表格的制定、分发,再到填写汇总,整个过程繁琐而复杂,尤其当数据填报单位处在分散的地区时,统计数据的时效性将受到极大的耽搁[1]。
随着信息化技术的不断发展,开始逐渐采用电子化的方式收集填报数据,但当前应用比较广泛的方式主要包括Excel 电子表格和信息系统两种方式。
Excel 表格的方式仍然存在人工分发、收集的问题,不能满足对时效性和安全性要求较高的数据填报工作使用,而信息系统的方式会因系统内置表格相对固定导致不能灵活支持多种数据填报的使用需要。
因此,设计并实现一种能够动态设计表格,并能通过网络快速分发汇集的数据填报系统对提高工作效率具有一定的现实意义。
二、系统需求分析及功能设计(一)系统需求分析系统应具有相对完备的功能模块,通过使用本系统,可以解决当前数据汇集过程中遇到的问题,提高表格制作灵活性,简化表格分发汇总流程,提高数据填报归集应用质量和效率。
自定义表单设计思路
自定义表单设计思路为了满足和现有工作流系统的耦合,在适当改动现有工作流的基础上,对自定义表单系统(包括与工作流相关)的设计做出如下的规划:1.基础功能模块:部门、角色、人员信息、班组、岗位(这些都可能是潜在的流程参与者)在现有基础上适当扩展;2.权限管理:需要在操作权限的基础上增加字段权限和记录权限,也就是要实现表单权限、记录权限、字段权限;3.表单基本信息:表单对应的表实体的定义、实体属性定义等等;4.可视化的表单定制工具:实现基于web的图形化表单设计器,争取做到可拖拽控件,无需安装任何客户端控件;——难点为数据绑定,也就是页面元素与数据表字段的映射,另外动态数据存储结构问题、表间数据校验和计算、建立主从表的问题是难点;因此要建立相对应的样式库、脚本库、函数库、模板库等等。
5.除了可视化表单定制工具外应有:表单加载、表单解析、表单数据处理和表单存储功能;6.设计出发点:争取为今后我们做系统实现以面向服务或面向流程的方式构建系统做准备(即系统的运行已流程驱动或服务驱动),做到随需而变,使得将来的系统的维护不要停留在代码级的维护层面上;7.设计目标:我们开发出的自定义表单系统做到工作流和自定义表单松耦合实现为好,用户自定义表单并能与工作流有效结合的工作流过程定义方法及工作流系统结构;8.整个表单系统的设计采用分层建模方法进行设计与开发,可以分为:数据层建模、业务层建模以及表现层建模9.采用基于描述的方法来提高表单的可维护性、可扩展性以及灵活性,是否通过采用XML来描述表单数据模型、业务模型和表示模型需要讨论后确定(设计完成的表单以XML 形式保存到数据库指定表中);10.初步设想我们开发的自定义表单系统是基于XForms标准而非基于传统的HTML表单标准,分类表单数据,行为与表示也需要在设计器中体现出来——表单模板+数据,本质上是以XML为核心并且实现表单数据模型与表现层(表单格式)分离。
大致的建立表单步骤如下:第一步:定义表单基本信息;第二步:表单设计器数学模型的建立,表单设计器引擎是整个表单设计的核心;第三步:通过表单设计器定义表单样式和所有字段详细信息;第四步:定义对表单的各类基本操作(仅仅针对的是增、删、改、查的基本操作)。
java自定义表单动态表单表单设计器工作流引擎flowable项目源码
java⾃定义表单动态表单表单设计器⼯作流引擎flowable项⽬源码特别注意:本代码为 Springboot ⼯作流前后分离 + 跨域版本(权限控制到菜单和按钮)后台框架:springboot2.3.0+ Flowable6.5.0+ mybaits+maven+接⼝前端页⾯:html +vue.js 形式 jquery ajax 异步跨域 json 格式数据交互前后分离,前后台分开部署(特别注意,前端⽤的vue.js, 就是html页⾯引⼊vue.js形式,⽤tomcat部署运⾏,更适合后台开发者1.代码⽣成器: [正反双向](单表、主表、明细表、树形表,快速开发利器)freemaker模版技术 ,0个代码不⽤写,⽣成完整的⼀个模块,带页⾯、建表sql脚本、处理类、service等完整模块2.多数据源:(⽀持同时连接⽆数个数据库,可以不同的模块连接不同数的据库)⽀持N个数据源3.阿⾥数据库连接池druid,安全权限框架 shiro(菜单权限和按钮权限), 缓存框架 ehcache4.代码编辑器,在线模版编辑,仿开发⼯具编辑器5.调⽤摄像头拍照⾃定义裁剪编辑头像,头像图⽚⾊度调节6.websocket 及时站内信并声⾳提醒、实时在线管理、websocket及时刷新页⾯(完胜ajax技术)7.Flowable⼯作流⽬前公认⽐较好⽤的⼯作流引擎,集成web流程设计器⼯作流模块-------------------------------1.模型管理:web在线流程设计器、导⼊导出xml、复制流程、部署流程2.流程管理:导⼊导出流程资源⽂件、查看流程图、根据流程实例反射出流程模型、激活挂起3.运⾏中流程:查看流程信息、当前任务节点、当前流程图、作废暂停流程、指派待办⼈、⾃由跳转4.历史的流程:查看流程信息、流程⽤时、流程状态、查看任务发起⼈信息5.待办任务:查看本⼈个⼈任务以及本⾓⾊下的任务、办理、驳回、作废、指派⼀下代理⼈6.已办任务:查看⾃⼰办理过的任务以及流程信息、流程图、流程状态(作废驳回正常完成)办理任务时候可以选择⽤户进⾏抄送,就是给被抄送⼈发送站内信通知当前审批意见以及备注信息注:当办理完当前任务时,下⼀任务待办⼈会即时通讯收到新任务消息提醒,当作废和完结任务时,任务发起⼈会收到站内信消息通知------------------------------------------- 系统模块1. 权限管理:点开⼆级菜单进⼊三级菜单显⽰⾓⾊(基础权限)和按钮权限⾓⾊(基础权限): 分⾓⾊组和⾓⾊,独⽴分配菜单权限和增删改查权限。
基于XML的表单设计器构件的设计与实现
基 于 X 表 单 设 计 器 构 件 的 设 计 与 实 现 ML的
王瑞霞 ,隋宏伟 ,刘 弘
(. 1 山东工 艺美术 学院 网络 中心 ,山 东 济 南 2 0 0 5 3 0;2 山东师 范大 学 信 息科 学与 工程 学院 ,山东 济 南 2 0 1 ) . 504
摘
要 :针 对 We 用 系统 中用户 对表单 的 需求不 断变化 的普遍 现 象, b应 设计 了基 于 X L的表 单设计 器构件 , M 实
( . e ok& I om t nCnr, h no gU i rt o r & D s n, ia h n og20 0 1N t r w n r ai et S ad n nv sy fAt f o e e i eg J nS a dn 5 30,C ia 、colfI om t nSi c i n hn ;2 Sho o n rai c ne& f o e E gnei S ad n om lU irt J a h nog2 0 1 C ia n i r g, h nogN ra n esy, i nSa d n 50 hn ) e n v i n 4,
rdlc动态加载xml实现图表宽度(高度)自适应
Rdlc 动态加载xml 实现图表宽度(高度)自适应Rdlc 动态加载xml 实现图表宽度(高度)自适应2011-07-23 10:28bymr.张,442visits,收藏,编辑微软提供的Rdlc 报表为我们提供的很大的便利,功能强大,使用简单。
但在使用过程中总是有那么点美中不足:图表大小是固定的,不能根据内容自适应大小。
这就造成了如下情况,看图说话:数据少时图表比较稀疏数据多时图表很挤这对于我们追求完美的程序员来说是不能接收的,坚决要改造。
思路:Rdlc 是基于xml的,我们可以通过动态修改rdlc的xml数据,来更改rdlc 定义的图表大小。
宽度的计算:类别总数*序列数*(条形单位宽度+类别间隔)宽度计算根据图表的类型不同计算公式也不同,上述公式只适合"简单柱形图""简单条形图",其它类型的图表以后解决。
Rdlc报表xml解析:这里我们只需要动态改变图表的宽度和高度,需要知道如下几个节点:<Chart Name="chart1"> 中间数据省略</Chart> xpath 路径为: Report/Body/ ReportItems/ ChartChart的类型Type节点: <Chart><Type>Column</Type> </Chart> 其中Type为Column 代表简单柱形图,Type 为Bar 代表简单条形图Chart的宽度Width 节点: <Chart><Width>23cm</Width> </Chart>Chart的高度Height 节点: <Chart><Height>11.5cm</Height> </Chart>部分代码:public class RdlcReportHelper{private XmlDocument _rdlcDoc;private XmlNode _root;private string _chartName;private double _perWidth = 0.15; //厘米private XPathDocument xpathdoc;private XPathNavigator xnv;private XmlNamespaceManager xnm;private string[] _chartType = new string[] { "Bar", "Column" };public RdlcReportHelper(string path){//加载xml_rdlcDoc = new XmlDocument();_rdlcDoc.Load(path);_root = _stChild;xnm = newXmlNamespaceManager(_Table);xnm.AddNamespace("rd","/SQLServer/reporting/report designer");xnm.AddNamespace("default","/sqlserver/reporting/2005/01 /reportdefinition");xnm.PushScope();xpathdoc = new XPathDocument(path);xnv = xpathdoc.CreateNavigator();}/// <summary>/// 转换xml/// </summary>/// <returns></returns>public MemoryStream AutoSizeReport(){…………XmlNode ChartNode =_root.SelectSingleNode("//default:Body/default:ReportItem s/default:Chart[@Name='" + _chartName + "']", xnm); //查找Chart 节点XmlNode ChartTypeNode =ChartNode.SelectSingleNode("default:Type", xnm); //查找图表类型节点if (w != 0){if (ChartTypeNode.InnerText == "Bar"){XmlNode heightNode =ChartNode.SelectSingleNode("default:Height", xnm); //设置高度heightNode.InnerText = w + "cm";}else if (ChartTypeNode.InnerText == "Column"){XmlNode widthNode =ChartNode.SelectSingleNode("default:Width", xnm); //设置宽度widthNode.InnerText = w + "cm";}}}}如何使用:使用设计器设计好报表,设置要自动伸展的图表名称,类别字段、序列字段、值字段和单位宽度。
Android中的动画(XML方式)实践(逐帧动画与补间动画)
Android中的动画(XML方式)实践(逐帧动画与补间动画)属性动画。
逐帧动画:基于单元格的动画,每一帧显示一个不同的drawable。
一帧一帧的顺序播放。
补间动画:补间动画应用于view,通过对其位置,大小,旋转和透明度的改变,让view动起来。
属性动画:属性动画几乎可以让应用程序中任何对象动起来。
所有补间动画的内容,都可以通过属性动画实现。
下面逐一介绍:注:这篇文章偏重于以xml方式实现相应动画效果。
逐帧动画逐帧动画(Frame-by-frame Animations)从字面上理解就是一帧一帧的播放图片,类似卡通动画。
目标:实现如下图效果:loading步骤:1.在res/drawable目录下新建loading_frame.xml文件:loading_frame.xml根节点是animation-list,内部由一到多个<item>节点组成oneshot属性表示是否只播放一次(true:一次;false:循环播放).item节点声明是一个动画帧,其中 android:drawable属性定义要显示的图像,android:druation代表此帧持续的时间,毫秒为单位。
注:在AndroidStudio中强制规定带animation-list节点xml文件必须放在res/drawable文件下(eclipse(ADT)貌似支持任意放res/drawable和res/anim)。
在androidStudio中若放在res/anim下会报错:错误提示:1错误提示:22.新建页面布局activity_frame.xml:如上图布局很简单上面一个imageview,下面两个button,都水平居中(相对于parent)。
3.新建FrameActivityframeActivity主要逻辑代码当然为了避免animationDrawable带来的内存泄露,建议在onDestroy方法中做如下操作:onDestroy注意:帧数比较多的动画不建议用逐帧动画实现,其一会显得卡顿,其二容易引起OOM。
Livecycle动态模板开发手册
编号:V1.0 Livecycle动态模板开发手册2015年9月目录1单证模板设计 (3)1.1创建表单 (3)1.2绘制表单 (5)1.2.1控件介绍 (5)1.2.2绘制过程 (11)1.3绑定数据 (14)1.4模板测试 (17)2数据文件生成 (19)3IDPDocEngineAgent安装配置 (19)1单证模板设计1.1创建表单1.使用LiveCycle Designer工具开发模板,首先打开工具,出现如下所示的页面,点击“新建表单”2.选择“使用空白表单”点击“下一步”。
3.页面大小可以选择“默认值”,也可以选择“A4纸”,或者其他的一些页面方向可以选择“纵向”,或者是“横向”,一般都是选择“纵向”。
页面选择“1”。
点击“下一步”4.“添加电子表单按钮”与“添加打印按钮”可以勾选,也可以不勾选,一般不勾选点击完成5.出现如下所示的空白表单—表单1(由“主页面”以及“无标题子表单”构成的)1.2绘制表单1.2.1控件介绍1.2.1.1页面控件如上图所示,一个表单中主要包含两类页面元素:1.主页面主页面的名称通常以英文命名,支持定义多个主页面1)页面设置当需要使用特殊纸型时,需要在主页面内进行定义。
如下图所示:2)内容区域设置每个主页面中只能存在一个内容区域(region-body区域),每个主页面中元素可以按照下图分5个区域放置,除内容区外其他支持的4区域每个都对应一个子表单subform,其名称分别为:region-before,region-after,region-start和region-end,并且只能设计为静态(引用)元素。
主页面其他4个区域不能与内容区域重合。
内容区域限定了以该内容区域为基础的普通页面的可绘制范围,通常我们可以理解为页边距。
在一般场景下,如果没有页头、页尾、侧边文字等需要打印在每一页上的内容,仅绘制内容区域范围即可。
内容区域的大小可以通过内容区域的布局属性来进行设置,如下图所示:2.普通页面除每页都需要打印的一些基础内容外,所有在单证中需要显示的表单元素均需要绘制在普通页面上。
ACAA电子出版设计师模拟题
1. 在 InDesgn 中进行页面设置时,装订方向分为左侧书脊和右侧书脊,在图书杂志出版中,目前只有( )等国家在部分书籍中使用右侧书脊装订的方式。
O 中国、日本、国、中国、O 美国、日本、国、中国、O 马来西亚、中国、日本、国、中国、O 新加坡、英国、美国、中国2. 在一般的出版物或印刷品设计时,版面出血边尺寸通常都设置为 ( ) mm,但也有例外会设置的稍大或稍小。
O 5O 15O 3O 23. 在描述印刷用纸时,通常都用克重来形容,如 128g 、250g 、300g 等,这其中的克重是指()的重量。
O 每纸O 每半纸O 每平方米纸4. 在设计中,有时会接触到 PANTONE 的色标,其中当印刷类色标中出现诸如: PANTONE100 C 或 PANTONE 100 U 时,其中 C 代表铜版纸,而 U 则代表( ) 。
O 新闻纸O 胶版纸O 特种纸O 卫生纸5. 在使用 InDesign 进行文档设置时,当选择左侧装订且使用对页模式时,边距与分栏选项中的上、下、左、右边距分别对应的是版面俗称的( ) 。
O 天头、地脚、订口、切口O 天头、订口、切口、地脚O 地脚、订口、天头、切口6. 目前 PDF 格式在越来越多的出版领域被广泛利用, PDF 文件格式的中文名称叫做 ( ),PDF 文件可以将文字、字型、格式、颜色及独立于设备和分辨率的图形图像等封装在一个文件中, PDF 文件还可以包含超文本、声音和动态影像等电子信息,支持特长文件,集成度和安全可靠性都较高。
O EPS 格式O 便携式文档格式O 纯文本格式O 多信息文本格式7. 在 InDesign 的文档,是否可以置入带有图层的 PSD 文件和 PDF 文件。
( )O 是O 否8. 在使用 InDesign 进行版面编排时,能否一次性向页面置入多页 PDF 文档页面?O 能O 不能9. 当使用 InDesign 输出带有超的 PDF 文档后,浏览 PDF 文档,会发现没有办法转到相关,是因为在导出为 PDF 文件时没有选择( )选项。
element form表单必填项文案动态展示
标题:element form表单必填项文案动态展示随着互联网的发展,作为用户与网页进行交互的重要界面元素之一,表单在网页设计中占据着至关重要的地位。
表单的设计与交互对于提高用户体验,增加用户转化率具有重要的作用。
而在表单设计中,必填项的标识和提示,是影响用户是否完成表单填写的重要因素之一。
在Element组件库中,表单必填项文案动态展示的功能,为开发者提供了更加灵活和便捷的方式来展示和提示必填项,从而提高用户填写表单的准确性和效率。
一、什么是element form表单必填项文案动态展示在传统的表单设计中,往往需要给必填项添加标识符号“*” 或者在表单旁边的文字提示中标明“*”符号,来告知用户该项为必填项。
而在element form表单必填项文案动态展示中,则提供了更加灵活的方式来展示必填项标识。
开发者可以根据具体的需求和设计风格,在用户填写表单的过程中动态展示必填项的文案提示,为用户提供更加清晰、直观的提示,增强用户对于表单填写的主动性和参与度。
二、element form表单必填项文案动态展示的优势1. 提升用户体验:动态展示必填项文案可以让用户在填写表单的过程中更加清晰地了解哪些项是必填的,有助于提升用户的填写效率和体验。
2. 灵活性强:开发者可以根据具体的需求和设计风格,自定义必填项的动态展示方式,从而更好地融入到整体的页面设计中。
3. 提高表单准确性:通过动态展示必填项文案,可以让用户更加注意并重视必填项的填写,从而提高表单填写的准确性和完整性。
三、element form表单必填项文案动态展示的实现方式1. 在element form表单组件中,通过设置必填项的 rules 属性来定义每个表单项的校验规则,包括必填项的提示文案、校验规则等。
```javascript<el-form :rules="formRules" ref="formData"><el-form-item label="尊称" prop="name"><el-input v-model=""></el-input></el-form-item></el-form>```2. 在 rules 属性中,可以根据具体的需求和设计风格,定义必填项的提示文案,例如:```javascriptdata() {// 定义表单校验规则var checkName = (rule, value, callback) => {if (value === '') {callback(new Error('请输入尊称')); // 动态展示必填项提示文案 } else {callback();}};return {formRules: {name: [{ required: true, message: '请输入尊称', trigger: 'blur', validator: checkName } // 设置必填项的提示文案]}};}```3. 通过设置 rules 属性中的 message 来动态展示必填项的提示文案,当用户在填写表单时,如果未填写必填项,则会根据规则动态展示相应的提示文案,提醒用户进行填写。
Android开发教程之使用 Android 和 XML 构建动态用户界面(一)
这个步骤将启动 Eclipse New project 向导。选择 Android Project(针对 Android 的专业 Java 环 境)。确保向项目提供一个有效的标识符(我使用 的是 XMLGUI)。为匹配本教程中介绍的解决方案, 在 Properties 下面,指定应用程序名为 XML GUI, 包名为 com.msi.ibm。选择 Create Activity 复选 框并将 Activity name 指定为 XmlGui,如 图 4 所示。
xmlgui1-post.php xmlgui2.xml
Android Activity 的入口点 一个表单的高级数据模型和方法 表示一个表单域,持有一个表单的每 个字段的元数据 实现一个文本框类型用户界面元素 实现一个下拉列表类型用户界面元素 使用上述类处理一个表单 应用程序用户界面主页 此 Android 应用程序的部署描述符 收集 Robotics 比赛注册信息的样例表 单 处理表单提交的 PHP 脚本 汽车维修习惯调查的样例表单
中序干净地构建并在 Android Emulator 中运行是一个最佳实践。注意,有 时应用程序直到您编辑并保存 Java 源文件时才会构建。 这导致 Android SDK 工具自动在 gen 文件夹中生成 一些文件。如果 Eclipse 环境中的 Problems 选项卡没 有显示任何条目,那么您可以测试这个应用程序。 要测试应用程序,创建一个 Run 配置,如 图 6 所示。 在 Android Application 列表中,选择 XmlGui。确保 以下值出现:XmlGui 位于 Name 字段中,XMLGUI 位于 Project 字段中,com.msi.ibm.XmlGui 位于 Launch 字段中。单击 Run。
在 Excel 2003 中导入 XML 映射、XML 列表和动态图表源
在Excel 2003 中导入XML 映射、XML 列表和动态图表源发布日期: 11/12/2004 |更新日期: 11/12/2004John R. DurantMicrosoft Corporation适用于:Microsoft ® Office Excel 2003摘要:Web 文章Web Queries and Dynamic Chart Data in Microsoft®Excel 2002演示了如何使用Web 查询将数据导入到Microsoft®Excel 2002 中,然后创建一个可以动态响应源数据更改的图表。
本文介绍Microsoft® Office Excel 2003 如何取得相同的结果,而只使用少量的代码、较少的繁琐以及具有更大的潜力。
与此同时,您将更深入地了解Excel 2003 的XML 功能,最重要的是XML 映射、XML 列表、用于导入XML 的新增例程,以及如何使用动态填充的XML 列表作为图表的数据源。
本页内容业务方案Excel 2003 中的XML 映射Excel 列表将XML 数据导入Excel动态图表源小结业务方案假设某个销售经理会定期查看销售数据。
她要指定一个日期范围,然后合计销售数据。
特别是,她希望查看指定范围内按天总结的销售数字。
她希望在看到原始数据的同时也可以看到显示指定日期范围内的总计销售趋势的图表。
针对她的每个要求创建显式报表似乎不切实际。
为此,必须有人详细审查输入数据,然后为组织内可能存在的大量方案创建独立的电子表格报表。
这样的话,开发人员和IT 员工的负担就非常大,尤其是考虑到组织内并不只有一个部门的销售经理具有这种要求。
更好的方法是使Excel 电子表格可以自适应提供销售经理所需的各种报表,同时这些报表可以被其他部门的销售经理重复使用,并根据他们的相似需要进行调整。
本文说明如何使用Microsoft® Office Excel 2003 中的功能来导入数据,以及将图表动态绑定到数据。
利用REPORTS BULIDER结合RTF进行XML报表开发
本文介绍用ORACLE REPORTS BULIDER做为数据源,结合WORD创建RTF模板,制作XML报表的过程:一、用REPORTS BULIDER设计RDF报表,写好SQL语句二、在EBS中定义可执行并发程序三、在EBS中定义并发程序,注意输出格式选择XML四、将报表挂到请求,分配权限后执行报表,结果如下:五、将网页另存为XML文件,以备制作RTF模板时使用六、编辑RTF模板,需要安装Oracle BI Publisher Desktop安装完后在开始菜单可以看到相关工具七、打开WORD,可以看到多了一个功能面板,接下来开始编辑RTF模板:点示例XML打开前面保存的XML文件然后点击表向导,(也可以直接点所有字段按钮导入所有字段,然后根据需要删除不需要的字段)选择数据集选择字段选择分选择 序 式完 后 字段 :入页 页报表,可选择PDF TML EXCEL 格式后将WORD保存为RTF格式:、接下来在EBS中 入Oracle XML Publisher 定义数据,数字定义的 需 可执行的 字一 , 报表请求时 配到模板文件, 示一 XML数据,Oracle XML Publisher 需要用 分配、定义模板, 保存的RTF文件、 行后出 ,如下:出 :一、 请求编 , 过以下SQL语句 到 的 文件:SELECT cpp co curre t re uest id re id cp ode a e cp lo ile a e FROM d co c pp actio s cpp d co curre t processes cpW ERE cpp processor id cp co curre t process idA D cpp actio t peA D cpp co curre t re uest id二、使用FTP 件下 文件:分 出:击字段打开 , 制 面的 :打开WORD :点 文字 制的 , re 的 :保存 到模板重要:在编辑RTF模板生成字段前设置选项:设置表单字段大小为向后兼容可避免上图窗体域帮助文字的内容出现?ref的内容四、 行报表在选 中可以选择输出格式五、 行完看输出结果:RTF格式:XLS格式:TML格式:。
自定义表单设计思路
自定义表单设计思路为了满足和现有工作流系统的耦合,在适当改动现有工作流的基础上,对自定义表单系统(包括与工作流相关)的设计做出如下的规划:1. 基础功能模块:部门、角色、人员信息、班组、岗位(这些都可能是潜在的流程参与者)在现有基础上适当扩展;2. 权限管理:需要在操作权限的基础上增加字段权限和记录权限,也就是要实现表单权限、记录权限、字段权限;3. 表单基本信息:表单对应的表实体的定义、实体属性定义等等;4. 可视化的表单定制工具:实现基于web的图形化表单设计器,争取做到可拖拽控件,无需安装任何客户端控件;——难点为数据绑定,也就是页面元素与数据表字段的映射,另外动态数据存储结构问题、表间数据校验和计算、建立主从表的问题是难点;因此要建立相对应的样式库、脚本库、函数库、模板库等等。
5. 除了可视化表单定制工具外应有:表单加载、表单解析、表单数据处理和表单存储功能;6. 设计出发点:争取为今后我们做系统实现以面向服务或面向流程的方式构建系统做准备(即系统的运行已流程驱动或服务驱动),做到随需而变,使得将来的系统的维护不要停留在代码级的维护层面上;7. 设计目标:我们开发出的自定义表单系统做到工作流和自定义表单松耦合实现为好,用户自定义表单并能与工作流有效结合的工作流过程定义方法及工作流系统结构;8. 整个表单系统的设计采用分层建模方法进行设计与开发,可以分为:数据层建模、业务层建模以及表现层建模9. 采用基于描述的方法来提高表单的可维护性、可扩展性以及灵活性,是否通过采用XML来描述表单数据模型、业务模型和表示模型需要讨论后确定(设计完成的表单以XML形式保存到数据库指定表中);10. 初步设想我们开发的自定义表单系统是基于XForms标准而非基于传统的HTML表单标准,分类表单数据,行为与表示也需要在设计器中体现出来——表单模板+数据,本质上是以XML为核心并且实现表单数据模型与表现层(表单格式)分离。
Offic2007教程系列7(InfoPath 2007 Solution)
InfoPath 2007 Solution王瑜 高级研究员 GrapeCity MSN: FudanWangyu@ Email: leo.wang@本次课程内容包括z InfoPath概览 z 由2003到2007 z 模板组件 z 模板导入 z InfoPath 2007 电子表单解决方案 z InfoPath 2007与其他系统集成 z What we can do?InfoPath 概览z 首次出现在Office 2003中 z Rich-client端程序 z 下一代电子表单处理平台z 收集商业数据z 纯XML数据 z 动态表单 z 多种数据展现和验证模式z 商业流程自动化z 与后台应用系统集成z 快速开发解决方案– 条件格式, 规则 – 支持内嵌脚本和托管代码深入InfoPath表单Template (XSN)data (.XML)Schema (XSD) Define of solution (XSF) URL or URN default (XML) logic (JS, DLL) view (XSLT)InfoPath所面临的挑战InfoPath非常棒, 如果能提供以下支持就更棒了 : z 让更多的用户能够使用(smart vs thin clients) z 更好地支持离线模式 z 更好地与其他Office组件集成 z 更好地集成到我们自己的应用程序中 z 更好地与后台应用系统集成 z 编程模式更加清晰InfoPath 2007 十大增强1. InfoPath直接嵌入Outlook 2. 将业务流程处理扩展到防火墙之外 3. 导入Word和Excel文档 4. 预定义表单部件. 5. 将表单数据转换为PDF和XPS文档.InfoPath 2007 十大增强6. 基于InfoPath 2007 and OSS 2007实现工作流 7. 表单同时支持网页浏览器和InfoPath 2007客户端 8. 增强的表单数据保护模式 9. 增强的表单开发和部署模式 10. 与 2005集成模板部件(Template Parts)z 一些可重用的, 用于构成表单的部件 z 自动更新 z 支持特性z 条件格式 z 主数据源和辅助数据源 z 规则, 数据验证, 条件格式 z 公式和计算字段z 不支持代码模板部件模板导入XYZ Document Your Importer InfoPath DesignerXSN Folder (XSF, etc)z 内建支持 Word, Excel文档 z 可扩展的架构: IFormTemplateConverter z 可以与Design Checker配合工作导入Word文档InfoPath 2007 电子表单解决方案Intranet Extranet / InternetBrowser BrowserInfoPath Client (Design Mode)Office 2007 servers Forms ServicesInfoPath Client (Edit Mode)InfoPath Client (Edit Mode)InfoPath表单提交模式的选择z 智能客户端(Smart Client)– – – – Outlook中使用InfoPath 离线数据缓存 直接输出到其他Office应用程序 支持IRMz 瘦客户端(Thin Client)– 基于服务器端的表单管理 – 表单呈现在浏览器中 – 支持各种平台和浏览器• IE 6+, Safari, Netscape, Firefox (latest versions) • Windows, Mac, Linux, Unix • Mobile devices (HTML compatible browsers)InfoPath表单交互模式: 智能客户端Office 2007 servers InfoPath Client Download XSN, XMLXSNWSSXSN, XML loaded Business logic execution Rendering Validation Execute calculations Execute rules Editing actionsInfoPath表单交互模式:网页浏览器Postback event log via XMLHTTP BrowserOffice 2007 serversXSN, XML loaded Business logic execution Replay event logGenerateASPX WSSDownload script and data array Return updated data arrayGenerate and render HTML (using script) Validation Execute calculations Execute rules Editing actions (All using script)XSN设计InfoPath模板z 服务器/客户端设计模式z 智能客户端与浏览器端合二为一z支持条件格式, 数据校验, 规则,计算字段, 数据连接Designerz 仅智能客户端支持z离线数据缓存,自定义的Activex控件, 主细表,Task Pane, IRM, 脚本代码z 表单设计阶段即可验证是否可以在浏览器上正 常运行InfoPath 2007部署到 WSS 3.0上InfoPath 2007 集成z 网页集成– 表单嵌入ASPX网页z 应用程序集成– InfoPath作为Activex控件直接嵌入第三方应用程序z 电子邮件集成– Outlook中嵌入InfoPath表单z 与其他Office 产品集成– 工作流 – 文档属性面板InfoPath 2007 集成InfoPath无处不在对.NET开发人员的支持z全托管代码(CLR 2.0): 不再需要使用PIA z使用System.Xml, 废弃MSXMLz更好的开发体验–Visual Studio Tools for Office (VSTO)•直接在2005里面设计表单我们的机会z构建更灵活的InfoPath解决方案–使用InfoPath作为解决方案的前端组件跨越internet, intranet)z在各种第三方系统里面嵌入InfoPath表单–网页程序–Windows程序–手持移动设备z围绕InfoPath的二次开发–创建各种表单模板和转换器–创建各种插件–定制TaskPanes–创建工作流组件小结z InfoPath: 基于纯XML格式的电子表单设计和填写工具.z InfoPath 2007中的新特性使我们开发出的电子表单解决方案更加强大,更具灵活性.z InfoPath已经成为整个信息工作者解决方案中的一个重要角色. 甚至可以独立支撑起一个完整的数据流转和处理解决方案.Thank You获取更多MSDN资源•MSDN中文网站/china/msdn•MSDN中文网络广播•MSDN Flash/china/newsletter/case/ msdn.aspx•MSDN开发中心/china/msdn/Developer Center/default.mspxQuestion & Answer如需提出问题,请单击“提问”按钮并在随后显示的浮动面板中输入问题内容。
Krpano+Xml(开发文档)
viewer 文件夹
本文档使用 看云 构建
-7-
文件说明
krpano 下载包的官方插件、引擎、案例的存放位置,同时也是让案例文件夹能够正确显示 的 viewer 所在的位置。其中plugins是当前版本的所有官方插件;examples是官方提供的 案例。 小贴士 自身项目的 viewer(js和swf)会在droplet过程中自动生成无需从这里拷贝
Droplet 说明:
本文档使用 看云 构建
- 10 -
文件说明
基于 kmakemultires 工具. 配置文件: singleswf.config 默认模版/皮肤配置文件: defaultbuttons.skin
MAKE PANO (FLAT) Droplet
用法说明:
生成平面切片多分辨率图像. 制作平面图像. 输出时既定为平面图像. 只有特定的切片在需要时载入. 没有尺寸/分辨率限制. 包含有默认导航按钮的皮肤,针对特定的视角. 支持Flash与HTML5.
720°全景漫游:
本文档使用 看云 构建
-4-
概述
全景图
全景图(这里特指球面全景图)是指一种图片宽高比为2比1的包含了360°x180°空间的图 片,例如8000*4000的jpg图片或tiff图片等。 注:宽高比2:1为水平方向(360):垂直方向(180)
Krpano简介
krpano是一款全景漫游制作软件和工具。其具有以下特点:
概述 文件说明 载入全景 krpano xml语法 krpano xml内置元素
特殊属性 krpano preview image view area display control cursors autorotate plugin/layer hotspot events action contextmenu network memory security lensflareset lensflare data scene style include progress(废弃) textstyle(废弃) action脚本语法 全局变量 逻辑、流程
BIRT 使用xml动态数据源总结
BIRT 使用xml动态数据源总结博客分类:•Java&EclipseXML数据结构EclipseWebworkMySQL因为系统需要,添加报表功能,瞄上了birt,学习之,入门教程看了一大堆,还好,多种数据源支持,对于sql还没精通,看着一大堆sql还有点犯难,所以,xml数据源成了我的首选,仔细研究之下,发现原来birt提供的初级功能原来很少,报表经常需要替换数据源来显示其不同的内容,而传统的设置 xml数据源只是事前指定好xml文件,或url,google了一下,基本没有发现可用的例子,郁闷之,自己琢磨了一周几乎,更郁闷的是其实问题早有了答案,就载在acegi的权限控制之上一直未看到胜利的曙光下面把自己动态修改xml数据源的成功发上来我用的是webwork,其他用户请酌情修改相应参数这个是用来view报表的action 需要传入的参数是reban.reportName = 报表文件的文件名rbean.xmlDataUrl = 报表xml datasource url ,可以是stream,或xxx.xml 之类的,输入浏览器能显示xml即可BirtReportViewer.javaJava代码1.package com.morepower.controller.birt;2.3.import java.io.ByteArrayInputStream;4.import java.io.ByteArrayOutputStream;5.import java.io.InputStream;6.7.import javax.servlet.ServletContext;8.import javax.servlet.http.HttpServletRequest;9.10.import org.eclipse.birt.report.engine.api.EngineConstants;11.import org.eclipse.birt.report.engine.api.HTMLRenderOption;12.import org.eclipse.birt.report.engine.api.HTMLServerImageHandler;13.import org.eclipse.birt.report.engine.api.IHTMLRenderOption;14.import org.eclipse.birt.report.engine.api.IRenderOption;15.import org.eclipse.birt.report.engine.api.IReportEngine;16.import org.eclipse.birt.report.engine.api.IReportRunnable;17.import org.eclipse.birt.report.engine.api.IRunAndRenderTask;18.import org.eclipse.birt.report.model.api.DataSourceHandle;19.import org.eclipse.birt.report.model.api.ElementFactory;20.import org.eclipse.birt.report.model.api.OdaDataSetHandle;21.import org.eclipse.birt.report.model.api.OdaDataSourceHandle;22.import org.eclipse.birt.report.model.api.ReportDesignHandle;23.import org.eclipse.birt.report.model.api.TableHandle;24.import org.eclipse.birt.report.model.api.activity.SemanticException;25.26.27.import com.morepower.controller.AbstractAction;28.import com.morepower.util.BirtEngine;29.import com.morepower.view.BirtReporterBean;30.import com.opensymphony.webwork.ServletActionContext;31.import com.opensymphony.webwork.interceptor.ServletRequestAware;32.33.public class BirtReportViewer extends AbstractAction implements34. ServletRequestAware {35. /**36. *37. */38. private static final long serialVersionUID = 1L;39. private static String REPORT_DIR = "birt-reportors";40. private static String REPORT_IMAGE_DIR = "images";41. private IReportEngine birtReportEngine = null;42. private HttpServletRequest request;43. private BirtReporterBean rbean;44. private InputStream reportStream;45. private static String DATASOURCE_NAME = "DataSource";46. private static String DATASET_NAME = "DataSet";47. private static String QueryText = "";48.49. public InputStream getReportStream() {50. return this.reportStream;51. }52.53. @Override54. public String execute() throws Exception {55. // get report name and launch the engine56. // resp.setContentType("text/html");57. // resp.setContentType( "application/pdf" );58. // resp.setHeader ("Content-Disposition","inline; filename=test.pdf");59. String reportName = rbean.getReportName();60. ServletContext sc = ServletActionContext.getServletContext();61. birtReportEngine = BirtEngine.getBirtEngine(sc);62. IReportRunnable design = birtReportEngine.openReportDesign(sc63. .getRealPath(java.io.File.separator + REPORT_DIR)64. + java.io.File.separator + reportName);65.66. ReportDesignHandle report = (ReportDesignHandle) design67. .getDesignHandle();68.69. // 只是动态更换数据源即可,不需改变报表的其他结构70. // 暂时不支持动态创建表格71.72. // create task to run and render report73. buildReport(report);74. IRunAndRenderTask task = birtReportEngine75. .createRunAndRenderTask(design);76. task.getAppContext().put(EngineConstants.APPCONTEXT_CLASSLOADER_KEY,77. BirtReportViewer.class.getClassLoader());78.79. // set output options80. HTMLRenderOption options = new HTMLRenderOption();81. options.setImageHandler(new HTMLServerImageHandler());82. options.setImageDirectory(sc.getRealPath(java.io.File.separator83. + REPORT_IMAGE_DIR));84. options.setBaseImageURL(request.getContextPath()85. + java.io.File.separator + REPORT_IMAGE_DIR);86. options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);87. options.setOption(IRenderOption.HTML_PAGINATION, Boolean.TRUE);88. options.setOption(IHTMLRenderOption.MASTER_PAGE_CONTENT, new Boolean(89. true));90.91. // options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_PDF);92. options.setOption(HTMLRenderOption.HTML_ENABLE_METADATA, Boolean.FALSE);93. ByteArrayOutputStream bout = new ByteArrayOutputStream();94. //String renderstr = bout.toString("utf-8");95. options.setOutputStream(bout);96. task.setRenderOption(options);97.98. /*99. * 另外一种方案,直接在action中构造inputStream 对像,但这样100.* 可能导致你的报表viewer与具体业务类耦合!101.* task.getAppContext().put(org.eclipse.datatools.enablement.oda.xml.Constants.APPCONTEXT_INPUTSTREAM, 102.reportStream);103.task.getAppContext().put(org.eclipse.datat ools.enablement.oda.xml.Constants.APPCONTEXT_CLOSEINPUTSTREAM,104.Boolean.TRUE);*/105.106.// run report107.108.task.run();109.task.close();110.reportStream = new ByteArrayInputStre am(bout.toByteArray());111.112.return SUCCESS;113.}114.115./**116.* 清除原有的数据源117.*/118.protected void clearDataSource(ReportDesignHandle designHandle) {119.//DataSourceHandle dsh = designHandle.f indDataSource(DATASOURCE_NAME);120.//dsh.drop();121.int count = designHandle.getDataSources ().getCount();122.123.try {124.for (int i = 0; i < count;i++)125.designHandle.getDataSource s().drop(i);126.} catch (SemanticException e) { 127.log.error(e);128. e.printStackTrace();129.}130.}131.132./**133.* 清除原有的数据集134.*/135.protected void clearDataSet(ReportDesignHandle designHandle) {136.getQueryText(designHandle);137.int count = designHandle.getDataSets().getCount();138.try {139.for (int i = 0; i < count;i++)140.designHandle.getDataSets() .drop(i);141.} catch (SemanticException e) { 142.log.error(e);143. e.printStackTrace();144.}145.}146.147./**148.*149.*/150.protected void getQueryText(ReportDesignHandle designHandle) {151.QueryText = (String) designHandle.getDa taSets().get(0).getProperty(152."queryText");153.}154.155.protected void buildReport(ReportDesignHandle d esignHandle) {156.try {157.ElementFactory designFactory = designHandle.getElementFactory();158.buildDataSource(designFactory, de signHandle);159.buildDataSet(designFactory, desig nHandle);160.TableHandle table = (TableHandle) designHandle.getBody().get(0);161.table.setDataSet(designHandle.find DataSet(DATASET_NAME));162.163.} catch (SemanticException e) { 164.log.error(e);165. e.printStackTrace();166.}167.168.}169.170.protected void buildDataSource(ElementFactory d esignFactory,171.ReportDesignHandle designHandle) throws SemanticException {172.clearDataSource(designHandle);173.OdaDataSourceHandle dsHandle = designFa ctory.newOdaDataSource(174.DATASOURCE_NAME, 175."org.eclipse.birt.report.d ata.oda.xml" );176./*dsHandle.setProperty( "odaDriverClass",177."com.mysql.jdbc.Driver" );178.dsHandle.setProperty( "odaURL", "jdbc:my sql://localhost/stat" );179.dsHandle.setProperty( "odaUser", "root");180.dsHandle.setProperty( "odaPassword", "");*/181.dsHandle.setProperty("FILELIST", rbean.ge tXmlDataUrl());182.designHandle.getDataSources().add(dsHandle );183.}184.185.protected void buildDataSet(ElementFactory desi gnFactory,186.ReportDesignHandle designHandle) throws SemanticException {187.188.clearDataSet(designHandle);189.OdaDataSetHandle dsHandle = designFacto ry.newOdaDataSet( DATASET_NAME,190.//"org.eclipse.birt.report.data.oda.jdbc.J dbcSelectDataSet" );191./* OdaDataSetHandle dsHandle = desig nFactory.newOdaDataSet(DATASET_NAME,*/192."org.eclipse.birt.report.d ata.oda.xml.dataSet");193.dsHandle.setPrivateDriverProperty("XML_FIL E", rbean.getXmlDataUrl());194.dsHandle.setPrivateDriverProperty("MAX_ROW ", "-1");195.dsHandle.setQueryText(QueryText);196.dsHandle.setDataSource(DATASOURCE_NAME);197.designHandle.getDataSets().add(dsHandle);198.199.}200.201.@Override202.public void setServletRequest(HttpServletRequest arg0) {203.request = arg0;204.205.}206.207.@Override208.public void destory() {209.BirtEngine.destroyBirtEngine();210.}211.212.public BirtReporterBean getRbean() {213.return rbean;214.}215.216.public void setRbean(BirtReporterBean rbean) {217.this.rbean = rbean;218.}219.220.@Override221.public void initilize() {222.try {("报表系统初始化中............");224.BirtEngine.initBirtConfig(); 225.REPORT_DIR = BirtEngine.getBirtR eportorProperty("report_dir");226.REPORT_IMAGE_DIR = BirtEngine227..getBirtReportorPr operty("report_image_dir");228.DATASOURCE_NAME = "DataSource";229.DATASET_NAME = "DataSet"; 230.} catch (Exception e) {231. e.printStackTrace();232.log.error(e);233.}234.}235.236.}BirtEngine.javaJava代码1.package com.morepower.util;2.import java.io.InputStream;3.import java.io.IOException;4.import java.util.Properties;5.import java.util.logging.Level;6.7.import mons.logging.Log;8.import mons.logging.LogFactory;9.import org.eclipse.birt.report.engine.api.EngineConfig;10.import org.eclipse.birt.report.engine.api.IReportEngine;11.import javax.servlet.*;12.import org.eclipse.birt.core.framework.PlatformServletContext;13.import org.eclipse.birt.core.framework.IPlatformContext;14.import org.eclipse.birt.core.framework.Platform;15.import org.eclipse.birt.core.exception.BirtException;16.import org.eclipse.birt.report.engine.api.IReportEngineFactory;17.18.public class BirtEngine {19. private static IReportEngine birtEngine = null;20. private static Properties configProps = new Properties();21. private final static String configFile = "BirtConfig.properties";22. protected final static Log log = LogFactory.getLog(BirtEngine.class);23. public static synchronized void initBirtConfig() {24.25. loadEngineProps();26. }27.28. public static synchronized IReportEngine getBirtEngine(ServletContext sc) {29. if (birtEngine == null) {30. EngineConfig config = new EngineConfig();31. if (configProps != null) {32. String logLevel = configProps.getProperty("logLevel");33. Level level = Level.OFF;34. if ("SEVERE".equalsIgnoreCase(logLevel)) {35. level = Level.SEVERE;36. } else if ("WARNING".equalsIgnoreCase(logLevel)) {37. level = Level.WARNING;38. } else if ("INFO".equalsIgnoreCase(logLevel)) {39. level = ;40. } else if ("CONFIG".equalsIgnoreCase(logLevel)) {41. level = Level.CONFIG;42. } else if ("FINE".equalsIgnoreCase(logLevel)) {43. level = Level.FINE;44. } else if ("FINER".equalsIgnoreCase(logLevel)) {45. level = Level.FINER;46. } else if ("FINEST".equalsIgnoreCase(logLevel)) {47. level = Level.FINEST;48. } else if ("OFF".equalsIgnoreCase(logLevel)) {49. level = Level.OFF;50. }51.52. config.setLogConfig(configProps.getProperty("logDirectory"),53. level);54. }55. //sc.getRealPath("")+java.io.File.separator+configProps.getProperty("engine_home")56. config.setEngineHome("");57. IPlatformContext context = new PlatformServletContext(sc);58. (context.getPlatform());59. config.setPlatformContext(context);60.61. try {62. Platform.startup(config);63. } catch (BirtException e) {64. e.printStackTrace();65. }66.67. IReportEngineFactory factory = (IReportEngineFactory) Platform68. .createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);69. birtEngine = factory.createReportEngine(config);70.71. }72. return birtEngine;73. }74.75. public static synchronized void destroyBirtEngine(){76. if (birtEngine == null) {77. return;78. }79. birtEngine.shutdown();80. Platform.shutdown();81. birtEngine = null;82. }83.84. public Object clone() throws CloneNotSupportedException {85. throw new CloneNotSupportedException();86. }87.88. private static void loadEngineProps() {89. try {90. // Config File must be in classpath91. ClassLoader cl = Thread.currentThread().getContextClassLoader();92. InputStream in = cl.getResourceAsStream(configFile);93. configProps.load(in);94. in.close();95.96. } catch (IOException e) {97. e.printStackTrace();98. }99.100.}101.public static String getBirtReportorProperty(St ring key){102.return configProps.getProperty(key);103.}104.105.}robin 写道使用方法在浏览器中输入urlhttp://localhost:8800/stat/birtviewer.action?rbean.reportName=inde x.rptdesign&rbean.xmlDataUrl=http://localhost:8800/stat/armrptxml.act ion?reporter.id=008a81b61c30d47e011c4f446718001b对报表熟悉的人应该知道这个方法。
基于XML的适应性教学系统的设计与实现
同时也呈现 出一个 问题 : 如何共享这些 We b教学 系统 ?其实这 重 . ; — . E a w h i< O。>EC = 个 问题早在 开发非 网络 教学系统时就存 在 .但一 直没有得 到很 如果 P 满 足 0 < C , . <a l )则教学 目标 E J O是 a 可访 问的 , < 好 的解决。 由于教 学的特殊 性 。 同一教学 内容对不 同的学生要求 EO,> C a e 不 同, 重点不 同( 如多媒体这一教学 内容 对计算 机专业学生 和教 3 系统 的 实 现 . 育专业学生在教学上 侧重点不 同)造成 已经开发好的教学 系统 , 系统通 过 X L技术实现 , M 主要从 以下几点考虑 : 由于 X ML的 自我 描 述 性 (e eciig , 得 文 件 的 流 sld sr n ) f b 使 不能直接拿来使用 . 结果造 成资源不能充分的共享 , 件的制作 课 成 为一 项 耗 时 费 力 的 工 作 。其 次 , 进 行 网络 教 学 时 。 在 师生 之 间 程 可以完全 由计算 机控制 。而编辑文 件的人拿 到 X ML原始 文 在空间上是分离的 。 b教学系统应该具有适应性 , We 即教学 系统 件 . 可 以 对 文 件 的 内 容 一 目了 然 。 也 应能根据每个学生的实际情况来呈 现教学内容并 进行 相应 的指 X ML文 件 可 以 在 任何 系 统 、 用 程 序 或平 台上 使 用 。 应 导 。本文针对现有 We b教学系统 的现状 提出了一种新的思路 : X ML保存格 式与 显示 方式分开 的特点 .使得 文件 可以轻 即将 内容 与 教 学 结 构 分 离 。 过 X 通 ML技 术 将 教学 内容 与 教学 结 易 地 以不 同 的形 式 发 行 构分离既可实现教学 资源 的复用 .又可对不同的学生组合不 同 X ML的 标 记 可 将 文 件 中 的 信 息 分 解 成 更 小 的 单 位 来 保 的 教学 内容 , 足 个 性 化 学 习 的 需 要 。 满 存 。 个图案 、 每 表格 、 以及 图片 都 可 以独 立 出 来 . 任 意 组 合 成新 并 2 教学 系统的设计 . 的文 件 。 21教学 内容 模 型 . XM L的语意标 记可 以让文件之间 自动产生 关联 性链 接 . 门课程 的教学 内容分成一个个小 的教学 目标 E 每个教 文 件 的搜 索 并 非 仅 限 于 文 件 内是 否 含 有 特 定 关 键 字 .而 能从 整 O. 学 目标 就是 ~ 个 概念 .每 个 教 学 目标 由一 些 更 小 的教 学 单 元 和 篇 文 章 的 语 意 来 进 行 链 接 。 这 些 教 学单 元 的权 重 组 成 .这 些 教 学 单 元 是 不 可 再分 的教 学 步 31系统 结 构 . 骤 , 学单 元 的 权 重 代 表 这 个 教 学 单元 的 认 知 程 度 , 们 在 这 里 教 我 系统 通 过 反 映 课 程 结 构 的扩 展 标 记 显 示 课 程 材 料 为 可访 问 划 分 为 三级 : 了解 、 解 、 握 。这 样 设 置 的好 处 是 : 理 掌 的 H ML页 。 学 生 申请 某 一 页 内 容 时 . 据 课 程 的 教 学 目标 和 T 当 根 1 同一 教 学 单 元 可 被 重 复 利 用 来 构 建 不 同的 教学 目标 : . 学 生 的 实 际 认 知 状 况 动 态 生 成 内容 。 整 个 内 容 创 建 过 程 是 由 2 设 置 权 重 是 为 了对 不 同 的学 生 给 予 不 同的 控 制 .达 到个 Jv ev t . aaS r e l s来管理的 , 要处理一些实时信息 。 如学 生的状态 , 显 性化教学。 示风格 , 同时创建 XML代码和相应的 X L 并 S T样式表单文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
var xmlHttp=new ActiveXObject(”MSXML2. XMLHTTP.4.0”)//建立XML HTTP物件
xmlHttp.open(”POST”,”data.asp”,false) xmlHttp.send(xmlDom) )
在c/s模式下,在服务器端完成对控件的拖动和样式编 排处理,不仅交互速度慢,而且拖放功能也难以实现。通 常,考虑到将这些功能放在客户端完成,然后将定义好的坐 标数据传递给服务器端,由于涉及的是批量数据,采用常用 的form和urls传递方式不可取,因此必须通过一种中间机 制来实现这种批量信息传送的功能,通常考虑用ActiveX控 件的方式来完成,即设计一个Activex表单控件,该ActiveX 表单控件上可以实现文本区和按钮等表单元素的拖动,如 用Delphi、VC、VB等都可以实现,每个表单元素与数据库关 联,将该控件发布到客户端,能实现个性化表单信息呈现。 但这种方式所实现的表单页面配色效果难以达到用户的需
sqlstr=”insert into mdcontent(m_id,c—id,…) values(一+moid,’,~+eid+”,…)”
Set Rs=OBJConn.Execute(sqlstr)’将表单控件 样式等信息写入数据表中
Set Rs=Nothing
strXML=strXML+”<Ⅲ_id>”+data[i][0]+”</m_id>”
4.Chul-Ki Nam;Gil-Sang Jang;Jae-HakJ Bae An XML-based active document for intelligent web applications[外文期刊] 2003(25) 5.陈会安 XML网页制作彻底研究 2003 6.Danny Goodman JavaScript宝典 2002
ment.chi ldNodes For Each objNode in objNodeList.chi ldNodes If objNode.nodeName=”m id”Then moid=objNode.text EndIf
当用户定义好了表单模板后,用XML文档装载表单上所 有控件的样式数据,并将它们发送到服务器端。其编制成 XML文档的过程和解析语句如下:
本文读者也读过(10条) 1. 向宏.马智骢.胡海波.XIANG Hong.MA Zhi-cong.HU Hai-bo 基于虚拟表的动态表单设计与实现[期刊论文]-重庆 工学院学报(自然科学版)2009,23(2) 2. 欧阳星明.官峰.刘昕 基于XML动态Web发布技术的实现[期刊论文]-计算机应用研究2003,20(8) 3. 宋少忠.欧阳涛.赵浩宇.SONG Shao-zhong.OUYANG Tao.ZHAO Hao-yu 动态数据库功能在B/S结构程序设计中的实 现[期刊论文]-吉林大学学报(理学版)2011,49(1) 4. 苟园捷.莫蓉.常智勇.郭永辉.GOU Yuan-jie.MO Rong.CHANG Zhi-yong.GUO Yong-hui 面向企业管理系统的动态 表单技术研究[期刊论文]-航空计算技术2006,36(6) 5. 蒋海彦.鄂明成.习中革 基于Web的表单工作流系统设计与实现[期刊论文]-北方交通大学学报2004,28(4) 6. 王智广.陈涛.陈明.陈雪飞.鲁亿方.WANG Zhi-guang.CHEN Tao.CHEN Ming.CHEN Xue-fei.LU Yi-fang 软件开发 中动态表单的解决方案[期刊论文]-内蒙古师范大学学报(自然科学汉文版)2010,39(5) 7. 张文治.张辉.ZHANG Wen-zhi.ZHANG Hui 工作流系统中的表单服务系统[期刊论文]-长春师范学院学报(自然科 学版)2005,24(5) 8. 杨忠秀.王硕苹.YANG Zhong-xiu.WANG Shuo-ping 用服务器端控件方式实现表单处理系统[期刊论文]-计算机工 程与设计2005,26(2) 9. 郭永辉 动态表单系统设计与实现[学位论文]2007 10. 张春玲.王桂萱.张慧敏.孔鲁文 保留数据语义约束的关系模式到XML模式的映射[会议论文]-2008
[2]张玉峰等.基于Agent的个性化信息服务模型研究[J].情报学报, 2001.20(5):555-559.
[3]张晓林等.基于Web的个性化信息服务机制【J].现代图书情报技术. 2001,(1):25-29.
[4]Chul—Ki Nam,Gi l—Sang Jang。Jae-Hak J.Bae.An XML—based ac— tive document for intelligent web applications[J].Expert Systems with Appl ications,2003,(25):165—1 76.
中国管理信息化(综合版) CHINA MANAGEMENT INFORMATIONIZATION 2006,9(9) 2次
参考文献(6条)
1.薛菘 基于Web数据库平台的图书馆个性化服务:MyLibrary[期刊论文]-图书情报工作 2002(08) 2.张玉峰 基于Agent的个性化信息服务模型研究[期刊论文]-情报学报 2001(05) 3.张晓林 基于Web的个性化信息服务机制[期刊论文]-现代图书情报技术 2001(01)
【收稿日期】2006-02-25
求,具体控件在表单上的位置精确度不高,因此,必须寻找 另外的数据传递模式来实现这种个性化的展示。
可扩展标记语言(XML,eXtensible Markup Language) 技术的出现,很好地解决了客户端信息的表示问题,文献 [4]用XML的方式将客户端的信息传至服务器端,基于这个 思路,用XML传递客户端页面上内容及样式信息至服务器 端,即可以解决信息个性化展示需求。通过XML和MSXML解 析器配合使用,将客户端表单上控件的样式信息编制成XML 文档,再通过HttpRequest对象,将XML文档发送到服务器 端,再通过MSXML解析器,将XML文档还原成普通的数据,最 后,利用数据存储机制存放于数据库中。 2实现策略
表单中控件的尺寸调整和位置拖动可通过脚本语言实 现,而表单控件所有样式属性用XML文件记录,并通过 HttpRequest对象将该x札文件发送到服务器端进行保存。 2.1 控件尺寸的调整和位置拖动
Javascript提供了强大的Web页面增强型功能,可以把 内容的静态页面转换为动人的、交互的、智能的体验。为了 在客户端实现灵活的控件样式,利用Javascript实现鼠标 捕捉和定位功能,可以实现页面上的控件拖放和调整大小 的目的,从而实现信息的个性化排版功能,图1即为工作流 管理系统中流程结点携带文档样式的个性化编制过程,通 过拖动控件,以调整内容在文档中的摆放位置;利用鼠标捕 捉和鼠标拖放功能,可以调整文档中控件或内容的展示区 域大小和基本样式,如长、宽、高等样式,通过在调色板中进 行颜色选择,可以设置文档中部分控件或内容的背景和前 景色,其中:用语句event.cl ientX+document.body.scro— llLeft来捕获鼠标的X坐标位置,用event.clientY+docu— ment.body.scrolITop来捕获鼠标的y坐标位置,通过与控 件的原始坐标比较,其差值为调整的距离,通过调整控件宽 度和高度,实现控件边框拖放的功能,并用数组data[i][j]
(1)用Javascript实现XML DOM访问)眦文件的过程。
function savexml() { vat strXML=”<NewDataSet>’
for(var i=O:i<120:i++){ strXML=strXML+一<movecontr01>一
Next
OBJConn.Open”Driver={SQL Server):Database=’& db&”:Server=’&sv&”:UID=’&uid&”:PWD=”&pwd&~
2006年9月 第9卷第9期
中国管理信息化 China Management Informationization
基于XML flcJ动态表单设计
Sep.,2006 V01.9,N0.9
蒋国银h,刘鹏远№
(1.湖北经济学院a.经济信息管理学院;b.计算机学院,武汉430205)
[摘要】 通过分析表单个性化样式实施的可行方案,提出了基于XML的动态表单解决方法,给出了实现策略和代 码实现方法,为电子商务、工作流管理系统中动态的信息个性化展示提供了有效方法。 [关键词] 个性化;XML;电子商务;工作流管理系统 【中图分类号】 F724.6 【文献标识码]A 【文章编号】1673-0194(2006)09—0083—02
else {
OBJConn.Close() Next
3结束语 本文提出了基于XML的动态表单的设计与实现方法,为
电子商务中单据的灵活设计,如订货单、采购单等的设计; 工作流系统中结点所携带文档的灵活排版设计提供了可行 方法。
主要参考文献
[1]薛菘.基于Web数据库平台的图书馆个性化服务:MyLibrary[J].图 书情报工作,2002.(8):22—25.
strXML=strXML+一</movecontrol>” ) strXML=strXML+’</NewDataSet>。//建立XML DOM对 象 var xmlDom=new ActiveX0bject(”MSⅪ儿2.DOMDocu— ment.4.O。) xmlDom async=”false”//加载XML文件的字符串
子数据库中(data.asp)。
set xmlDom=
Server.CreateObject(”Microsoft.XMLDOM”)
图1 控件拖动
xmlDom.async=’false’
xmlDom.10ad(Request) For Each objNodeList in xmlDom.documentEle—