動作(zuò)節點

動作(zuò)節點可(kě)以與一個(gè)實現了com.bstek.urule.model.flow.FlowAction接口并配置到Spring中的Bean綁定,這樣在運行(xíng)時(shí),規則流執行(xíng)到這個(gè)動作(zuò)節點時(shí)就會(huì)執行(xíng)與之綁定的FlowAction實現類,動作(zuò)節點屬性如下表所示:

屬性名稱 數(shù)據類型 描述
節點名稱 String 設置當前節點名稱
事件bean String 一實現了com.bstek.urule.model.flow.NodeEvent接口配置在Spring中bean的id,一旦配置在流程進入及離開(kāi)該節點時(shí)會(huì)觸發這個(gè)實現類
動作(zuò)bean String 一個(gè)實現了com.bstek.urule.model.flow.FlowAction接口并配置到Spring中的Bean的ID。

FlowAction接口源碼如下所示:

package com.bstek.urule.model.flow;
import com.bstek.urule.model.flow.ins.FlowContext;
import com.bstek.urule.model.flow.ins.FlowInstance;
/**
 * @author Jacky.gao
 * @since 2015年2月28日
 */
public interface FlowAction {
    /**
     * @param node 當前節點對象
     * @param context 規則流上(shàng)下文件對象
     * @param instance 當前規則流實例對象
     */
    void execute(ActionNode node,FlowContext context,FlowInstance instance);
}

有(yǒu)了動作(zuò)節點,那(nà)麽在規則流中就可(kě)以執行(xíng)具體(tǐ)的Java類中的方法,因為(wèi)該Java類是配置在Spring上(shàng)下文中的,所以類中可(kě)訪問Spring環境所有(yǒu)信息,這樣就可(kě)以做(zuò)一些(xiē)更為(wèi)複雜的業務操作(zuò)。

動作(zuò)節點出入連接線如下表所示:

流入的連接線數(shù)量 流出的連接線數(shù)量
1~n 0~1

在代碼中獲取工作(zuò)區(qū)中的變量或者參數(shù)數(shù)據

KnowledgeSession ks = (KnowledgeSession) flowContext.getWorkingMemory();
Map<String,Object> factMap = ks.getFactManager().getFactMap();
//取工作(zuò)區(qū)中變量
User user = (User) factMap.get("com.bstek.urule.sample.pojo.User");
//如果變量不存在對應的java pojo類,用GeneralEntity
GeneralEntity cust = (GeneralEntity) factMap.get("com.bstek.urule.sample.pojo.Cust");
//取工作(zuò)區(qū)中參數(shù)
double total = (double) ks.getParameter("total");

在代碼中往工作(zuò)區(qū)中添加變量或者參數(shù)數(shù)據

//如果需要往工作(zuò)區(qū)中添加變量數(shù)據
GeneralEntity newUser = new GeneralEntity("com.bstek.urule.sample.pojo.User");
ks.getFactManager().getFactMap().put("com.bstek.urule.sample.pojo.User",newUser);
//如果需要往工作(zuò)區(qū)中添加參數(shù)數(shù)據
ks.getParameters().put("totalScore", 100);

results matching ""

    No results matching ""