一、与业务表关联的实体bean应实现com.szboanda.platform.workflow.definition.Ibusiness接口或者继承其子类com.szboanda.platform.workflow.engine.AbstractBusiness类。Ibusiness接口中定义的一系列setter方法是为了把业务表中的数据写入到流程表中。应始终给businessId(业务编号)、workflowId(流程实例编号)、dwmc(单位名称) 这三个属性赋值。
部分示例代码:
- @TableAnnotation(tableName="T_HJJC_WTJCGZDJ",key="RWBH")
- public class TFsfxBusiness extends AbstractBusiness{
- /** 任务编号 */
- private String rwbh;
- /** 办文编号 */
- private String bwbh;
-
- /** 污染源编号 */
- private String wrybh;
- /** 受监测单位名称 */
- private String sjcdwmc;
-
- public void setRwbh(String rwbh){
- this.rwbh = rwbh;
- }
- public String getRwbh(){
- return this.rwbh;
- }
- public void setBwbh(String bwbh){
- this.bwbh = bwbh;
- }
- public String getBwbh(){
- return this.bwbh;
- }
- public void setWrybh(String wrybh){
- this.wrybh = wrybh;
- }
- public String getWrybh(){
- return this.wrybh;
- }
- public void setSjcdwmc(String sjcdwmc){
- this.sjcdwmc = sjcdwmc;
- }
- public String getSjcdwmc(){
- return this.sjcdwmc;
- }
- @Override
- public void setBusinessId(String businessId) {
- this.rwbh = businessId;
- }
- @Override
- public String getBusinessId() {
- return getRwbh();
- }
- @Override
- public void setWorkflowId(String workfloweId) {
- this.bwbh = workfloweId;
- }
- @Override
- public String getWorkflowId() {
- return this.bwbh;
- }
- @Override
- public void setDwmc(String dwmc) {
- this.sjcdwdz = dwmc;
- }
- @Override
- public String getDwmc() {
- return this.sjcdwmc;
- }
- }
二、工作流实现类应继承com.szboanda.platform.workflow.engine.AbstractWorkflow类。我们可以在自己的工作流实现类中重写以下方法以处理自己的业务逻辑。
- /**
- * 流程创建时调用
- * @param workflow
- */
- void onStart(WorkflowEvent event);
- /**
- * 流程结束时调用
- * @param workflow
- */
- void onFinish(WorkflowEvent event);
- /**
- * 流程发生流转时调用
- * 可以通过WorkflowEvent对象获得流程信息getWorkflow(),当前发生流转的步骤信息getStep();
- * 也可以通过event.getStep().getChindrens()获得到下一步的步骤信息
- * @param workflow
- * @param result
- */
- void onTransition(WorkflowEvent event);
- /**
- * 流程发生删除之前调用
- * @param event
- */
- void beforeDelete(WorkflowEvent event);
- /**
- * 流程发生删除后调用
- * @param event
- */
- void onDelete(WorkflowEvent event);
- /**
- * 流程发生回退时调用
- * @param event
- */
- void onSendBack(WorkflowEvent event);
三、在自己的Service类中开启流程。
部分示例代码如下:
- /**
- * 业务逻辑处理,插入
- * @param obj
- */
- public void insert(Object... obj) throws PlatformException {
- TFsfxBusiness tmpTHjjcWtjcgzdj = (TFsfxBusiness) obj[0];
- JdbcDAO dao = new JdbcDAO();
- StringBuffer sql = new StringBuffer();
- if(StringUtils.isEmpty(tmpTHjjcWtjcgzdj.getRwbh())){
- tmpTHjjcWtjcgzdj.setRwbh(getNextId());
- }
-
- sql.append("INSERT INTO T_HJJC_WTJCGZDJ(RWBH,WRYBH,SJCDWMC,BWBH) VALUES(?,?,?,?)");
- TransactionManager manager = null;
- try {
- manager = TransactionManager.getInstance();
- manager.open();
-
- //调用开启流程的方法,传入业务对象及Connection
- startWorkflow(tmpTHjjcWtjcgzdj,manager.getConnection());
- QueryHelper query = new QueryHelper(sql.toString());
- query.addParameter(Types.VARCHAR,tmpTHjjcWtjcgzdj.getRwbh());
- query.addParameter(Types.VARCHAR,tmpTHjjcWtjcgzdj.getWrybh());
- query.addParameter(Types.VARCHAR,tmpTHjjcWtjcgzdj.getSjcdwmc());
- query.addParameter(Types.VARCHAR,tmpTHjjcWtjcgzdj.getBwbh());
-
- dao.executeSQL(manager.getConnection(),query);
- manager.commit();
- } catch (Exception e) {
- manager.rollBack();
- e.printStackTrace();
- }finally{
- CloseUtils.closeConnections(manager.getConnection());
- }
- }
- /**
- * 开启流程
- * @param o
- * @param con
- */
- protected void startWorkflow(Object o,Connection con) {
- //获取流程类型
- String flowType = getRequest().getParameter(WORKFLOW_TYPE);
- //业务对象
- TFsfxBusiness business = (TFsfxBusiness) o;
- //创建一个新的工作流程
- IWorkflow workflow = WorkflowFactory.createNewWorkflow(flowType);
- //获取ActionHelper对象
- ActionHelper helper = (ActionHelper) getRequest().getSession()
- .getAttribute(Constants.SYSTEM_USER_IDENTITY);
- //获取当前用户ID
- String starter = helper.getId();
- //获取工作流程的定义信息
- IWorkflowDefinition deinition = workflow.getWorkflowDefinition();
- //设置流程期限
- deinition.setTimeLimit(30);
- //初始化工作流程
- workflow.init(business);
- //启动工作流实例
- workflow.start(con, starter);
- //标识isAfterStartWorkflow为true
- getRequest().setAttribute("isAfterStartWorkflow", "true");
- }