# 业务规则开发步骤

1 定义bp类

2 开发前后规则

3 组装流程



# 业务规则简易BP demo模板

```
import nc.impl.pubapp.pattern.rule.processer.AroundProcesser;
import nc.bs.dao.BaseDAO;

/**
 * demo 业务bp
 */
public class DemoBusinessBP {

    //操作数据库工具类
    private static BaseDAO dao = new BaseDAO();
    
    /**
     * 后规则
     * DemoVO 替换为自己实际的业务vo
     * @param processer
     */
    private void addAfterRule(AroundProcesser<DemoVO> processer) {
        processer.addAfterRule(new DemoAfterRule());
    }

    /**
     * 前规则
     * DemoVO 替换为自己实际的业务vo
     * @param processer
     */
    private void addBeforeRule(AroundProcesser<DemoVO> processer) {
        processer.addBeforeRule(new DemoBeforeRule());
    }


    /**
     * do some business
     * DemoVO 替换为自己实际的业务vo
     * @param vos
     */
    public void doBusiness(DemoVO[] vos){

        AroundProcesser processor = new AroundProcesser(DemoPoint.DemoBusinessBP);
        this.addBeforeRule(processor);
        this.addAfterRule(processor);

        processor.before(vos);

        //dobusiness  todo...
        System.out.println("do some business");

        processor.after(vos);

    }
    
    /**
     * 获取DAO
     * @return
     */
    private BaseDAO getDAO() {
        return dao;
    }


}

```



# 业务规则扩展点枚举 demo

```java
import nc.impl.pubapp.pattern.rule.plugin.IPluginPoint;

/**
 * 示例扩展点 枚举
 */
public enum DemoPoint implements IPluginPoint {

    /**
     * demo 业务BP
     */
    DemoBusinessBP("DemoBusinessBP类全路径");

    // 插入点
    private String point;

    private DemoPoint(String point) {
        this.point = point;
    }

    @Override
    public String getComponent() {
        return "组件编码";
    }

    @Override
    public String getModule() {
        return "模块编码";
    }

    @Override
    public String getPoint() {
        return this.point;
    }

}

```

# 业务规则扩展-前规则 demo

```java
import nc.impl.pubapp.pattern.rule.IRule;

/**
 * 前规则
 */
public class DemoBeforeRule implements IRule<DemoVO> {

    @Override
    public void process(DemoVO[] vos) {

        System.out.println("execute DemoBeforeRule");

    }

}


```

# 业务规则扩展-后规则 demo

```java
import nc.impl.pubapp.pattern.rule.IRule;

/**
 * 后规则
 */
public class DemoAfterRule  implements IRule<DemoVO> {

    @Override
    public void process(DemoVO[] vos) {

        System.out.println("execute DemoAfterRule");

    }

}

```

# 业务规则使用 demo

```
DemoBusinessBP demoBusinessBP = new DemoBusinessBP();
demoBusinessBP.doBusiness(new DemoVO[]{vo});
```