SOY框架主打使用C/S架构来开发应用。 SOY-Client采用全新的开发模式,完全使用组件化的开发方法, 提供大量的页面模板,组件和控件供开发人员使用, 开发人员可以轻松的开发在BS下几乎无法完成的具有较多用户交互的复杂界面。 对于一个熟悉框架的开发人员足以在半个小时内完成单个数据表的维护功能(从对象建模到数据库的生成, 再到数据的查,插,删,改),对于主从数据表的维护(如订单和订单条目的维护)不超过一个小时。 使得开发人员有更多的时间专注业务逻辑的开发。 传统的界面开发都需要界面设计工具来辅助开发,开发人员往往手工调整控件大小,对齐等等, 设计界面就会花费大量的时间。而且界面设计工具自动生成大量的代码,极难维护。SOY提供自动布局界面的机制, 开发人员只需调用框架API,框架会自动布局组件生成界面,大大加快了用户界面的开发。 表单开发的代码示例:
| | | |
ModelForm form = new ModelForm(Orders.class);//构造订单表单
String hqlCS = "from ChainStore c where c.code like ?";
//往表单加入文本控件,维护流水号
form.appendWidget(new Text(0,"serialNO").setReadOnly(true));
//往表单加入外键控件,维护所属门店
form.appendWidget(new Foreign(0,"chainStore",
hqlCS,"code,name","name"));
//往表单加入日期时间控件,维护最迟配送时间
form.appendWidget(new DateTime(0,"deliveryTime",true));
form.appendWidget(new Text(1,"customerName",true));
form.appendWidget(new Text(1,"customerAddress",true));
form.appendWidget(new Text(1,"customerPhone",true));
// 往表单加入下拉框,维护订单状态
form.appendWidget(new List(2,"orderState",
OrderState.values(),true));
//往表单加入数字控件,维护重量体积
form.appendWidget(new Decimal(2,"quantity"));
form.appendWidget(new Decimal(2,"weight"));
| | | | | |
假定数据字典已经设置,以上代码将完成以下订单表单: 表格开发的代码示例:
| | | |
BaseHqlTable table = new BaseHqlTable(HqlTablepage.this, Orders.class) {
//配置表格按钮动作
@Override
protected BaseTableAction[] getAddationalActions() {
return null;
}
//指定表格查询的HQL语句,将订单按照流水号升序排列
@Override
public String getHql() {
return "FROM Orders o ORDER BY o.serialNO ASC";
}
//配置需在表格中显示的订单的属性
@Override
public Column[] getColumns() {
return new Column[]{
createColumn("serialNO"),
createColumn("createdUser"),
createColumn("customerName"),
//订单状态列,使用枚举格式化器
createColumn("orderState",new
Formatter.getEnumFormat(OrderState.values())),
createColumn("quantity"),
createColumn("weight"),
createColumn("volumn"),
createColumn("chainStore.name"),
//生效日期,使用日期格式化器
createColumn("activedDate",
Formatter.getDateFormat()),
//最迟配送时间,使用日期时间格式化器
createColumn("deliveryTime",
Formatter.getDatetimeFormat()),
createColumn("deliveried"),
createColumn("remarks"),
};
}
};
table.showDefaultButton = false;
table.showScrollBar = true;
| | | | | |
假设数据字典已经设置,以上代码将生成以下表格: |