動作(zuò)節點

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

屬性名(míng)稱 數據類型 描述
節點名(míng)稱 String 設置當前節點名(míng)稱
事件bean String 一實現了com.bstek.urule.model.flow.NodeEvent接口配置在Spring中(zhōng)bean的id,一旦配置在流程進入及離開該節點時會觸發這個實現類
動作(zuò)bean String 一個實現了com.bstek.urule.model.flow.FlowAction接口并配置到Spring中(zhōng)的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 規則流上下文(wén)件對象
     * @param instance 當前規則流實例對象
     */
    void execute(ActionNode node,FlowContext context,FlowInstance instance);
}

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

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

流入的連接線(xiàn)數量 流出的連接線(xiàn)數量
1~n 0~1

在代碼中(zhōng)獲取工(gōng)作(zuò)區(qū)中(zhōng)的變量或者參數數據

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

在代碼中(zhōng)往工(gōng)作(zuò)區(qū)中(zhōng)添加變量或者參數數據

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

results matching ""

    No results matching ""