func (self *RuleEngine) GetFiredExpressions(data *facts.FactCollection) []string { counter := make(map[int]int) for _, k := range data.Keys() { ids, ok := self.expressionIndex[k] if ok { for _, id := range ids { v, exist := counter[id] if !exist { counter[id] = 1 } else { counter[id] = v + 1 } } } } firedExpressions := []string{} for k, v := range counter { if v == self.varCountInExpressions[k] { fmt.Println(self.expressions[k]) ret := expression.CalcReversePolishNotation(self.expressions[k], data) if ret == "true" { fmt.Println("fire expression", self.expressionNames[k], self.expressions[k]) firedExpressions = append(firedExpressions, self.expressionNames[k]) } } } return firedExpressions }