array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 wmframework v2.0 手册(三)系统开发流程 - 爱码网

     WMframework提供了固定,规范的一体化代码编写过程,最终目的即为清晰的系统开发流程、减少开发人员代码编写时间并大大降低其工作量、方便项目组全局实现代码的风格的规范统一等

wmframework v2.0 手册(三)系统开发流程

简要描述

 1、确认页面元素

    参照用户需求及相关功能设计文档,确认当前表单页面元素和整体风格布局;如 用户基本信息维护中可能涉及的html Dom 表单元素可能有:用户名、密码、组织机构、帐号、有效期等。

2、定位功能数据表

    以详细设计文档为标准,查找数据库设计及PDM模型中主要操作的数据表。如 用户基本信息维护可能涉及的表有:用户帐号信息、用户基本信息、操作日志、组织机构等

3、业务功能原型实现

    使用WMframework代码生成工具(系统),创建并生成相应功能代码:jsp、domain、sqlmap、s2配置、sping配置等

4、功能处理扩展、定制

    编辑已生成代码,使其附和并满足当前业务功能实现需要。

5、前台框架引入

    检查修改用户表单jsp页面是否正常引入前台js提交、处理框架(当前部分已由系统代码自动生成,仅需做check即可),是否正确完成用户提交请求处理。

6、后台框架配置、变更

     常规情况下,WMframework已经实现有后台通用action、service、dao处理流程,若非个性化特殊情况下,不提倡自定义实现action、service、dao等。

     check当前domain(pojo)是否完全满足用户表单处理的数据模型映射,适当做出修改、变更

前端展现页面编写

1、代码创建

用户表单jsp页面当前提倡使用自动代码生成后,修改布局及提交数量方式。对于多条记录同时提交方式需要自行修改实现,当前代码生成器仅实现一个domain,单记录提交的方式。

       example(一个数据域某个属性页面展现):

<input type="text" class="textfile" style="width: 80%"
issave="true"  <%-- 当前field是否提交标志 --%>
  
fieldname="userId" <%-- 当前field对应数据对象domain属性名称 --%>
 require="true"  <%-- 当前field是否进行校验(validator) --%>
showmessage="用户ID必填!" <%-- 当前field校验(validator)未通过后给出的提示信息 --%>
vos="ADomain" <%-- 提交表单所属domain,对应java中domain对象名 --%>
vo="ADomain" <%-- 提交domain群组中,单条数据唯一标志,用于一次进行多条相同domain数据提交 --%>
funcname="WM_insertA" <%-- 当前domain执行数据库操作sqlmap节点名称 --%>
/>

2、 代码修改

修改页面布局,个性化样式、记录提交数

3、 数据提交实现

当前部分主要有关联的页面按钮触发事件基于js的function实现,且原型也自动生成,单数据提交时无需修改,其余需要修改。

若由自动生成代码则仅实现数据提交方式一,即页面元素构建枚举数组获得XMLDOC对象方式

example:

function dosave() {
	var ac = new WMaction();//创建前台提交执行接口js对象
    var po = new WMparamObject();//创建前台数据表单参数js对象
	po.setActionType("0");//当前操作类型
	po.setForm($("aForm"));//当前提交domain所在form
	po.setUrl(cps+"/commonAction.action?action=add");//当前请求发送路径
	po.setTextObjId("textdiv");//按钮承载容器
	po.setHitObjId("hitDiv");//进度提示承载容器
	po.setIsasy(true); //请求发送方式(异步、同步),默认为异步	
	ac.setParamobj(po); //参数对象传递
	ac.execute();//前台表单请求执行触发
}

后台处理实现

1、总控制器响应接口

当前部分由ParentsAction.java完成,它形如阀门一般管理着所有request请求的进出。即全部的action从这个口进\出。

2、公用(或自定义)控制器处理

由于ParentsAction.java被定义为抽象父类,故各具体业务处理器须继承并扩展实现对于业务处理操作类型。

CommonAction.java公共处理器已实现常规的增、删、改、存储过程执行等操作,用户可在不满足下进行自定义扩展、重载等。

QueryAction.java 查询处理器主要完成涉及list列表、明细detail页面的数据抽取请求控制。

TreeAction.java 实现了js树形对象的查询加载操作。

3、XML字符串请求数据拆分读取可持久化domain对象

XmlMapping.java、BeanProperty.java 共同完成了数据对象domain到xml层次节点数据的拆分、格式化封装等 

4、数据库交付、操作

基于开源ibatis的主要API接口实现了JDBC方式的数据库连接、数据编辑操作。

5、返回domain数据对象格式化生成XML格式

参考步骤3描述

6、 响应字符串数据写入repsonse

Command.java输出数据执行器主要完成不同方式数据的response响应输出。已实现方式 text/plain 文本数据、text/xml XML对象数据、Serialized Java Objects 可序列化对象等

7、前台js对象读取、渲染(提示)用户操作

在前台构建js框架中,WMservice.js承接了数据的响应操作,并依据用户参数对象WMparamObject.js中给出的操作类型,分派给相关服务子类(WMeditService 数据编辑、WMqryService 查询\树装载渲染、WMoptService 实时联动对象)执行业务处理


(注:本人文章均为原创,转载请注明出处!刀光剑影20110212写于深圳。)


相关文章: