Java

Droolsブログ : 13 DMN

13 DMN DMN (Decision Model and Notation) とは OMG (Object Management Group) で策定されたビジネスルールについての仕様です。 https://www.omg.org/dmn/ ビジネスプロセス仕様 BPMN (Business Process Model and Notation) のルール版だと思ってよいで…

Droolsブログ : 12 Kogito Examples

12 Kogito Examples Kogito 0.9.1 がリリースされました! 別に切りのいい数字じゃないって? や、そうなんですけど、0.9.1 はドキュメントや examples を整備して「いい感じに仕上げました」マイルストーンリリースなのです。今後もバージョン自体はどんど…

Droolsブログ : 11 Kie Server

11 Kie Server ここまでルールエンジンを実行するために直接 Java コードを書いてましたが、REST API での実行も可能です。その場合 REST エンドポイントを公開するための Web アプリが必要です。そのために Kie Server という Web アプリが提供されています…

Droolsブログ : 10 Business Central

10 Business Central Drools には Business Central という強力な Web UI ツールが付いています。以下、機能を列挙しますと ルール、デシジョンテーブル、データオブジェクト、プロセスなど、ファイルの管理 プロジェクトの管理 ルール、デシジョンテーブル…

Droolsブログ : 09 Executable Model

09 Executable Model この記事は 赤帽エンジニア Advent Calendar 2019 18 日目の記事です。 07 MVEL で書いたように、Drools 7 から Executable Model というオプションが利用可能となっています。これは kjar のビルド時点で DRL を Java クラス化し、実行…

Droolsブログ : 08 no-loop, lock-on-active

08 no-loop, lock-on-active DRL には様々な属性(attribute)を指定することができます。 https://docs.jboss.org/drools/release/7.26.0.Final/drools-docs/html_single/#_rule_attributes 今回はそのなかで、no-loop と lock-on-active を紹介します。 サン…

Droolsブログ : 07 MVEL

07 MVEL MVEL というのは Java ベースの言語で、 Java をより簡単に表記する事を目的にしています。超ざっくり言うと、getter/setter を省略して書いたりできます。 user.name == 'ジョン レノン' ドキュメントはこちらを参照ください。 http://mvel.documen…

Droolsブログ : 06 Quarkus で Drools/jBPM を動かす Kogito

06 Quarkus で Drools/jBPM を動かす Kogito これまで入門ネタを書いてきましたが、今回はちょっと最新情報を! Drools/jBPM には Kogito という新規プロジェクトがあり、Drools/jBPM を軽量に適用するアプローチを目指しています。そしてその中心となるのが…

Droolsブログ : 05 KJAR

05 KJAR 前回まではルールをクラスパスに配置していました。アプリケーションにリソースを組み込むという意味では普通のやりかたです。一方 Drools ではルールをアプリケーションと分離して管理する方法も強力にサポートされています。 ルールを Maven を使…

Droolsブログ : 04 ステートレス ksession

04 ステートレス ksession ここまで、普通の ksession つまり ステートフル ksession を使ってきましたが、今回は ステートレス ksession の使い方です。 ステートレス ksession とは、「ステートフル ksession のラッパーで、insert, fireAllrules, dispose…

Droolsブログ : 03 推論(Inference)

03 推論(Inference) 今回は Drools の重要な機能のひとつ、推論(Inference)を紹介します。推論というと少し難しく聞こえますが、「再評価」と言い換えてもよいです。 サンプルコードはこちらから clone してください。 git clone https://github.com/tkobaya…

Droolsブログ : 02 デシジョンテーブル

02 デシジョンテーブル 前回は HelloWorld ということで基本の DRL でルールを書きましたが、次はよく使われる「デシジョンテーブル」を説明します。 デシジョンテーブル(意思決定表)は以下のように表形式で、条件と結果を表すものです。DRL よりずっと分か…

Droolsブログ : 01 Drools HelloWorld

01 Drools HelloWorld こんにちは、これから Drools についていろいろと書いていこうと思います。サンプルと共に、分かりやすい入門的なエントリを中心にしていく予定です。 Drools というのはオープンソースのルールエンジンで、Java で書かれています。 ht…

HttpURLConnection

OpenJDK 1.7.0_75 で調べた。http のとき URL.openConnection() で返って来るのは sun.net.www.protocol.http.HttpURLConnection。HttpURLConnection.connect() で、sun.net.www.http.HttpClient を生成、保持する。Socket の管理は HttpClient の仕事。conn…

とうふチェック

import java.awt.BorderLayout; import java.awt.Container; import javax.swing.JButton; import javax.swing.JFrame; public class Tofu { public static void main(String args[]) { JFrame frame = new JFrame("タイトルはとうふじゃない"); frame.setBo…

古いJDKのダウンロード

Oracle Java Archive http://www.oracle.com/technetwork/java/archive-139210.html

Debugging MVEL.eval()

You may hit a weird result from MVEL.eval() due to type coercion.http://mvel.codehaus.org/MVEL+2.0+TypingAs the rules of type coercion are not fully documented, you may need to go though source codes to understand what is happening.Here is…

どのJarにクラスが入ってるか探す

public class ClassFinder { public static void main(String[] args) throws Exception { String className = System.getProperty("className"); System.out.println("Going to search " + className); ClassLoader loader = Thread.currentThread().getCon…

-XX:+PrintClassHistogram

(追記:2010/05/12 JDK5以降ではjmap使おうぜ!)Java1.4.2以降で使える、オブジェクト情報をダンプできるようにするオプション、-XX:+PrintClassHistogram*1は百利あって一害なしくらいの勢いでお勧めですが*2、ログを見て、へーと思った点を少し。 verbose:g…

EssのTips少し

setup()が複数回呼ばれる setup()の中でsize()を呼ぶと、再度setup()が実行されます。他にも同様の現象があるかも知れません。初期化処理が2回呼ばれると気づきにくいバグが発生することがあるので、setup()の最初には目立つログを出力しておきましょう。 と…

P5 SyntaxをJavaに変換

というわけで、P5 Syntaxで記述された.pdeファイルをjavaソースに変換するコード例です。 import java.io.BufferedReader; import java.io.FileReader; import processing.app.Preferences; import processing.app.preproc.PdePreprocessor; public class P5…

P5 SyntaxとJava

ProcessingでSketchに書くプログラムの文法はP5 Syntaxと呼ばれます。JavaプログラマからみるとかなりJavaに近いのですが、実際コンパイル時には、まずソースコードをチョイチョイっとJavaに変換した上でアプレット/アプリケーションにビルドします。どんな…

ベースライン+フィルタ

簡単なヤツをちょこっと作ってみました。 PB303 音が大きいかもしれないのでので注意 マウスを左右に動かすことでLow Pass FilterのCutoff Frequencyを操作します。いけてない点としては リアルタイムではなくAudioStreamのバッファサイズの切れ目(=ループ…

How Tomcat Works その10

Chapter 19 : Manager Servlet ごめんなさい、全く使わないです。JMXに対応してからはstatus画面で処理中のリクエストが見えるなど、いい感じにはなっています。 Chapter 20 : JMX-Based Management 本章ではJMXの基本、Commons Modelerの解説から、MBeanに…

How Tomcat Works その9

Chapter 16 : Shutdown Hook Tomcatが必ずshutdown.shで停止されるとは限りません。サーバプロセスがkill -15やCtrl+Cで殺される際に、終了処理をきちんと実行するためにはShutdown Hookを実装する必要があります。 Oracle Technology Network for Java Deve…

ProcessingのサウンドライブラリEssまとめ

Processingは画像系がメインですが音声関係のライブラリもいくつか存在し、現在はKrister Olsson氏が開発したEssが主流っぽいです。しかし(少なくとも私がダウンロードしたバージョンでは)Processing本体にはEssのExampleコードがあるにもかかわらず、Ess…

How Tomcat Works その8

Chapter 15 : Digester 前にも書いたようにTomcatの構造はserver.xmlがそのまま反映されています。xmlの設定ファイルを設定情報オブジェクトにマッピングすることは珍しくもなんともないですが、サーバオブジェクトそのものがxmlからマッピングされているソ…

How Tomcat Works その7

Chapter 12 : StandardContext StandardContextはTomcatで使用されているContextの実装クラスです。ContextはひとつのWarに対応し、複数のWrapperを保持します。Wrapperの他にStandardContextが管理するのはアプリをロードするWebappLoader、URLマッピングを…

How Tomcat Works その6

Chapter 9 : Manager TomcatでManagerといえばSession Managerです。Sessionオブジェクトをライフサイクルを管理する以外には、永続化やレプリケーションが重要なタスクです。この本ではあまり突っ込んで書かれていないですが、DeltaManagerとかはなかなか面…

How Tomcat Works その5

Chapter 8 : Loader 本も中盤に差し掛かり、ついにLoaderが登場しました。ちなみにLoaderは「Webアプリケーションのローダ」で、実装クラスはWebappLoaderです。クラスローダはLoaderが保持する一要素、という位置づけで、実装クラスはWebappClassLoaderです…