HelloBuri vol.1
最新BuriをHelloWorld風に(画面使わない)超minimumで動かしたメモ。
<<Ⅰ.ソフト準備 for 環境>>
- eclipse3.2.2
- JDK1.5.11
- H2
- JaWE 2.1.1
- s2-dao-codegen
- s2-buri-codegen-extension
- m2eclipse 2.0.4
- subclipse
<<Ⅱ.準備 for s2>>
- m2eclipseよりmavenプロジェクト作成 with encoding=UTF-8
- pomにs2-Buri,geronimo-spec-j2eeのみ指定
- DBはH2なのでそこにもclasspathとおす
- S2.4規約にそったpackage準備
com.waki.bao
com.waki.dao
com.waki.dto
次にS2.4dicon準備(TestCaseしかいじらんけどWarmDeployってことで)
苦労した。っていうかサイトにせっかくある情報をしっかり理解してなかっただけ。。。orz.RTFM > Me
で、これでBao,Daoのコンポーネント定義いらず。楽チン!
各diconはこんな感じ。
1.convention.dicon
"com.waki"
creator.dicon
customizer.dicon
s2DaoCustomizer "aop.traceInterceptor" "j2ee.requiredTx" "bao.interceptor" baoSupportAspectCustomizer
env.txt
it
jdbc.dicon(一部)
"org.h2.Driver" "jdbc:h2:tcp://localhost:9092/wkzk" "wkzk" ""
s2container.dicon
で、最後にTestCaseで読み込むapp.dicon
これだけ。
<<Ⅲ.Daoとテーブル(DB)の作成および準備>>
フローを流れるデータに相当するテーブルを作成、今回はRequestBookテーブルを作る。そのためにS2-dao-codegenとburi-extensionを使用。ただ使いたかったというのと、手入力はくだらんミスを招くので利用できるものは利用する。
んなもので、buri-extensionのreadmeにあるようにS2-dao-codegenに必要なものを上書きするExcelの定義書に今回作るRequestBookの定義をちょこっとかく。(Joinはあとで)フィールド3つぐらい。キーはSequenceで。
そしたら、s2-dao-codegenのサイトにあるとおり進めてantでGO! genフォルダ以下に一式作成されるのでさっきのroot packageにコピー
DDLも作成されるので、Buriテーブル一式と今回作ったやつのテーブル作成を行う。
<<Ⅳ.JaWEでフロー作成(最初はParticipantProvider抜き)>>
- Package作成 複数プロセスをまとめた単位。名前を”図書管理”
- Application作成 名前をOgnlInvoker
- Applicant作成 ”自分”
- Process作成 名前を”要望管理”
絵のように並べる。ポイントは2個目以降のノード(承認待ち)のFinishMode=Manualにする
requestBook.xpdlで保存。(場所はsrc/test/resources/xpdl)
<<Ⅴ.Buri準備>>
1.buri-user.diconの修正
src/test/resources/buri/diconにburi-user.diconを用意する。Buriのexampleから拝借してカストマイズ。
"xpdl/requestBook.xpdl" "図書管理"
2.Bao準備
import com.waki.dto.RequestBookDto; public interface RequestBookBao { public static Class TARGETDTO = RequestBookDto.class; public static String PROCESS = "図書管理.要望管理"; public static String getRequest_ACTIVITY = "申請中"; public List getRequest(); public static String getApproved_ACTIVITY = "承認待ち"; public List getApproved(); public static String request_ACTIVITY = "申請"; public void request(RequestBookDto dto); }
3.TestCase作成
public class BaoTest extends S2TestCase { private RequestBookDao requestBookDao; private RequestBookBao requestBookBao; public BaoTest(String arg0) { super(arg0); } protected void setUp() throws Exception { super.setUp(); include("app.dicon"); } public void testRequestTx() { List datas = null; //DTO準備 RequestBookDto dto = new RequestBookDto(); dto.setRequestDate(new Date()); dto.setRequestName("テスト"); //まだ承認中じゃない。 datas = requestBookBao.getApproved(); assertEquals(datas.size(),0); //申請!(フロー開始->すすめ!) requestBookBao.request(dto); //再度、確認 datas = requestBookBao.getApproved(); assertEquals(datas.size(),1); System.out.println(datas); } }
って感じ。Buriよりdiconでつまづいてた時間が長かった気がする。