2017-02-27 6 views
0

私はProject Reactorを使用するアプリケーションの設計方法を理解しようとしています。他の値に基づいて値を更新する必要があるアプリケーションのようなスプレッドシートがあるとします。値には数式が定義されています。ですから、例えば:計算された値を持つ原子炉設計

A = 1.5B + C

私はA、B、Cは全てフラックスのいくつかの種類になると思います(私は、私が使用する特定の実装のわからないんだけど)、

のいずれかの理由値はユーザーの入力に基づいて変化する可能性があります。または、Cが別の式(C = D * Eなど)に基づいている可能性があります。ビジネスの現実は、おそらく、癖のすべての種類があるということですもちろん除いて

A = 1.25B + 1.25C

:しかし、ここでねじれは、A.Jurisdictionは=「MI」場合は、次の式になるのです2つだけではなく、20のバリエーションがあります。

私はオブジェクト指向のやり方でこれを行う方法を知っていますが、反応性ストリーム/ Reactorを使用してそれを行う方法について私の頭を覆そうとしています。

編集:私はどのように/それが宣言的な方法で完全に行うことができるかを調べようとしています。私の研究から

答えて

0

が見えます任意の細胞は前記フラックス中の事象であり、依存細胞に伝播するだろうか?

細胞を連結するために、combineLatestが適応される。その新しい値と他のフラックスからの最後の見た値で、

public Flux<Double> cellA() { 
    if (A.Jurisdiction.equals("MI")) { 
     return Flux.combineLatest(cellB(), cellC(), (b, c) -> 1.25d * b + 1.25d * c); 
    } else { 
     return Flux.combineLatest(cellB(), cellC(), (b, c) -> 1.5d * b + c); 
    } 
} 

新しい値がいずれかのソースセルに来るたびに、Aの磁束が更新されます:あなたはこのような何か(あなたの特定の例を挙げて)を行うことができますBiFunctionへの入力として使用します。

ユーザー入力の更新をFlux<Double>として反映するように「編集可能なセル」(ここでは「式セル」、ここではBとC)が主な難点です。

例えば、Flux.create()を見ることができます。 UIのイベントを編集してFlux<Double>にブリッジしてみてください。

関連する問題