にアジェンダを取得します。私は<a href="https://clips.codeplex.com/" rel="nofollow noreferrer">CLIPS.NET</a>と協力し、私はクリップで議題にアクセスできるか疑問クリップ
私はいくつかの入力値を持っており、それは、入力値に基づいてソリューションを生成することができるようにクリップを実行できるようにしたいです。しかし、私はまた、どのルールが厳密に解雇されるのか見たいと思っています。私は今、この
(deftemplate MAIN::action
(slot name (default ?NONE)))
(deftemplate MAIN::input
(slot name)
(slot value (default ?NONE)))
(defrule MAIN::rule0
(input (name test-input) (value 1))
=>
(assert (action (name do-something)))
)
のようなものを持っている問題は、その唯一プリントコンソールに何かとは、私がまたはそのような何か仕事ができる一切の文字列を与えないので、私は(議題)を使用カントです。だから 私はアジェンダを手に入れることができますか?あるいは、ルールが実行された場所(少し不便そうです)を確認するために、すべてのルールに新しい事実を作成する必要がありますか?
void AllNextActivationFunction(
void *theEnv,
DATA_OBJECT_PTR returnValue)
{
unsigned long count;
struct multifield *theList;
void *act;
if (EnvArgCountCheck(theEnv, "all-next-activation", EXACTLY, 0) == -1)
{
EnvSetMultifieldErrorValue(theEnv, returnValue);
return;
}
// Count activations
for (act = EnvGetNextActivation(theEnv, NULL), count = 0;
act != NULL;
act = EnvGetNextActivation(theEnv, act), count++)
{ /* Do Nothing */ }
// Create the multifield
SetpType(returnValue, MULTIFIELD);
SetpDOBegin(returnValue, 1);
SetpDOEnd(returnValue, (long)count);
theList = (struct multifield *) EnvCreateMultifield(theEnv, count);
SetpValue(returnValue, (void *)theList);
// Store values in multifield
for (act = EnvGetNextActivation(theEnv, NULL), count = 1;
act != NULL;
act = EnvGetNextActivation(theEnv, act), count++)
{
SetMFType(theList, count, SYMBOL);
SetMFValue(theList, count, EnvAddSymbol(theEnv, EnvGetActivationName(theEnv, act)));
}
}
void EnvUserFunctions(
void *environment)
{
EnvDefineFunction2(environment, "next-activation", 'w', PTIEF NextActivationFunction, "NextActivationFunction", "00");
EnvDefineFunction2(environment, "all-next-activation", 'm', PTIEF AllNextActivationFunction, "AllNextActivationFunction", "00");
}
をお願いします。一度にすべての次のアクティベーションを取得する方法はありますか?私は何かを試しましたが(私は質問をupdatet)、それは動作していません – MrWoffle
1)SaveCurrentModuleを呼び出す必要はありませんが、あなたはRestoreCurrentModuleへの後続の呼び出しが必要な場合。 setMFTypeとSetMFValueのインデックスは1から始まります。3)SetMFValue呼び出しをSetMFValue(theList、count、EnvAddSymbol(theEnv、EnvGetActivationName(theEnv、act)))で置き換えます。 –
ありがとう! (私は問題のコードを更新しているので、今働いている) – MrWoffle