Oracle® Fusion Middleware Oracle Business Process Management Studioでのビジネス・プロセスの開発 12c (12.2.1.1) E79347-01 |
|
前 |
次 |
この章では、BPMスクリプトを使用してBPMプロジェクト内のデータ・オブジェクトにアクセスし、変更する方法について説明します。
この章の内容は次のとおりです。
Oracle BPMは、スクリプト言語としてGroovy 2.1コンパイラおよでびランタイム(静的コンパイルを有効化)をサポートしています。
スクリプティングは次のコンテキストで使用できます。
スクリプト・タスク
「スクリプト・タスクの実装方法」を参照してください
ビジネス・オブジェクト・メソッド
「ビジネス・オブジェクト・メソッドの使用」を参照してください
スクリプト・ブロック内では、ビジネス・カタログ、Java 6 SE APIライブラリ、およびBPMプロジェクトに含まれているすべてのJARファイルからタイプを作成および使用できます。
BPMコード・エディタには、基本的な構文の強調表示、エラーと警告の強調表示、およびコードの補完の機能が備わっています。
基本的な構文の強調表示
語のカテゴリに応じて様々な色およびフォントでコードを表示します。構文の強調表示は、開発者が自身のコード内の誤りを発見するためにも役立ちます。
エラーおよび警告の強調表示
コードの記述中にコンパイル・エラーおよび警告を強調表示します。問題の説明も提供されます。
コードの補完
ユーザーが入力を終了する前に、ユーザーが入力しようとしている語または語句を予測します。
コード・エディタでは、次のタイプのコード補完がサポートされています。
継承されたメンバー(extends/implements)
インスタンス・メンバー(fields/methods)
クラス・メンバー(fields/methods)
ローカル変数
メソッド・パラメータ
プリミティブ・タイプ
クラス名(importが存在しない場合、自動的に追加されます)
このエディタには、オプションが関連性順に表示されます。関連性が同じオプションが複数ある場合は、アルファベット順に並べられます。
図25-1は、スクリプト・タスクが実装されているスクリプト・エディタを示しています。
スクリプティング・カタログには、スクリプトに使用できるすべてのライブラリが含まれています。これらのライブラリには、コンポーネントが含まれており、それらは、それらをインスタンス化してそれらのメソッドを呼び出すことでアクセスできます。これらのコンポーネントは、モジュールに格納されています。
スクリプティング・カタログには、次のコンポーネントが含まれています。
デフォルトGroovyライブラリ
デフォルトJavaライブラリ
ビジネス・カタログ・コンポーネント
インポートされたカスタム・ライブラリ
プロジェクトに役立つ関数が含まれている外部Javaライブラリを使用できます。これによって、様々な問題を解決し、Java開発者が使用できる膨大な数のライブラリから利益を得られます。
これらのJavaライブラリをインポートして、Groovyスクリプトから呼び出すことができます。
Javaライブラリをインポートすると、それはそのBPMプロジェクトのスクリプティング・カタログの一部になり、記述するスクリプトから使用できるようになります。
BPMプロジェクトの要素のいくつかの値にアクセスでき、それらの値を操作したり、それらを使用して処理を実行できます。
スクリプトからBPMプロジェクトの次の要素にアクセスできます。
プロジェクト・データ・オブジェクト
プロセス・データ・オブジェクト
ビジネス・パラメータ
プロジェクト・データ・オブジェクトおよびプロセス・データ・オブジェクトは、スクリプト内で変数として使用できます。
Javaオブジェクトの属性およびメソッドにアクセスする場合と同じ方法で、ビジネス・オブジェクトとして定義されているデータ・オブジェクトの属性およびメソッドにアクセスできます。
例: 個人をモデル化するビジネス・データ・オブジェクトを作成しました。このビジネス・オブジェクトには、名前属性と昇格メソッドが含まれています。
タイプ「個人」のプロセス・データ・オブジェクトも定義しました。
名前属性には次のコードを使用してアクセスできます。
person.name;
昇格メソッドには次のコードを使用してアクセスできます。
person.promote;
ビジネス・オブジェクトのインスタンスを作成し、それをローカル変数に格納する手順は次のとおりです。
ビジネス・オブジェクトをインポートします。
ビジネス・オブジェクトのインポート方法の詳細は、「ビジネス・カタログからのビジネス・オブジェクトのインポート」を参照してください。
ビジネス・オブジェクトのタイプを指定して変数を作成し、それにビジネス・オブジェクトの新しいインスタンスを割り当てます。
次の例では、「個人」タイプをインポートし、タイプpersonのローカル変数を作成し、値をその属性に割り当て、ローカル・インスタンスを「個人」プロセス・データ・オブジェクトに割り当てます。
def localPerson = new Person(); localPerson.firstName = "John"; localPerson.lastName = "Cooper" this.person = localPerson;
ビジネス・カタログで定義されているビジネス・オブジェクトをスクリプトで使用できます。これを行うには、最初にビジネス・オブジェクトをインポートする必要があります。
ビジネス・カタログからビジネス・オブジェクトをインポートする手順は次のとおりです。
変数predefは、すべてのスクリプト・タスク・メソッド・コンテキストで使用できます。この変数によって、使用可能な事前定義済変数にアクセスできます。
次の表は、サポートされている事前定義済変数と、Groovy式を使用してそれらにアクセスする方法を示しています。事前定義済変数のアクセス・タイプが読取り/書込みである場合、Groovy式を使用してその事前定義済変数の値を表示し、それを変更できます。アクセス・タイプが読取り専用である場合、その事前定義済変数の値は表示のみ可能です。
注意:
BPMNは、データに不可欠なアクションのみを実行し、データの信頼性は確認しません。事前定義の変数値は検証する必要がありますが、クライアント・アプリケーションで、正しい値を設定する必要があります。表25-1 事前定義済変数にアクセスするためのGroovy式
事前定義済変数 | Groovy式 | アクセス・タイプ |
---|---|---|
組織単位 |
predef.organizationalUnit |
読取り/書込み |
タイトル |
predef.title |
読取り/書込み |
作成日 |
predef.creationDate |
読取り専用 |
変更日 |
predef.modifyDate |
読取り専用 |
インスタンス番号 |
predef.instanceNumber |
読取り専用 |
インスタンスID |
predef.instanceId |
読取り専用 |
ECID |
predef.ecid |
読取り専用 |
プロセスDN |
predef.processDN |
読取り専用 |
対話ID |
predef.conversationId |
読取り専用 |
コンポーネント・タイプ |
predef.component.type |
読取り専用 |
コンポーネント名 |
predef.component.name |
読取り専用 |
状態 |
predef.state |
読取り専用 |
コンポジット名 |
predef.composite.name |
読取り専用 |
コンポジットDN |
predef.composite.dn |
読取り専用 |
コンポジット・ラベル |
predef.composite.label |
読取り専用 |
コンポジット・リビジョン |
predef.composite.revision |
読取り専用 |
コンポジット・インスタンスID |
predef.composite.instanceId |
読取り専用 |
アクティビティ名 |
predef.activity.name |
読取り専用 |
優先度 |
predef.priority |
読取り/書込み |
作成者 |
predef.creator |
読取り/書込み |
所有者 |
predef.owner |
読取り/書込み |
所有者タイプ |
predef.ownerType |
読取り/書込み |
アクション |
predef.action |
読取り/書込み |
有効期限 |
predef.expiration |
読取り/書込み |
レビューア |
predef.reviewer |
読取り/書込み |
レビューア・タイプ |
predef.reviewerType |
読取り/書込み |
期日 |
predef.dueDate |
読取り/書込み |
BPMNスクリプト・タスクは、スクリプトを実行するアクティビティです。
このスクリプトは、Groovyで記述されており、BPMプロジェクトで定義されているデータ・オブジェクトの値にアクセスして変更できます。
この項では、スクリプトで使用されるXMLスキーマ・データ型および型の説明のマッピングを示します。
表25-2 XMLスキーマ・タイプに対するタイプの説明のマッピング
XMLスキーマ・データ型 | タイプの説明 |
---|---|
xsd:string |
java.lang.String |
xsd:normalizedString |
java.lang.String |
xsd:token |
java.lang.String |
xsd:Name |
java.lang.String |
xsd:QName |
java.lang.String |
xsd:NCName |
java.lang.String |
xsd:anyURI |
java.lang.String |
xsd:language |
java.lang.String |
xsd:ID |
java.lang.String |
xsd:IDREF |
java.lang.String |
xsd:ENTITY |
java.lang.String |
xsd:NOTATION |
java.lang.String |
xsd:NMTOKEN |
java.lang.String |
xsd:uriReference |
java.lang.String |
xsd:anySimpleType |
java.lang.String |
xsd:IDREFS |
java.lang.String |
xsd:ENTITIES |
java.lang.String |
xsd:NMTOKENS |
java.lang.String |
xsd:timeInstant |
java.lang.String |
xsd:timeDuration |
java.lang.String |
xsd:anyType |
java.lang.String |
xsd:byte |
java.lang.Byte |
xsd:unsignedByte |
java.lang.Byte |
xsd:short |
java.lang.Short |
xsd:unsignedShort |
java.lang.Short |
xsd:int |
java.lang.Integer |
xsd:unsignedInt |
java.lang.Integer |
xsd:gDay |
java.lang.Integer |
xsd:gMonth |
java.lang.Integer |
xsd:gYear |
java.lang.Integer |
xsd:integer |
java.math.BigInteger |
xsd:positiveInteger |
java.math.BigInteger |
xsd:negativeInteger |
java.math.BigInteger |
xsd:nonPositiveInteger |
java.math.BigInteger |
xsd:nonNegativeIntege |
java.math.BigInteger |
xsd.long |
java.lang.Long |
xsd:unsignedLong |
java.lang.Long |
xsd:decimal |
小数 |
xsd:float |
java.lang.Float |
xsd:double |
java.lang.Double |
xsd:boolean |
java.lang.Boolean |
xsd:dateTime |
com.oracle.scripting.lib.xml.datatype.XmlCalendar |
xsd:time |
com.oracle.scripting.lib.xml.datatype.XmlCalendar |
xsd:date |
com.oracle.scripting.lib.xml.datatype.XmlCalendar |
xsd:gYearMonth |
com.oracle.scripting.lib.xml.datatype.XmlCalendar |
xsd:gMonthDate |
com.oracle.scripting.lib.xml.datatype.XmlCalendar |
xsd:duration |
com.oracle.scripting.lib.xml.datatype.XmlDuration |
xsd:base64Binary |
byte[] |
xsd:hexBinary |
byte[] |