Appfuse 增量式开发步骤

本文介绍如何使用AppFuse框架为现有应用添加新功能,包括数据库表设计、代码生成、手动调整对象关系及部署流程。

前置条件:

       假设用户已经按照《appfuse执行步骤》文档进行配置并操作,最后产生了一个叫uappweb应用。如果用户需要新增加功能,只要按照下面的步骤去操作就可以轻松地完成任务。


 

 

 

 

开发步骤:

1.         先在数据库里创建表。例如,student表。注意,表的名称的第二个字母最好不要大写。以免出现奇怪的问题(好像是hibernatebug)。

2.         把目录切换到appgen的工作目录,修改文件tables。把里面的内容先去掉,然后添加新的表名。例如,student

3.         appgen的工作目录下,运行Ant generate

运行结果:从数据库里读取表结构,并生成相关的strus表单、jsp文件、hibernatePOJO对象、DAOmanager对象、struts配置文件、spring配置文件、velocity的模板文件。

 

 

4.         转到uapp目录下,执行ant package-web生成WAR文件

这个过程里,

a)         会根据java文件生成hibernate的映射文件;

b)        compile-dao。编译dao目录下的java对象。

c)        package-dao。把dao目录下的classes打包成demo-dao.jar

d)        compile-service。编译service目录下的java对象。

e)         package-service。把service目录下的classes打包成demo-service.jar

f)         copy-resources。期间,会调用native2ascii Converting 1 file from D:projectappfusemyappfusedemowebWEB-INFclasses to D:projectappfusemyappfusedemobuildwebclasses

g)        generate.database.properties

h)        copy-web-files

i)          gen-forms。根据struts配置文件产生Form表单对象。

j)          compile-web。会编译action对象。    javac Compiling 40 source files to D:projectappfusemyappfusedemobuildwebclasses

k)        webdoclet。产生

                         i.              web.xml

                       ii.              uapp.tld

                      iii.              struts-config.xml

                     iv.              validation.xml

                       v.               

 

l)          package-web.。生成war包。

 

 

 

注意:我们经常要处理实体间的关系,如一对多,多对多。而appgen产生的POJO对象往往都太简单,没有处理这些复杂的关系。所以,我们需要手工地修改POJO对象,建立对象的关联。例如,在Parent对象里建立对Child的关联。

Parent.java对象里,增加

 

private Set children =new HashSet();

/**

       * @return Returns the booths.

       *

       *

       *  @hibernate.collection-one-to-many

       *  class="org.aos.exhibition.model.Child"

       *

       *  @hibernate.collection-key column="pid"

       *

       *  @hibernate.set

       *  name="children"

       *  table="child"

       *  inverse="true"

       *  sort="unsorted

       *  lazy="true"

       *  cascade="all"

       */

 

 

    public Set getChildren()

    {

           return this.children;

    }

      

       还有相关的addChildren(Child child)方法和getChildren()方法。

 

 

Child对象里,增加

private Parent parent;

 

 

/**

        * @return Returns the parent.

        *

        * @hibernate.many-to-one name="parent"

        * column="pid"

        * not-null="false"

        * cascade="all"

        * 

        */

       public Parent getParent() {

              return parent;

       }

 

 

       public void setParent(Parent parent) {

              this.parent = parent;

       }

最后,运行ant package-web产生相关的hibernate映射文件,并编译。

 

 

在编译的过程中,可能会有一些错误,例如, ActionForm包名的错误导致编译问题。

org.appfuse.model.Parent应该为org.aos.exhibition.model.Parent。需要自己修改相关的ActionForm,把包名更正。

 

 

1.         另外,我们经常会发现appgen给我们产生的jsp代码框架太简单,不能符合我们的要求,例如样式、布局等等。那么我们需要修改uappwebpages目录下的jsp文件。

2.         部署。执行ant deploy. 发布web应用到tomcatwebapps目录下。

3.         拷贝D:Tomcat50webappsdemoWEB-INFclassesorgappfusewebappactionLookupMethods.propertiesclassesorgaosexhibitionwebappaction 目录下。

4.         如果是中文版本,还需要把ApplicationResources_en.properties里面新增的内容拷贝到ApplicationResources_zh_CN.properties文件里面。

 

 

5.         使用链接:http://localhost:端口号/uapp/ 来启动web应用。如果在调试过程中发生net.sf.hibernate.HibernateException: Batch update row count wrong这样的异常,那需要重新运行Ant generate,从第三步开始作一遍



【事件触发一致性】研究多智能体网络如何通过分布式事件驱动控制实现有限时间内的共识(Matlab代码实现)内容概要:本文围绕多智能体网络中的事件触发一致性问题,研究如何通过分布式事件驱动控制实现有限时间内的共识,并提供了相应的Matlab代码实现方案。文中探讨了事件触发机制在降低通信负担、提升系统效率方面的优势,重点分析了多智能体系统在有限时间收敛的一致性控制策略,涉及系统模型构建、触发条件设计、稳定性与收敛性分析等核心技术环节。此外,文档还展示了该技术在航空航天、电力系统、机器人协同、无人机编队等多个前沿领域的潜在应用,体现了其跨学科的研究价值和工程实用性。; 适合人群:具备一定控制理论基础和Matlab编程能力的研究生、科研人员及从事自动化、智能系统、多智能体协同控制等相关领域的工程技术人员。; 使用场景及目标:①用于理解和实现多智能体系统在有限时间内达成一致的分布式控制方法;②为事件触发控制、分布式优化、协同控制等课题提供算法设计与仿真验证的技术参考;③支撑科研项目开发、学术论文复现及工程原型系统搭建; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,重点关注事件触发条件的设计逻辑与系统收敛性证明之间的关系,同时可延伸至其他应用场景进行二次开发与性能优化。
【四旋翼无人机】具备螺旋桨倾斜机构的全驱动四旋翼无人机:建模与控制研究(Matlab代码、Simulink仿真实现)内容概要:本文围绕具备螺旋桨倾斜机构的全驱动四旋翼无人机展开,重点研究其动力学建模与控制系统设计。通过Matlab代码与Simulink仿真实现,详细阐述了该类无人机的运动学与动力学模型构建过程,分析了螺旋桨倾斜机构如何提升无人机的全向机动能力与姿态控制性能,并设计相应的控制策略以实现稳定飞行与精确轨迹跟踪。文中涵盖了从系统建模、控制器设计到仿真验证的完整流程,突出了全驱动结构相较于传统四旋翼在欠驱动问题上的优势。; 适合人群:具备一定控制理论基础和Matlab/Simulink使用经验的自动化、航空航天及相关专业的研究生、科研人员或无人机开发工程师。; 使用场景及目标:①学习全驱动四旋翼无人机的动力学建模方法;②掌握基于Matlab/Simulink的无人机控制系统设计与仿真技术;③深入理解螺旋桨倾斜机构对飞行性能的影响及其控制实现;④为相关课题研究或工程开发提供可复现的技术参考与代码支持。; 阅读建议:建议读者结合提供的Matlab代码与Simulink模型,逐步跟进文档中的建模与控制设计步骤,动手实践仿真过程,以加深对全驱动无人机控制原理的理解,并可根据实际需求对模型与控制器进行修改与优化。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值