Java触发器

Java触发器是执行后端Java代码逻辑的容器,在客户端视图页面加载时被触发,由开发者通过java程序影响视图页面显示内容。

步骤

  1. 打开视图配置界面,点击"Java触发器"页签
  2. 对事件实现类进行注册/卸载

配置项 说明
Java类名 一个遵循AWS事件接口实现的Java程序,格式:类路径+类名
触发器类型 各种事件名称,不同的事件要求开发人员实现的接口不同,每个事件只允许注册一个类
格式化对象 此项在【触发器类型】选择【格式化界面元素组件的触发器】时可用
注册 将指定的Java类注册到组件,多次为同一个组件执行【注册】等同修改
卸载 将Java类从一个事件中移走

视图加载前的触发器

  • 接口 com.actionsoft.bpms.dw.design.event.DataWindowBeforeLoadEventInterface
  • 示例
import com.actionsoft.bpms.dw.design.event.DataWindowBeforeLoadEventInterface;
import com.actionsoft.bpms.dw.exec.component.DataView;
import com.actionsoft.bpms.server.UserContext;

/**
 * 视图加载前的触发器
 *
 * @param me 用户上下文
 * @param view dw视图对象
 * @return 格式化好的sql语句
 *     说明: 1.必须实现类 com.actionsoft.bpms.dw.design.event.DataWindowBeforeLoadEventInterface
 *             2.此示例实现的是 : admin用户不能查看此视图
 */
public class DataWindowBeforeLoadEvent implements DataWindowBeforeLoadEventInterface {
  public boolean excute(UserContext me, DataView view) {
    if (me.getUID().equals("admin"))
      return false;
    return true;
  }
}

格式化表格SQL语句的触发器

  • 接口 com.actionsoft.bpms.dw.design.event.DataWindowFormatSQLEventInterface
  • 示例
import com.actionsoft.bpms.dw.design.event.DataWindowFormatSQLEventInterface;
import com.actionsoft.bpms.dw.exec.component.DataView;
import com.actionsoft.bpms.server.UserContext;

/**
 * 格式化sql语句的触发器
 * @param me  用户上下文
 *  @param view  dw视图对象
 *  @param sql  sql语句
 * @return 格式化好的sql语句
 * 说明:
 * 1.必须实现类 com.actionsoft.bpms.dw.design.event.DataWindowFormatSQLEventInterface
 * 2.此示例实现的是 : 只有admin用户能够查询所有数据,其他用户只能查看自己创建的信息
 */
public class DataWindowFormatSQLEvent implements DataWindowFormatSQLEventInterface {

  public String formatSQL(UserContext me, DataView view, String sql) {
    if (!"admin".equals(me.getUID())) {
      sql = sql.replace("1=1", "createuser = '" + me.getUID() + "'");
    }
    return sql;
  }

}

格式化表格数据的触发器

  • 接口 com.actionsoft.bpms.dw.design.event.DataWindowFormatDataEventInterface
  • 示例
 import java.sql.ResultSet;
import java.sql.SQLException;

import com.actionsoft.bpms.dw.design.event.DataWindowFormatDataEventInterface;
import com.actionsoft.bpms.dw.exec.component.Column;
import com.actionsoft.bpms.dw.exec.data.DataSourceEngine;
import com.actionsoft.bpms.server.UserContext;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class DataWindowFormatDataEvent implements DataWindowFormatDataEventInterface {
 /**
  * 格式化表格数据的触发器
  *
  * @param me 用户上下文
  * @param JSONArray 数据对象
  * 说明:1.必须实现类 com.actionsoft.bpms.dw.design.event.DataWindowFormatDataEventInterface
  *    2.此示例实现的是 : 如果字段"ZT",为0显示错误图标,为1显示正确图标,为其他显示警示图标
  *    3.如果需要在数据导出时应用格式化数据请实现formatGridExport方法(如果不需要则不实现)
  */
 public void formatData(UserContext me, JSONArray datas) {
  for (Object datao : datas) {
   JSONObject data = (JSONObject) datao;
   String columnValue = data.getString("ZT"); // 注意有些特殊组件的值为JSONObject,请根据情况使用getJSONObject获取相应值
   switch (columnValue) {
   case "0":
    columnValue = "<img src=../apps/_bpm.platform/img/model/form_designer/error.png border=0/>";
    break;
   case "1":
    columnValue = "<img src=../apps/_bpm.platform/img/model/form_designer/ok.png border=0/>";
    break;
   default:
    columnValue = "<img src=../apps/_bpm.platform/img/model/form_designer/warn.png border=0/>";
    break;
    }
   //虚拟字段VIRTUALBUTTON ,组件为按钮不显示
   //data.put("VIRTUALBUTTON" ,"");
   //data.put("COLUMNTYPE_VIRTUALBUTTON", "");
   data.put("ZT" + DataSourceEngine.AWS_DW_FIXED_CLOMUN_SHOW_RULE_SUFFIX, columnValue);
  }
 }

 /**
  * 格式化导出数据
  *
  * @param me 用户session
  * @param rs 数据库结果集
  * @param colModel 字段的相关配置模型
  * @param fieldId 字段名
  * @return null 时不执行
  */
 public String formatGridExport(UserContext me, ResultSet rs, Column colModel, String fieldId) {
  String ss = null;
  try {
   if (fieldId.equals("NAME")) { // 如果名字是NAME
    ss = rs.getString(fieldId) + "Helden sterben nicht!"; // 则执行
   }
  } catch (SQLException e) {
   e.printStackTrace();
  }
  return ss;
 }

/**
 * 报表格式化导出数据
 *
 * @param me
 * @param datas
 */
public void formatReportExport(UserContext me, JSONArray datas) {
  for (Object datao : datas) {
    JSONObject data = (JSONObject) datao;
    String columnValue = data.getString("COLUMNNAME"); // 注意有些特殊组件的值为JSONObject,请根据情况使用getJSONObject获取相应值
    switch (columnValue) {
    case "值1":
      columnValue = "导出值1";
      break;
    case "值2":
      columnValue = "导出值2";
      break;
    default:
      columnValue = "默认导出值";
      break;
    }
    data.put("COLUMNNAME" + DataSourceEngine.AWS_DW_FIXED_CLOMUN_SHOW_RULE_SUFFIX, columnValue);
  }
 }
}

格式化界面元素组件的触发器

  • 接口 com.actionsoft.bpms.dw.design.event.DataWindowCustomizeComponentEventInterface
  • 示例
import com.actionsoft.bpms.dw.design.event.DataWindowCustomizeComponentEventInterface;
import com.actionsoft.bpms.dw.exec.component.AbstractComponent;
import com.actionsoft.bpms.dw.exec.component.Button;
import com.actionsoft.bpms.dw.exec.component.Column;
import com.actionsoft.bpms.dw.exec.component.Condition;
import com.actionsoft.bpms.dw.exec.component.DataGrid;
import com.actionsoft.bpms.dw.exec.component.DataView;
import com.actionsoft.bpms.dw.exec.component.LikeCondition;
import com.actionsoft.bpms.dw.exec.component.Searcher;
import com.actionsoft.bpms.dw.exec.component.Title;
import com.actionsoft.bpms.dw.exec.component.Toolbar;
import com.actionsoft.bpms.dw.exec.component.XCondition;

public class DataWindowCustomizeComponentEvent implements DataWindowCustomizeComponentEventInterface {

  /**
   * 格式化界面元素组件的触发器
   * @param component  各种组件继承的抽象类
   * 说明:
   * 1.必须实现类 com.actionsoft.bpms.dw.design.event.DataWindowCustomizeComponentEventInterface
   * 2.此示例各个组件的几种使用方法
   */
  public void customizeComponent(AbstractComponent component) {
    //button(按钮)组件
    if (component instanceof Button) {
      Button button = (Button) component;
      if ("refresh".equals(button.getRefbuttonid())) {
        button.setIsShow(false);
      }
    }
    //column(字段)组件
    if (component instanceof Column) {
      Column column = (Column) component;
      column.setIsShow(false); //隐藏
      column.setLabel(column.getLabel() + "格式化"); //设置标题
    }
    //datagrid(数据表格)组件
    if (component instanceof DataGrid) {
      DataGrid dataGrid = (DataGrid) component;
      dataGrid.setIsShow(false);//隐藏
      dataGrid.setShowNumberColWidth("80px"); //设置序列号宽度
    }
    //title(标题)组件
    if (component instanceof Title) {
      Title title = (Title) component;
      title.setIsShow(false);//设置显示
      title.setLabel(title.getLabel() + "被格式化"); //设置标题
    }
    //toolbar(工具条)组件
    if (component instanceof Toolbar) {
      Toolbar toolbar = (Toolbar) component;
      toolbar.setIsShow(false);// 隐藏
    }
    //dataview(数据视图)组件
    if (component instanceof DataView) {
      DataView dataView = (DataView) component;
      dataView.setIsShow(false);// 隐藏
    }
    //likecondition(条件查询)组件
    if (component instanceof LikeCondition) {
      LikeCondition likeCondition = (LikeCondition) component;
      if (likeCondition.getLabel().equals("套装")) {//隐藏所有标题是"套装"的组件
        likeCondition.setIsShow(false);
      }
    }
    //condition(范围查询)组件
    if (component instanceof Condition) {
      Condition condition = (Condition) component;
      if (condition.getLabel().equals("前年")) { //隐藏所有标题是"前年"的组件
        condition.setIsShow(false);
      }
    }
    //searcher(查询器)组件
    if (component instanceof Searcher) {
      Searcher searcher = (Searcher) component;
      searcher.setIsShow(false);// 隐藏
    }
    //xcondition(模糊查询/筛选)组件
    if (component instanceof XCondition) {
      XCondition xCondition = (XCondition) component;
      xCondition.setIsShow(false);// 隐藏
    }
  }
}


Seven
 010-62962343-690
 liujx@actionsoft.com.cn
感谢您对该文档的关注!如果您对当前页面内容有疑问或好的建议,请与我联系。如果您需要解答相关技术问题请登录AWS客户成功社区