经过长时间在巴拉纳源头冲浪,我可以自己回答。也许其他人会觉得这很有帮助。 忘记关于balana.xml的任何事情。你需要手工制作,这非常简单。 (但是没找到这个:))
它包括4个步骤。
1)从standardFunctionFactory获取新的工厂代理。所以现在你有可变标准(我的意思是标准功能)工厂的代理。
2)从该代理获取一般工厂(如果您希望在任何地方可以看到您的功能,则为常规;如果您只想要目标或条件,则只需要Targetfactory,如果仅在策略的条件部分中)。
3)将新功能添加到该工厂
4) TRICKY PART 强制抽象FunctionFactory在运行时使用新代理。这是通过将静态成员defaultproxy指向您的新成员来完成的。
所以,长话短说:
FunctionFactoryProxy ff = StandardFunctionFactory.getNewFactoryProxy(); FunctionFactory f = ff.getGeneralFactory(); f.addFunction(new GpsFunction()); FunctionFactory.setDefaultFactory(ff);
完成。
如果有人错过了如何创建自己的新函数,您只需要扩展FunctionBase,Override evaluate,在您自己的构造函数中调用超级构造函数,并覆盖公共静态Set getSupportedIdentifiers()。
再见。