Используйте платформы low-code для создания решений предметно-ориентированного проектирования (DDD)
Используйте платформы low-code для создания решений предметно-ориентированного проектирования (DDD)

Предисловие

По мере того как потребность в цифровой трансформации на предприятиях растет, платформы low-code привлекают все больше внимания как метод быстрой разработки и развертывания бизнес-приложений. Доменно-ориентированное проектирование (DDD) — это архитектурный стиль программного обеспечения, предназначенный для лучшего удовлетворения сложных потребностей бизнеса. Объединение этих двух технологий позволяет создать гибкие и удобные в обслуживании приложения.

В этом приложении мы воспользуемся гибкостью платформ low-code и архитектурными преимуществами DDD для создания устойчивого решения.

В этой статье анализ начнем с одного из наиболее распространенных примеров.

1. Построение модели

Построение модели в основном включает в себя выполнение или сопоставление отношений структурированных данных (1:1, 1:N, N:N) на основе таблиц базы данных. В примере для демонстрации используется одна настольная модель. В то же время информация об интерфейсе, абстрагированная на уровне библиотеки ресурсов, регистрируется в модели предметной области DDD посредством аннотаций, что делает операции уровня персистентности видимыми и доступными. Конкретные методы работы следующие:

(1) Войдите в управление библиотекой ресурсов:

Библиотека ресурсов — это особая форма репозитория модели предметной области, которая в основном управляет ресурсами базы данных и сопоставленными библиотеками классов DAO и соответствующими библиотеками операций интерфейса.

(2) Добавьте ресурсы таблицы библиотеки.

После завершения импорта подключения к данным библиотечные таблицы и бизнес-представления могут быть получены динамически. После завершения импорта библиотечных таблиц библиотека ресурсов завершает соответствующую работу по созданию кода.

(3) Начать строительство

Построение кода в основном основано на установленной модели персистентности, а соответствующая структура кода строится в соответствии с библиотекой управления шаблонами.

Добавьте комментарий к изображению, не более 140 слов (по желанию)

(4) Просмотр результатов сборки (код)

После завершения сборки сгенерированный код можно просмотреть в Интернете.

(5) Скомпилировать код

После завершения построения кода соответствующая работа по компиляции кода может быть завершена автоматически или вручную. После завершения компиляции соответствующая информация библиотеки классов будет синхронизирована с библиотекой модели предметной области, что позволяет модели предметной области построить соответствующую совокупную прикладную систему. на основе шаблона.

(6) Примеры кода

Соответствующие примеры кода приведены ниже:

Интерфейс модели анемии (I**Класс)

Язык кода: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 (configkeke = "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="Основное")
    public String getMajor();

    public void setMajor(String  major);

    @CustomAnnotation(caption="Репетитор")
    @DBField(cnName="Tutor",length=50,dbFieldName="советник")
    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="время отпуска")
    public Date getLeavetime();

    public void setLeavetime(Date  leavetime);

    @CustomAnnotation(caption="Покинуть курс")
    @DBField(cnName="Покинуть курс",length=50,dbFieldName="имякурса")
    public String getCoursename();

    public void setCoursename(String  coursename);

    @CustomAnnotation(caption="Учитель")
    @DBField(cnName="учитель",length=50,dbFieldName="инструктор")
    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="причина")
    public String getReason();

    public void setReason(String  reason);

    @CustomAnnotation(caption="Статус утверждения")
    @DBField(cnName="Состояние утверждения",length=10,dbFieldName="статус утверждения")
    public String getApprovalstatus();

    public void setApprovalstatus(String  approvalstatus);

    @CustomAnnotation(caption="Утверждающий")
    @DBField(cnName="Approvalperson",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);

}

Отображение данных (Entity Beans)

Язык кода: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 (configkeke = "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="Основное")
    public String major;

    @CustomAnnotation(caption="Репетитор")
    @DBField(cnName="Tutor",length=50,dbFieldName="советник")
    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="время отпуска")
    public Date leavetime;

    @CustomAnnotation(caption="Покинуть курс")
    @DBField(cnName="Покинуть курс",length=50,dbFieldName="имякурса")
    public String coursename;

    @CustomAnnotation(caption="Учитель")
    @DBField(cnName="учитель",length=50,dbFieldName="инструктор")
    public String instructor;

    @CustomAnnotation(caption="Причина отпуска")
    @FieldAnnotation(componentType=ComponentType.MultiLines,colSpan=-1,manualHeight=200)
    @DBField(cnName="причина запроса отпуска",length=0,dbType=ColType.TEXT,dbFieldName="причина")
    public String reason;

    @CustomAnnotation(caption="Статус утверждения")
    @DBField(cnName="Состояние утверждения",length=10,dbFieldName="статус утверждения")
    public String approvalstatus;

    @CustomAnnotation(caption="Утверждающий")
    @DBField(cnName="Approvalperson",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;
       }
 }

2. Агрегация приложений

Приложение агрегации является наиболее важным звеном в моделировании модели предметной области. Целью этой ссылки является преобразование соответствующего рабочего интерфейса библиотеки ресурсов в приложение модели предметной области, вывод его через веб-агрегатор и публикация в виде веб-ссылки, а также по адресу. В то же время операции с объектами преобразуются в домен. События используются для планирования и обработки в 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);
    
}

3. Посмотреть модификацию

(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);
     
}

4. Ассоциация маршрутизации

(1) Привязка событий

(2) Ассоциация маршрутизации

ddd
boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода