BeanFlowInvoker実装クラス jp.ossc.nimbus.service.beancontrol.BeanFlowInvokerAccessImpl2

jp.ossc.nimbus.service.beancontrol.BeanFlowInvokerAccessImpl2は、BeanFlowInvokerインタフェースの全ての機能を実装した実装クラスです。

XMLで記述した業務フローを読み込み、アプリケーションに提供します。詳細なHOW TO は、FAQ/業務フローの書き方あれこれ

以下に簡単な業務フロー定義を示します。

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE flows PUBLIC
  3. "-//Nimbus//DTD Nimbus Bean Flow 1.0//JA"
  4. "http://nimbus.sourceforge.jp/dtd/beanflow_1_0.dtd">
  5. <flows>
  6. <!-- テーブル作成フロー -->
  7. <flow name="CreateTable">
  8. <!-- JDBC接続のリソース宣言 -->
  9. <resource name="Connection" service="Nimbus#JDBCTransactionResourceFactory" trancontrol="true"/>
  10. <step>
  11. <target>
  12. <static-field-ref code="java.lang.System" name="out"/>
  13. </target>
  14. <invoke name="println">
  15. <argument>****テーブル作成フロー開始****</argument>
  16. </invoke>
  17. </step>
  18. <!-- Statement生成ステップ -->
  19. <step name="CreateStatement">
  20. <target>
  21. <resource-ref>Connection</resource-ref>
  22. </target>
  23. <result>
  24. <invoke name="createStatement"/>
  25. </result>
  26. </step>
  27. <!-- テーブル作成SQL実行ステップ -->
  28. <step name="ExecuteQuery">
  29. <target>
  30. <step-ref>CreateStatement</step-ref>
  31. </target>
  32. <invoke name="executeQuery">
  33. <argument>create table myuser(name varchar(100), age integer, sex char(1))</argument>
  34. </invoke>
  35. </step>
  36. <finally>
  37. <step>
  38. <target>
  39. <static-field-ref code="java.lang.System" name="out"/>
  40. </target>
  41. <invoke name="println">
  42. <argument>****テーブル作成フロー終了****</argument>
  43. </invoke>
  44. </step>
  45. </finally>
  46. </flow>
  47. <!-- レコード作成フロー -->
  48. <flow name="Insert">
  49. <!-- JDBC接続のリソース宣言 -->
  50. <resource name="Connection" service="Nimbus#JDBCTransactionResourceFactory" trancontrol="true"/>
  51. <step>
  52. <target>
  53. <static-field-ref code="java.lang.System" name="out"/>
  54. </target>
  55. <invoke name="println">
  56. <argument>****レコード作成フロー開始****</argument>
  57. </invoke>
  58. </step>
  59. <!-- PreparedStatement生成ステップ -->
  60. <step name="PreparedStatement">
  61. <target>
  62. <resource-ref>Connection</resource-ref>
  63. </target>
  64. <result>
  65. <invoke name="prepareStatement">
  66. <argument>insert into myuser(name, age, sex) values(?, ?, ?)</argument>
  67. </invoke>
  68. </result>
  69. </step>
  70. <!-- レコード作成ループ -->
  71. <for var="record">
  72. <target>
  73. <input/>
  74. </target>
  75. <!-- レコード作成SQL実行ステップ -->
  76. <step name="Insert">
  77. <target>
  78. <step-ref>PreparedStatement</step-ref>
  79. </target>
  80. <attribute name="String[1]">
  81. <var>record(name)</var>
  82. </attribute>
  83. <attribute name="Int[2]">
  84. <var>record(age)</var>
  85. </attribute>
  86. <attribute name="String[3]">
  87. <var>record(sex)</var>
  88. </attribute>
  89. <invoke name="executeUpdate"/>
  90. </step>
  91. </for>
  92. <finally>
  93. <step>
  94. <target>
  95. <static-field-ref code="java.lang.System" name="out"/>
  96. </target>
  97. <invoke name="println">
  98. <argument>****レコード作成フロー終了****</argument>
  99. </invoke>
  100. </step>
  101. </finally>
  102. </flow>
  103. <!-- レコード検索フロー -->
  104. <flow name="Search">
  105. <step>
  106. <target>
  107. <static-field-ref code="java.lang.System" name="out"/>
  108. </target>
  109. <invoke name="println">
  110. <argument>****レコード検索フロー開始****</argument>
  111. </invoke>
  112. </step>
  113. <!-- 子フロー選択スイッチ -->
  114. <switch>
  115. <!-- 入力がない場合、全検索 -->
  116. <case test="input == null">
  117. <callflow name="SearchAll"/>
  118. </case>
  119. <!-- 入力がある場合、ユーザ指定検索 -->
  120. <default>
  121. <callflow name="SearchOne">
  122. <argument>
  123. <input/>
  124. </argument>
  125. </callflow>
  126. </default>
  127. </switch>
  128. <finally>
  129. <step>
  130. <target>
  131. <static-field-ref code="java.lang.System" name="out"/>
  132. </target>
  133. <invoke name="println">
  134. <argument>****レコード検索フロー終了****</argument>
  135. </invoke>
  136. </step>
  137. </finally>
  138. </flow>
  139. <!-- レコード全検索フロー -->
  140. <flow name="SearchAll">
  141. <step>
  142. <target>
  143. <static-field-ref code="java.lang.System" name="out"/>
  144. </target>
  145. <invoke name="println">
  146. <argument>****レコード全検索フロー開始****</argument>
  147. </invoke>
  148. </step>
  149. <!-- JDBC接続のリソース宣言 -->
  150. <resource name="Connection" service="Nimbus#JDBCTransactionResourceFactory" trancontrol="true"/>
  151. <!-- Statement生成ステップ -->
  152. <step name="CreateStatement">
  153. <target>
  154. <resource-ref>Connection</resource-ref>
  155. </target>
  156. <result>
  157. <invoke name="createStatement"/>
  158. </result>
  159. </step>
  160. <!-- 全検索SQL実行ステップ -->
  161. <step name="Select">
  162. <target>
  163. <step-ref>CreateStatement</step-ref>
  164. </target>
  165. <result>
  166. <invoke name="executeQuery">
  167. <argument>select * from myuser</argument>
  168. </invoke>
  169. </result>
  170. </step>
  171. <!-- 結果リスト生成ステップ -->
  172. <step name="CreateRecords">
  173. <target>
  174. <object code="java.util.ArrayList"/>
  175. </target>
  176. <result>
  177. <this/>
  178. </result>
  179. </step>
  180. <!-- 結果リスト格納ループ -->
  181. <for var="resultSet" end="4">
  182. <target>
  183. <step-ref>Select</step-ref>
  184. </target>
  185. <!-- 結果レコード生成ステップ -->
  186. <step name="CreateRecord">
  187. <target>
  188. <object code="java.util.HashMap"/>
  189. </target>
  190. <result>
  191. <this/>
  192. </result>
  193. </step>
  194. <!-- 結果レコード格納ステップ -->
  195. <step name="SetRecord">
  196. <target>
  197. <step-ref>CreateRecord</step-ref>
  198. </target>
  199. <attribute name="name">
  200. <var>resultSet.String(name)</var>
  201. </attribute>
  202. <attribute name="age">
  203. <var>resultSet.Int(age)</var>
  204. </attribute>
  205. <attribute name="sex">
  206. <var>resultSet.String(sex)</var>
  207. </attribute>
  208. <result>
  209. <this/>
  210. </result>
  211. </step>
  212. <!-- 結果リスト格納ステップ -->
  213. <step name="AddRecord">
  214. <target>
  215. <step-ref>CreateRecords</step-ref>
  216. </target>
  217. <invoke name="add">
  218. <argument type="java.lang.Object">
  219. <step-ref>SetRecord</step-ref>
  220. </argument>
  221. </invoke>
  222. <result>
  223. <this/>
  224. </result>
  225. </step>
  226. </for>
  227. <finally>
  228. <step>
  229. <target>
  230. <static-field-ref code="java.lang.System" name="out"/>
  231. </target>
  232. <invoke name="println">
  233. <argument>****レコード全検索フロー終了****</argument>
  234. </invoke>
  235. </step>
  236. </finally>
  237. </flow>
  238. <!-- 指定ユーザのレコード検索フロー -->
  239. <flow name="SearchOne">
  240. <step>
  241. <target>
  242. <static-field-ref code="java.lang.System" name="out"/>
  243. </target>
  244. <invoke name="println">
  245. <argument>****指定ユーザのレコード検索フロー開始****</argument>
  246. </invoke>
  247. </step>
  248. <!-- JDBC接続のリソース宣言 -->
  249. <resource name="Connection" service="Nimbus#JDBCTransactionResourceFactory" trancontrol="true"/>
  250. <!-- PreparedStatement生成ステップ -->
  251. <step name="PreparedStatement">
  252. <target>
  253. <resource-ref>Connection</resource-ref>
  254. </target>
  255. <result>
  256. <invoke name="prepareStatement">
  257. <argument>select * from myuser where name=?</argument>
  258. </invoke>
  259. </result>
  260. </step>
  261. <!-- ユーザ指定検索SQL実行ステップ -->
  262. <step name="Select">
  263. <target>
  264. <step-ref>PreparedStatement</step-ref>
  265. </target>
  266. <attribute name="String[1]">
  267. <input/>
  268. </attribute>
  269. <result>
  270. <invoke name="executeQuery"/>
  271. </result>
  272. </step>
  273. <!-- 検索結果件数取得ステップ -->
  274. <step name="Count">
  275. <target>
  276. <step-ref>Select</step-ref>
  277. </target>
  278. <result>
  279. <invoke name="next"/>
  280. </result>
  281. </step>
  282. <!-- 検索結果件数判定 -->
  283. <if test="Count == false">
  284. <step name="ReturnNull"/>
  285. <return/>
  286. </if>
  287. <!-- 結果レコード生成ステップ -->
  288. <step name="CreateRecord">
  289. <target>
  290. <object code="java.util.HashMap"/>
  291. </target>
  292. <result>
  293. <this/>
  294. </result>
  295. </step>
  296. <!-- 結果レコード格納ステップ -->
  297. <step name="SetRecord">
  298. <target>
  299. <step-ref>CreateRecord</step-ref>
  300. </target>
  301. <attribute name="name">
  302. <step-ref>Select.String(name)</step-ref>
  303. </attribute>
  304. <attribute name="age">
  305. <step-ref>Select.Int(age)</step-ref>
  306. </attribute>
  307. <attribute name="sex">
  308. <step-ref>Select.String(sex)</step-ref>
  309. </attribute>
  310. <result>
  311. <this/>
  312. </result>
  313. </step>
  314. <finally>
  315. <step>
  316. <target>
  317. <static-field-ref code="java.lang.System" name="out"/>
  318. </target>
  319. <invoke name="println">
  320. <argument>****指定ユーザのレコード検索フロー終了****</argument>
  321. </invoke>
  322. </step>
  323. </finally>
  324. </flow>
  325. <!-- テーブル削除フロー -->
  326. <flow name="DropTable">
  327. <step>
  328. <target>
  329. <static-field-ref code="java.lang.System" name="out"/>
  330. </target>
  331. <invoke name="println">
  332. <argument>****テーブル削除フロー開始****</argument>
  333. </invoke>
  334. </step>
  335. <!-- JDBC接続のリソース宣言 -->
  336. <resource name="Connection" service="Nimbus#JDBCTransactionResourceFactory" trancontrol="true"/>
  337. <!-- Statement生成ステップ -->
  338. <step name="CreateStatement">
  339. <target>
  340. <resource-ref>Connection</resource-ref>
  341. </target>
  342. <result>
  343. <invoke name="createStatement"/>
  344. </result>
  345. </step>
  346. <!-- テーブル削除SQL実行ステップ -->
  347. <step name="ExecuteQuery">
  348. <target>
  349. <step-ref>CreateStatement</step-ref>
  350. </target>
  351. <invoke name="executeQuery">
  352. <argument>drop table myuser</argument>
  353. </invoke>
  354. </step>
  355. <catch var="e" exception="java.sql.SQLException">
  356. <step>
  357. <target>
  358. <var>e</var>
  359. </target>
  360. <invoke name="printStackTrace"/>
  361. </step>
  362. </catch>
  363. <finally>
  364. <step>
  365. <target>
  366. <static-field-ref code="java.lang.System" name="out"/>
  367. </target>
  368. <invoke name="println">
  369. <argument>****テーブル削除フロー終了****</argument>
  370. </invoke>
  371. </step>
  372. </finally>
  373. </flow>
  374. </flows>


業務フロー/BeanFlowInvoker