Clara规则:是否可以将defrecord-s提取到单独的Clojure命名空间中?

Clara规则:是否可以将defrecord-s提取到单独的Clojure命名空间中?,clojure,clara-rule-engine,Clojure,Clara Rule Engine,新的事实插入工作正常,但我找不到修复defrule-s的方法,例如 (defrule is-important "Find important support requests." [SupportRequest (= :high level)] => (println "High support requested!")) [domain/SupportRequest(=:high-level)]由于java.net.URLCla

新的事实插入工作正常,但我找不到修复defrule-s的方法,例如

(defrule is-important
  "Find important support requests."
  [SupportRequest (= :high level)]
  =>
  (println "High support requested!"))
[domain/SupportRequest(=:high-level)]
由于java.net.URLClassLoader/findClass(URLClassLoader.java:436.SupportRequest)上的执行错误(ClassNotFoundException)而无法工作。

(ns clara.compatibility)
(:要求[clara.rules.累加器:作为acc]
[clara.tools.tracing:作为跟踪]
[克拉拉,工具,检查]
[clara.domain:作为域]
[clara.rules:参考:全部])
我之所以要提取这些defrecords,是因为域相当大,我想尽量减少一个文件中的代码行数


有没有办法在不返回到较低级别的事实类型fn和常规Clojure映射的情况下完成这项工作?

Clara希望在这里有一个类(我不知道确切的原因;我希望 为了更好地实现Java互操作(如从Java使用它)

因为
defrecord
:s在其各自的 名称空间/包它们在这里很好

然而,如果你把它们放在规则文件之外的某个地方,你就必须 把它们当作类来处理:你必须
:导入它们

而不是
:要求
:取消它们。

什么是“不起作用”呢?鉴于clara允许使用“clojure记录和java bean”,如果它们不能来自任何地方,我会非常惊讶。你能控制一些显而易见的事情吗?比如:清理、重新启动repl等等,只是为了消除所有残留的东西。ns中的defrecord是否正常工作?例如,在clara之外。@cfrick抱歉,刚刚添加了更多信息-错误是“java.net.URLClassLoader/findClass(URLClassLoader.java:436)处的执行错误(ClassNotFoundException)。SupportRequest”哦,对了,您必须导入它们(不需要)@cfrick ouch,谢谢。你介意把它作为回答而不是评论吗?我接受它作为回答