AndroMDA Getting started(六)

13.标准搜索面板

我们最后准备对界面动手!在这章中,我们要使用AndroMDA BPM4Struts cartridge开发一个基于strutsweb前端。注意,AndroMDA提供了另外一种catridge生成基于JSF的前端。然而,如果你更喜欢一些其他的前端框架,你可以写你自己的catridge!但是记住要和社区分享啊J

BPM4Struts从你的应用定义流的的UML模型生成struts web页面。在我们开始应用建模之前,请阅读下面的BPM4Struts catridge的重要内容。

1.       Introduction to BPM4Struts: The Introduction and Goal sections provide a good overview of the cartridge.

2.       BPM4Struts How-to Guide: Quickly look over the concepts behind use-cases, activity graphs and controllers.

有三个重要的概念与创建网页相关:use case,活动图(用例的描述),一个或多个控制器(他们的方法能够从活动图调用)。让我们讨论一下我们如何建模我们的搜索界面。我们开始一个用例,叫做Timecard,这个用例被标注了两个sterotype

1.  FrontEndUseCase:他的名字精确的表明了-他是一个前端的用例。

2.  FrontEndApplication:表明了应用的访问点,注意,现在我们不用考虑安全或者导航-只是你一登录浏览器就显示timecard页面。

 

 

 

 

接下来,我们增加这个用例的活动图。活动图如下面显示的样子。

 

活动图使用下面显示的SearchController调用方法,通过SearchController的关键的参数是通过http访问提供的表单接口。SearchController能够调用在服务层的服务。下面表示的是对实体的访问。

现在让我们开始我们的模型用例,活动图和controller

现在,让我们要求AndroMDASearch Timecards页面生成代码。

1.  在命令提示符窗口执行命令mvn install。确信你看到了build successful的信息。

2.   只有调用服务的SearchController代码需要写,因此打开SearchControllerImpl类,在C:/timetracker/web/src/main/java/org/andromda/timetracker/web/timecardsearch,增加下面显示的代码。

// license-header java merge-point
    
    
package org.andromda.timetracker.web.timecardsearch;
    
    

   
   
    
     
   
   
import java.util.ArrayList;
    
    
import java.util.Arrays;
    
    
import java.util.List;
    
    
import javax.servlet.http.HttpServletRequest;
    
    
import javax.servlet.http.HttpServletResponse;
    
    
import org.andromda.timetracker.vo.UserVO;
    
    
import org.andromda.timetracker.vo.UserVOComparator;
    
    
import org.apache.commons.logging.Log;
    
    
import org.apache.commons.logging.LogFactory;
    
    
import org.apache.struts.action.ActionMapping;
    
    

   
   
    
     
   
   
public class SearchControllerImpl extends SearchController
    
    
{
    
    
    private Log logger = LogFactory.getLog(SearchControllerImpl.class);
    
    
    private static final String ALL_STRING = "-- All --";
    
    

   
   
    
     
   
   
    public final void populateSearchScreen(
    
    
        ActionMapping mapping,
    
    
        org.andromda.timetracker.web.timecardsearch.PopulateSearchScreenForm form,
    
    
        HttpServletRequest request,
    
    
        HttpServletResponse response)
    
    
    throws Exception
    
    
    {
    
    
        if (logger.isDebugEnabled()) {
    
    
            logger.debug("form: " + form);
    
    
        }
    
    

   
   
    
     
   
   
        // Get list of users and add the "All" option at the top
    
    
        UserVO[] users = getUserService().getAllUsers();
    
    
        Arrays.sort(users, new UserVOComparator());
    
    
        List userList = new ArrayList(Arrays.asList(users));
    
    
        userList.add(0, new UserVO(null, ALL_STRING, null, null));
    
    

   
   
    
     
   
   
        // Populate submitter and approver dropdowns
    
    
        form.setSubmitterBackingList(userList, "id", "username");
    
    
        form.setApproverBackingList(userList, "id", "username");
    
    
    }
    
    
}
    
    

现在,我们排序 users数组,以便能按照字母顺序出现在drop-down列表前。排序功能使用UserVOComparator,在
C:/timetracker-completed/common/src/main/java/org/andromda/timetracker/vo

拷贝他到你的相同的目录结构中。

 

现在,下面的步骤部署应用到JBoss中,并且测试:

1.  构建commonweb项目确认上面增加的代码已经编译并且打包了。

 Mvn –f common/pom.xml install

 Mvn –f web/pom.xml install

2.   启动JBoss服务。打开命令提示符窗口,切换目录到C:/jboss- 4.0.4 /bin执行命令run

3.   部署应用到JBoss上。打开早先的命令提示符窗口(C:/timetracker)执行下面的命令

Mvn –f app/pom.xml –Ddeploy

察看JBoss应用控制台的信息,指出应用启动成功。

4.   打开浏览器,指向http://localhost:8080/timetrackertimetracker搜索页面会出现。尽管界面外观不是我们想要的原型,但是屏幕的功能是正确的。我们以后再考虑界面的外观,当我们所有的功能都完成后。

5.   确认提交和审批下拉列表能弹出所有的人员列表。

6.   在搜索条件中设置一些值点击搜索按钮。C:/jboss- 4.0.4 /server/default/log/server.log,这个日志里面会有下面的记录。

2006-06-29 02:47:41,541 DEBUG form:
    
    
    org.andromda.timetracker.web.timecardsearch.SearchTimecardsSearchFormImpl@a2bd15
    
    
    [startDateMinimum=Tue Jun 13 00:00:00 EDT 2006,
    
    
     startDateMaximum=Wed Jun 07 00:00:00 EDT 2006,
    
    
     submitter=3,
    
    
     status=<null>,
    
    
     approver=2]
    
    

下面是我们看到的界面

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值