2017-07-26 9 views
0

dsl.DefaultExpanderdsl.DefaultExpanderResolverがあります。 Designとjavadocは私のカスタムエキスパンダーをフローに追加することができます。しかし、私はそれを実際に行う可能性は見つけられませんでした。私のカスタムエクスパンダと解析するためにDSLをどのように達成することができますか? KnowledgeBuilderImplDrools DSLカスタムエキスパンダ

+0

DSLからDRLへの変換に必要なものはほとんどありません。あなた自身のエキスパンダーを書くつもりなら、他のものは必要ありません。エクスパンダはDRLを作成し、DRLコンパイラに渡します。それだけです。 – laune

+0

私たちはBusiness Centrallと統合されることになっています。そのため、ユーザーはDSLのルールを持っている必要があり、BCのエクスパンダが機能します。エクスパンダの実装を変更するには、キー(いくつかの既存のデバッグキーのようなもの)を持たせるのが良いでしょう。 –

答えて

1

まあ、(クラスはDRL/DSLをコンパイルするために使用される)私は、次の方法を参照してください。あなたが見ることができるように、DefaultExpanderがそこにハードコードされているので、私は方法がないと思い

public DefaultExpander getDslExpander() { 
    DefaultExpander expander = new DefaultExpander(); 
    if (this.dslFiles == null || this.dslFiles.isEmpty()) { 
     return null; 
    } 
    for (DSLMappingFile file : this.dslFiles) { 
     expander.addDSLMapping(file.getMapping()); 
    } 
    return expander; 
} 

を他の実装を指定します。

DrlParser.getDefaultResolver()で同じことが起こる場合は、DefaultExpanderResolverは常に何か問題がインスタンス化されます。

私の意見では、自分のセマンティクスに基づいてDRL(外部Drools)を事前に生成してから、生成されたDRLをDroolsに供給するという唯一の方法があります。

希望小売価格:

+0

あなたの返答をありがとう、私はこのスニペットを見た。これが克服できるという希望を持ってください。 –