利用低代码平台构建领域驱动设计(DDD)的解决方案

2024-08-29 21:01:22 浏览数 (2)

前言

随着企业数字化转型的需求日益增长,低代码平台作为一种快速开发和部署业务应用的方法,正在获得更多关注。领域驱动设计(DDD)是一种软件架构风格,旨在更好地满足复杂业务需求。结合这两者可以创建灵活且可维护的应用程序。

在本应用中,我们将利用低代码平台的灵活性和DDD的架构优势来构建一个可持续的解决方案。

本文将以一个最常见的实例来展开分析。

一,模型构建

模型构建,主要是根据数据库表,将结构化数据关系(1:1,1:N,N:N)对应完成ormaping映射。实例中采用使用了一个单表模型做演示。同时将在资源库这一层抽象出的接口信息,通过注解完成在DDD领域模型中的注册,使得持久层的操作可见可用。具体的操作办法如下:

(1)进入资源库管理:

资源库是领域模型仓储库的一个具体事项方式,主要管理数据库资源以及已经完成映射的,DAO类库以及其相应的接口操作库。

(2)添加库表资源

完成数据连接导入后可以动态获取库表及业务视图,完成库表导入后由资源库完成相应的代码构建工作。

(3)开始构建

代码构建主要是基于已经建立的持久化模型,根据模版管理库构建对应的代码结构。

添加图片注释,不超过 140 字(可选)

(4)查看构建结果(代码)

完成构建后就可以在线查看生成代码了。

(5)编译代码

完成代码构建后,可以自动或手工完成相关的代码编译工作,编译完成后相应类库信息会同步到领域模型库中,方便领域模型根据模版构建相应的聚合应用体系。

(6)代码示例

相关代码示例如下:

贫血模型接口(I**Class)

代码语言:javascript复制
package com.ds.test.repository.leaveapplication.module;

import com.ds.enums.db.*;
import com.ds.enums.*;
import com.ds.esd.tool.ui.enums.*;
import java.util.*;
import com.ds.esd.custom.form.enums.*;
import com.ds.esd.custom.nav.enums.*;
import com.ds.esd.custom.grid.enums.*;
import com.ds.esd.custom.gallery.enums.*;
import com.ds.test.repository.leaveapplication.module.*;
import com.ds.test.repository.leaveapplication.service.*;

@DBTable(configKey="fdt",cname="请假审批单表",primaryKey="uuid",tableName="leaveapplication")
@RepositoryAnnotation
@Entity
public interface ILeaveapplication  {

    @Uid
    @DBField(cnName="主键",length=36,dbFieldName="uuid")
    public String getUuid();

    public void setUuid(String  uuid);

    @CustomAnnotation(caption="学号")
    @DBField(cnName="学号",length=10,dbFieldName="studentid")
    public String getStudentid();

    public void setStudentid(String  studentid);

    @CustomAnnotation(caption="姓名")
    @DBField(cnName="姓名",length=50,dbFieldName="studentname")
    public String getStudentname();

    public void setStudentname(String  studentname);

    @CustomAnnotation(caption="专业/方向")
    @DBField(cnName="专业/方向",length=50,dbFieldName="major")
    public String getMajor();

    public void setMajor(String  major);

    @CustomAnnotation(caption="导师")
    @DBField(cnName="导师",length=50,dbFieldName="advisor")
    public String getAdvisor();

    public void setAdvisor(String  advisor);

    @CustomAnnotation(caption="请假日期")
    @ComboInputAnnotation(inputType=ComboInputType.date)
    @FieldAnnotation(componentType=ComponentType.ComboInput)
    @DBField(cnName="请假日期",length=0,dbType=ColType.DATE,dbFieldName="leavedate")
    public Date getLeavedate();

    public void setLeavedate(Date  leavedate);

    @CustomAnnotation(caption="请假时间")
    @ComboInputAnnotation(inputType=ComboInputType.time)
    @FieldAnnotation(componentType=ComponentType.ComboInput)
    @DBField(cnName="请假时间",length=0,dbType=ColType.TIME,dbFieldName="leavetime")
    public Date getLeavetime();

    public void setLeavetime(Date  leavetime);

    @CustomAnnotation(caption="请假课程")
    @DBField(cnName="请假课程",length=50,dbFieldName="coursename")
    public String getCoursename();

    public void setCoursename(String  coursename);

    @CustomAnnotation(caption="任课老师")
    @DBField(cnName="任课老师",length=50,dbFieldName="instructor")
    public String getInstructor();

    public void setInstructor(String  instructor);

    @CustomAnnotation(caption="请假事由")
    @FieldAnnotation(componentType=ComponentType.MultiLines,colSpan=-1,manualHeight=200)
    @DBField(cnName="请假事由",length=0,dbType=ColType.TEXT,dbFieldName="reason")
    public String getReason();

    public void setReason(String  reason);

    @CustomAnnotation(caption="审批状态")
    @DBField(cnName="审批状态",length=10,dbFieldName="approvalstatus")
    public String getApprovalstatus();

    public void setApprovalstatus(String  approvalstatus);

    @CustomAnnotation(caption="审批人")
    @DBField(cnName="审批人",length=50,dbFieldName="approvalperson")
    public String getApprovalperson();

    public void setApprovalperson(String  approvalperson);

    @CustomAnnotation(caption="审批单位")
    @DBField(cnName="审批单位",length=50,dbFieldName="approvalunit")
    public String getApprovalunit();

    public void setApprovalunit(String  approvalunit);
    @CustomAnnotation(caption="userId")
    @DBField(cnName="userId",dbFieldName="userid")
    public String getUserid();

    public void setUserid(String  userid);

}

数据映射(实体Bean)

代码语言:javascript复制
package com.ds.test.repository.leaveapplication.module;
import com.ds.enums.db.*;
import com.ds.enums.*;
import com.ds.esd.tool.ui.enums.*;
import java.util.*;
import com.ds.esd.custom.api.annotation.*;
import com.ds.esd.annotation.*;
import com.ds.esd.custom.enums.*;
import com.ds.esd.custom.api.enums.*;
import com.ds.esd.custom.titleblock.enums.*;
import com.ds.esd.custom.tree.enums.*;
import com.ds.esd.custom.form.enums.*;
import com.ds.esd.custom.nav.enums.*;
import com.ds.esd.custom.grid.enums.*;
import com.ds.esd.custom.gallery.enums.*;
import com.ds.test.repository.leaveapplication.module.*;
import com.ds.test.repository.leaveapplication.service.*;

@DBTable(configKey="fdt",cname="请假审批单表",primaryKey="uuid",tableName="leaveapplication")
@RepositoryAnnotation
@Entity
public class Leaveapplication  {
    @Uid
    @DBField(cnName="主键",length=36,dbFieldName="uuid")
    public String uuid;		


    @CustomAnnotation(caption="学号")
    @DBField(cnName="学号",length=10,dbFieldName="studentid")
    public String studentid;

    @CustomAnnotation(caption="姓名")
    @DBField(cnName="姓名",length=50,dbFieldName="studentname")
    public String studentname;

    @CustomAnnotation(caption="专业/方向")
    @DBField(cnName="专业/方向",length=50,dbFieldName="major")
    public String major;

    @CustomAnnotation(caption="导师")
    @DBField(cnName="导师",length=50,dbFieldName="advisor")
    public String advisor;

    @CustomAnnotation(caption="请假日期")
    @ComboInputAnnotation(inputType=ComboInputType.date)
    @FieldAnnotation(componentType=ComponentType.ComboInput)
    @DBField(cnName="请假日期",length=0,dbType=ColType.DATE,dbFieldName="leavedate")
    public Date leavedate;

    @CustomAnnotation(caption="请假时间")
    @ComboInputAnnotation(inputType=ComboInputType.time)
    @FieldAnnotation(componentType=ComponentType.ComboInput)
    @DBField(cnName="请假时间",length=0,dbType=ColType.TIME,dbFieldName="leavetime")
    public Date leavetime;

    @CustomAnnotation(caption="请假课程")
    @DBField(cnName="请假课程",length=50,dbFieldName="coursename")
    public String coursename;

    @CustomAnnotation(caption="任课老师")
    @DBField(cnName="任课老师",length=50,dbFieldName="instructor")
    public String instructor;

    @CustomAnnotation(caption="请假事由")
    @FieldAnnotation(componentType=ComponentType.MultiLines,colSpan=-1,manualHeight=200)
    @DBField(cnName="请假事由",length=0,dbType=ColType.TEXT,dbFieldName="reason")
    public String reason;

    @CustomAnnotation(caption="审批状态")
    @DBField(cnName="审批状态",length=10,dbFieldName="approvalstatus")
    public String approvalstatus;

    @CustomAnnotation(caption="审批人")
    @DBField(cnName="审批人",length=50,dbFieldName="approvalperson")
    public String approvalperson;

    @CustomAnnotation(caption="审批单位")
    @DBField(cnName="审批单位",length=50,dbFieldName="approvalunit")
    public String approvalunit;

    @CustomAnnotation(caption="activityHist")
    @DBField(cnName="activityHist",dbFieldName="activityhistoryid")
    public String activityhistoryid;

    @CustomAnnotation(caption="activityInst")
    @DBField(cnName="activityInst",dbFieldName="activityinstid")
    public String activityinstid;

    @CustomAnnotation(caption="userId")
    @DBField(cnName="userId",dbFieldName="userid")
    public String userid;

    @CustomAnnotation(caption="processInstI")
    @DBField(cnName="processInstI",dbFieldName="processinstid")
    public String processinstid
}

数据接口(定义)

代码语言:javascript复制
package com.ds.test.repository.leaveapplication.service;

import com.ds.enums.db.*;
import com.ds.enums.*;
import com.ds.esd.tool.ui.enums.*;
import java.util.*;
import com.ds.esd.custom.tree.enums.*;
import com.ds.esd.custom.form.enums.*;
import com.ds.esd.custom.nav.enums.*;
import com.ds.esd.custom.grid.enums.*;
import com.ds.esd.custom.gallery.enums.*;
import com.ds.test.repository.leaveapplication.module.*;
import com.ds.test.repository.leaveapplication.service.*;
@Aggregation(type = AggregationType.aggregationEntity,
entityClass=Leaveapplication.class,rootClass= LeaveapplicationService.class)
public interface LeaveapplicationService{

    @ModuleAnnotation(moduleViewType = ModuleViewType.GridConfig)
    @APIEventAnnotation(bindMenu = {CustomMenuItem.reload}, autoRun = true, customRequestData = RequestPathEnum.ctx)
    public List<Leaveapplication> findAll()throws JDSException;

    public List<Leaveapplication> findByWhere(String where)throws JDSException;

    @APIEventAnnotation(bindMenu = {CustomMenuItem.search})
    public List<Leaveapplication> find(Leaveapplication  leaveapplication)throws JDSException;

    @ModuleAnnotation(moduleViewType = ModuleViewType.FormConfig)
    @APIEventAnnotation(bindFormEvent = CustomFormEvent.formLoad,
         bindGridEvent = {CustomGridEvent.editor},  autoRun = true,
         customRequestData = RequestPathEnum.ctx, customResponseData = ResponsePathEnum.form)
    public Leaveapplication getLeaveapplicationInfo(String uuid) throws JDSException;

    @APIEventAnnotation(bindMenu = {CustomMenuItem.save}, callback = {CustomCallBack.ReloadParent, CustomCallBack.Close})
    public Leaveapplication update( Leaveapplication  leaveapplication) throws JDSException ;

    @APIEventAnnotation(bindMenu = {CustomMenuItem.delete}, callback = CustomCallBack.Reload)
    public Boolean delete(String uuid) throws JDSException ;
}

数据接口(实现)

代码语言:javascript复制
package com.ds.test.repository.leaveapplication.service;
import com.ds.enums.db.*;
import com.ds.enums.*;
import com.ds.esd.tool.ui.enums.*;
import com.ds.test.repository.leaveapplication.module.*;
import com.ds.test.repository.leaveapplication.service.*;

@EsbBeanAnnotation
public class LeaveapplicationServiceImpl  implements LeaveapplicationService{

    public List<Leaveapplication> findAll()throws JDSException{
        List<Leaveapplication> leaveapplicationList = new ArrayList<>();
        DAO dao = null;
        try {
           DAOFactory factory = new DAOFactory(Leaveapplication.class);
           dao = factory.getDAO();
           leaveapplicationList = dao.findAll();


          } catch (Exception e) {
             e.printStackTrace();
             throw new JDSException(e);
          } finally {
            if (dao != null) {
                dao.close();
            }
          }
         return leaveapplicationList;
     }


    public List<Leaveapplication> findByWhere(String where)throws JDSException{
          List<Leaveapplication> leaveapplicationList = new ArrayList<>();
          DAO dao =null;
          try {
             DAOFactory factory = new DAOFactory(Leaveapplication.class);
             dao = factory.getDAO();
             leaveapplicationList = dao.find(where);
          } catch (Exception e) {
              e.printStackTrace();
              throw new JDSException(e);
          } finally {
            if (dao != null) {
                dao.close();
            }
        }
        return leaveapplicationList;
     }






   public List<Leaveapplication> find(Leaveapplication  leaveapplication)throws JDSException{
     List<Leaveapplication> leaveapplicationList = new ArrayList<>();
     DAO dao = null;
        try {
           DAOFactory factory = new DAOFactory(Leaveapplication.class);
           dao = factory.getDAO();
          leaveapplicationList = dao.find(leaveapplication);
        } catch (Exception e) {
            e.printStackTrace();
            throw new JDSException(e);
        } finally {
            if (dao != null) {
                dao.close();
            }
        }
        return leaveapplicationList;
     }


     public Leaveapplication getLeaveapplicationInfo(String uuid) throws JDSException {
         Leaveapplication leaveapplication = null;
         DAO<Leaveapplication> dao =null;
           try {
             DAOFactory factory = new DAOFactory(Leaveapplication.class);
             dao = factory.getDAO();
                if (uuid==null||uuid.equals("")){
                leaveapplication=  dao.createBean();
                }else{
                leaveapplication=  dao.findByPrimaryKey(uuid);
                }
           } catch (Exception e) {
               e.printStackTrace();
               throw new JDSException(e);
           } finally {
              if (dao != null) {
                dao.close();
               }
            }
            return   leaveapplication;
       }

     public Leaveapplication update( Leaveapplication  leaveapplication) throws JDSException {
        DAO<Leaveapplication> dao = null;
          try {
             DAOFactory factory = new DAOFactory(Leaveapplication.class);
             dao = factory.getDAO();
             dao.update(leaveapplication);
          } catch (Exception e) {
              e.printStackTrace();
              throw new JDSException(e);
          } finally {
              if (dao != null) {
                dao.close();
              }
          }
            return leaveapplication;
       }

    public Boolean delete(String uuid) throws JDSException {
       DAO<Leaveapplication> dao =null;
         try {
              DAOFactory factory = new DAOFactory(Leaveapplication.class);
              dao = factory.getDAO();
              if (uuid.indexOf(";") > -1) {
                   for (String uid : uuid.split(";")) {
                        dao.delete(uid);
                    }
               } else {
                   dao.delete(uuid);
               }

          } catch (Exception e) {
              e.printStackTrace();
              throw new JDSException(e);
          } finally {
              if (dao != null) {
                 dao.close();
              }
          }
           return true;
       }
 }

二,应用聚合

聚合应用是领域模型建模中最为重要的一个环节,这个环节的重点是将,资源库相应的操作接口转换为领域模型应用,通过web聚合器输出位web 引用发布,同时将实体操作转换为领域事件供DDD内部完成调度处理。而聚合应用则是将视图与模型有机结合实现聚合实体以及聚合根应用。同时抽取相应的数据字典以及应用域作为上层的支撑。

(1)导入资源库接口转换为通用聚合实体

(2)查看调整聚合实体配置

(3)查看调整聚合实体代码结构

(4)聚合实体配置

(5)领域事件

(6)实现代码

代码语言:javascript复制
package com.ds.test.domain.leaveapplication.api;
import org.springframework.stereotype.*;
import org.springframework.core.annotation.*;
import com.ds.esd.custom.action.module.*;
import com.ds.esd.custom.titleblock.enums.*;
import com.ds.esd.custom.tree.enums.*;
import com.ds.esd.custom.form.enums.*;
import com.ds.esd.custom.nav.enums.*;
import com.ds.esd.custom.grid.enums.*;
import com.ds.esd.custom.gallery.enums.*;
import com.ds.esd.custom.annotation.toolbar.*;
import com.ds.test.domain.leaveapplication.*;
import com.ds.test.domain.leaveapplication.api.*;
import test.leaveapplication.*;

  @Aggregation(rootClass=LeaveapplicationService.class,
   entityClass=Leaveapplication.class,type=AggregationType.aggregationEntity)
  @RequestMapping(value="/test/leaveapplication")
  @Controller
public interface LeaveapplicationServiceAPI  {
     @APIEventAnnotation(bindMenu=CustomMenuItem.reload,customRequestData=RequestPathEnum.ctx,autoRun=true)
     @ModuleAnnotation(moduleViewType=ModuleViewType.GridConfig)
     @GridViewAnnotation
     @CustomAnnotation
     @RequestMapping(value="FindAll")
     @ResponseBody
     public   ListResultModel<List<FindAll>>  findAll ();
    
     @APIEventAnnotation(bindFormEvent=CustomFormEvent.formLoad,
     customRequestData=RequestPathEnum.ctx,autoRun=true,
     bindGridEvent=CustomGridEvent.editor,customResponseData=ResponsePathEnum.form)
     @ModuleAnnotation(moduleViewType=ModuleViewType.FormConfig)
     @FormViewAnnotation
     @RequestMapping(value="LeaveapplicationInfo")
     @ResponseBody
     public   ResultModel<LeaveapplicationInfo>  getLeaveapplicationInfo (String uuid);
    
     @APIEventAnnotation(bindMenu=CustomMenuItem.save,callback={CustomCallBack.ReloadParent,CustomCallBack.Close})
     public   ResultModel<Leaveapplication>  update (@RequestBody Leaveapplication leaveapplication);
    
     @APIEventAnnotation(bindMenu=CustomMenuItem.search)
     public   ListResultModel<List<Leaveapplication>>  find (Leaveapplication leaveapplication);
    
     @APIEventAnnotation(bindMenu=CustomMenuItem.delete,callback=CustomCallBack.Reload)
     @RequestMapping(value="delete")
     @ResponseBody
     public   ResultModel<Boolean>  delete (String uuid);
    
     @RequestMapping(value="findByWhere")
     @ResponseBody
     public   ListResultModel<List<Leaveapplication>>  findByWhere (String where);
    
}

三,视图修饰

(1)视图结构

视图域是在完成初步聚合实体建模后,根据具体的模型来构建视图体系,这些体系中根据实体的结构来构建视图的结构,最终通过,代码的方式展现处理。

视图模版种类:

视图模版具体化后工程结构:

(2)视图配置

(3)视图修饰

为列表增加菜单

为列表增加分页栏

为表单字段子域配置

配置 模块编译输出

添加图片注释,不超过 140 字(可选)

(4)列表视图源码

代码语言:javascript复制
package test.leaveapplication;

import com.ds.config.*;
import java.util.*;
import com.ds.esd.custom.action.module.*;
import com.ds.esd.custom.annotation.*;
import com.ds.esd.custom.bean.enums.*;
import com.ds.esd.custom.annotation.toolbar.*;
import org.springframework.web.bind.annotation.*;

 @PageBar
 @GridRowCmd
 @MenuBarMenu(domainId="test")
 @RowHead
 @GridAnnotation(uidColumn="uuid",customMenu={GridMenu.Delete,GridMenu.Reload,GridMenu.Add})
     public interface FindAll {
     
       @CustomAnnotation(caption="请假事由")
       @GridColItemAnnotation(width="8.0em")
       public String getReason();

       public void setReason(String   reason);
       @CustomAnnotation(caption="专业/方向")
       @GridColItemAnnotation(width="8.0em")
       public String getMajor();

       public void setMajor(String   major);
       @CustomAnnotation(caption="userId")
       @GridColItemAnnotation(width="8.0em")
       public String getUserid();

       public void setUserid(String   userid);
       @CustomAnnotation(caption="学号")
       @GridColItemAnnotation(width="8.0em")
       public String getStudentid();

       public void setStudentid(String   studentid);
       @CustomAnnotation(caption="姓名")
       @GridColItemAnnotation(width="8.0em")
       public String getStudentname();

       public void setStudentname(String   studentname);
       @CustomAnnotation(caption="请假日期")
       @GridColItemAnnotation(width="8.0em",inputType=ComboInputType.date)
       public Date getLeavedate();

       public void setLeavedate(Date   leavedate);
       @CustomAnnotation(caption="任课老师")
       @GridColItemAnnotation(width="8.0em")
       public String getInstructor();

       public void setInstructor(String   instructor);
       @CustomAnnotation(caption="请假时间")
       @GridColItemAnnotation(width="8.0em",inputType=ComboInputType.time)
       public Date getLeavetime();

       public void setLeavetime(Date   leavetime);
       @CustomAnnotation(caption="请假课程")
       @GridColItemAnnotation(width="8.0em")
       public String getCoursename();

       public void setCoursename(String   coursename);
       @CustomAnnotation(caption="processInstI")
       @GridColItemAnnotation(width="8.0em")
       public String getProcessinstid();

       public void setProcessinstid(String   processinstid);
       @CustomAnnotation(caption="导师")
       @GridColItemAnnotation(width="8.0em")
       public String getAdvisor();

       public void setAdvisor(String   advisor);
       @CustomAnnotation(caption="审批单位")
       @GridColItemAnnotation(width="8.0em")
       public String getApprovalunit();

       public void setApprovalunit(String   approvalunit);
       @CustomAnnotation(caption="审批状态")
       @GridColItemAnnotation(width="8.0em")
       public String getApprovalstatus();

       public void setApprovalstatus(String   approvalstatus);
       @CustomAnnotation(caption="审批人")
       @GridColItemAnnotation(width="8.0em")
       public String getApprovalperson();

       public void setApprovalperson(String   approvalperson);
    
       @CustomAnnotation(uid=true,hidden=true,index=1)
       @GridColItemAnnotation(width="8.0em")
       public String getUuid();

       public void setUuid(String   uuid);
       @CustomAnnotation(index=17)
       @GridColItemAnnotation(width="8.0em",flexSize=true)
       public String getFormTitle();

       public void setFormTitle(String   formTitle);

}

(5)表单视图源码

代码语言:javascript复制
package test.leaveapplication;
import com.ds.config.*;
import java.util.*;
import com.ds.esd.tool.ui.component.navigation.*;
import com.ds.esd.tool.ui.component.form.*;
import com.ds.web.*;
import com.ds.esd.custom.enums.*;
import com.ds.esd.dsm.aggregation.*;
import com.ds.esd.custom.field.*;
import com.ds.esd.custom.field.combo.*;


 @FormAnnotation
     public interface LeaveapplicationInfo  {
     
     @FieldAnnotation(componentType=ComponentType.Label,colSpan=-1,manualHeight=60)
     @CustomAnnotation(index=30,caption="LeaveapplicationInfo")
     @LabelAnnotation(hAlign=HAlignType.center,fontSize="3em")
     public String getFormTitle();
     
     public void setFormTitle(String   formTitle);
     
     @FieldAnnotation(componentType=ComponentType.ComboInput,colSpan=-1)
     @CustomAnnotation(index=1,caption="请假事由")
     public String getReason();
     
     public void setReason(String   reason);
     
     @CustomAnnotation(index=2,caption="专业/方向")
     @InputAnnotation
     public String getMajor();
     
     public void setMajor(String   major);
     
     @FieldAnnotation(componentType=ComponentType.ComboInput)
     @CustomAnnotation(index=3,caption="请假时间")
     @ComboDateAnnotation
     public Date getLeavetime();
     
     public void setLeavetime(Date   leavetime);
     
     @CustomAnnotation(index=4,caption="导师")
     @InputAnnotation
     public String getAdvisor();
     
     public void setAdvisor(String   advisor);
     
     @FieldAnnotation(componentType=ComponentType.ComboInput)
     @CustomAnnotation(index=5,caption="请假日期")
     @ComboDateAnnotation
     public Date getLeavedate();
     
     public void setLeavedate(Date   leavedate);
     
     @FieldAnnotation(componentType=ComponentType.HiddenInput)
     @CustomAnnotation(index=6,caption="processInstI")
     @InputAnnotation
     public String getProcessinstid();
     
     public void setProcessinstid(String   processinstid);
     
     @CustomAnnotation(index=7,caption="学号")
     @InputAnnotation
     public String getStudentid();
     
     public void setStudentid(String   studentid);
     
     @CustomAnnotation(index=8,caption="姓名")
     @InputAnnotation
     public String getStudentname();
     
     public void setStudentname(String   studentname);
     
     @CustomAnnotation(index=9,caption="审批单位")
     @InputAnnotation
     public String getApprovalunit();
     
     public void setApprovalunit(String   approvalunit);
     
     @CustomAnnotation(index=10,caption="请假课程")
     @InputAnnotation
     public String getCoursename();
     
     public void setCoursename(String   coursename);
     
     @CustomAnnotation(index=11,caption="任课老师")
     @InputAnnotation
     public String getInstructor();
     
     public void setInstructor(String   instructor);
     
     @FieldAnnotation(componentType=ComponentType.HiddenInput)
     @CustomAnnotation(index=12,caption="userId")
     @InputAnnotation
     public String getUserid();
     
     public void setUserid(String   userid);
     
     @FieldAnnotation(componentType=ComponentType.HiddenInput)
     @CustomAnnotation(index=13,caption="activityHist")
     @InputAnnotation
     public String getActivityhistoryid();
     
     public void setActivityhistoryid(String   activityhistoryid);
     
     @CustomAnnotation(index=14,caption="审批状态")
     @InputAnnotation
     public String getApprovalstatus();
     
     public void setApprovalstatus(String   approvalstatus);
     
     @CustomAnnotation(index=15,caption="审批人")
     @InputAnnotation
     public String getApprovalperson();
     
     public void setApprovalperson(String   approvalperson);
     
     @FieldAnnotation(componentType=ComponentType.HiddenInput)
     @CustomAnnotation(index=16,caption="activityInst")
     @InputAnnotation
     public String getActivityinstid();
     
     public void setActivityinstid(String   activityinstid);
     
     @FieldAnnotation(componentType=ComponentType.HiddenInput)
     @CustomAnnotation(uid=true,hidden=true,index=17)
     public String getUuid();
     
     public void setUuid(String   uuid);
     
}

四,路由关联

(1)事件绑定

(2)路由关联

ddd

0 人点赞