AndroMDA Getting started(六)

news/2024/7/3 10:42:48 标签: struts, import, jboss, construction, 活动, string
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

  • ArgoUML (under construction)
  • MagicDraw 9.x
  • MagicDraw 11.5
  • RSM 6

现在,让我们要求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]
    

下面是我们看到的界面

 

 

http://www.niftyadmin.cn/n/1140665.html

相关文章

rsync同步命令详解

一、rsync命令的解释sync&#xff08;Synchronize&#xff0c;即“同步”&#xff09;为UNIX操作系统的标准系统调用&#xff0c;功能为将内核文件系统缓冲区的所有数据&#xff08;也即预定将通过低级I/O系统调用写入存储介质的数据&#xff09;写入存储介质&#xff08;如硬盘…

java DateFormat的使用

java DateFormat的使用 yyyy-MM-dd HH:mm:ss java.text.DateFormat format new SimpleDateFormat("yyyyMM");String value format.format(new Date()); 输入的格式为200609

在Oracle中使用java对象

1.写一个java对象&#xff0c;保存在c:/Hello.java 2.loadjava -user scott/tiger223 Hello.java &#xff0c;将Hello.java加入到数据库中&#xff0c;如果加入的是源码&#xff0c;则可以从javasource中看到&#xff0c;如果加载的是class&#xff0c;从javasource看不到 3…

JasperReport学习(转)

JasperReport学习(转) 关键词&#xff1a; JasperReport http://www.54bk.com/user1/8030/index.html 最近使用了JasperReports和iReport制作了几个报表&#xff0c;这片文章是我的一些总结。 JasperReports是一个开源的java报表…

设置JFrame窗口最大化

frame.setExtendedState(JFrame.MAXIMIZED_BOTH);

-bash: ls: No such file or directory 产生的原因及修改方法

ubuntu出现如下错误&#xff1a; { Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.15.0-42-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 77 packages can b…

NERO刻BIN文件的方法

一直以为nero不能刻录bin格式的映像文件&#xff0c;结果今天发现&#xff1a; &#xff08;1&#xff09;Nero支持ISO/BIN/CUE等文件的刻录。在Nero主界面选择“File&#xff08;文件&#xff09;”&#xff0d;“Burn Image&#xff08;刻录镜像&#xff09;”即可。&#x…

ubuntu6.4系统安装JIRA-7.8

一、系统环境&#xff1a;system version&#xff1a;ubuntu6.4openjdk version &#xff08;java版本&#xff09; &#xff1a;1.8.0_191 mysql version&#xff1a;14.14jira version&#xff1a;atlassian-jira-software-7.8.4-x64.bin二、安装jira准备1、安装ubuntu系统*…