XPDL

XPDLとは、各BPM製品のデータファイルを相互変換できる様にすべく策定されたプロセス定義言語(Process Definition Language)規格のひとつ. XPDLに従えば、業務フローの手順のみならず、業務フロー図のグラフィック情報も記述できる.

概要
XPDLは、BPM関連製品の各データファイルを相互変換すべく策定されたプロセス定義言語(Process Definition Language)規格の一. タスク手順を記述できるだけでなく、業務フロー図のグラフィック情報も記述できる. 言いかえればBPMNのグラフィックオブジェクトをすべてXMLフォーマット、すなわちテキスト情報で保存する事が出来る.

ビジネスプロセスをテキスト情報で定義できる規格にはBPELも存在し、BPELとXPDLは「２大ビジネスプロセス定義言語規格」とも言われる. しかしながらBPELはグラフィックオブジェクトの保存はその範疇に無く、情報システムの詳細な制御(Webサービス制御)に主眼が置かれている. BPELの推進派は「IBM、Microsoft、BEA、Oracle、SAP、Adobe」などのアプリケーションサーバソフトベンダや企業内情報システム統合ソフトベンダに多い.

XPDLの活用
XPDLを活用する事で、モデリングツールから、BPMエンジンへのデータ互換に限らず、シミュレーションツールや最適化ツールへのデータ互換を図ることも想定できる. なお、BPMNからBPELマッピング時に発生する「ロール情報の欠損」は、XPDL変換時には発生しない. 総じてXPDLは、人間中心のビジネスプロセス(Human-Centric BPM)に適していると言える.

今日、モデリング専用ツールのみならず、BPMスイート製品もXPDLエクスポート機能をサポートする傾向にあると言える.

２大言語規格が存在する背景
BPMは「EAI」と「ワークフロー」の両分野が融合した分野であり、両分野それぞれの研究開発成果である「BPEL」と「XPDL」を踏襲している.

対立しているかのように言われる事もあるが、それぞれに特徴をもった仕様であり、補完する関係にあると言った方が良い. すなわちEAI（Enterprise Application Integration）では、「企業内の業務システムを処理速度や変更容易性の観点から統合連携させる事」に主眼が置かれ、そのデータやプロセスをあるべき姿に持っていこうとする. 他方、ワークフローでは「人間手続きの流れを業務効率や業務リスクの観点から分析する事」に主眼が置かれ、組織内での役割やタスク手順のあるべき姿を模索する.

沿革

 * 1993年08月：　WfMC、設立
 * 1998年11月：　WfMC、WPDL発表（ビジネスプロセス定義の交換言語標準として）
 * 2002年10月：　WfMC、XPDL1.0を公開（XMLの拡大を受け、WPDLをXML化）
 * 2004年05月：　BPMI、BPMN1.0を公開(BPELマッピング仕様も記述)
 * 2004年00月：　WfMC、BPMNの表現可能な図を全て記述できる様に拡張する方針を表明
 * 2005年06月：　BPMI・OMG、戦略的統合
 * 2005年10月：　WfMC、XPDL2.0を公開（BPMN1.0に対応）
 * 2006年02月：　OMG、BPMN1.0(OMG最終採択版)を公開
 * 2008年01月：　OMG、BPMN1.1を公開
 * 2008年04月：　WfMC、XPDL2.1を公開（BPMN1.1に対応）

関連記事

 * BPMN
 * WfMC
 * Human-Centric BPM

XPDLファイルの内部イメージ
   2.0 Questetra 01/01/2008 00:00:00 AM  …       …     </SchemaType> </TypeDeclaration>  …   </TypeDeclaration> </TypeDeclarations> <Participants> <Participant Id="DBConnection"> <ParticipantType Type="SYSTEM"/> <Description>Reference to Database Resource</Description> </Participant> </Participants> <Pools> <Pool Process="1" Id="2" BoundaryVisible="false"> <Lanes/> <NodeGraphicsInfos> <NodeGraphicsInfo Page="1"/> </NodeGraphicsInfos> </Pool> <Pool Process="2" Id="3" Name="" BoundaryVisible="true"> …   </Pool> </Pools> <WorkflowProcesses> <WorkflowProcess Id="2" Name="EORDER"> <ProcessHeader/> <FormalParameters> <FormalParameter Id="orderString" Mode="IN"> <DataType> <BasicType Type="STRING"/> </DataType> </FormalParameter> <FormalParameter Id="returnMessage" Mode="OUT"> …       </FormalParameter> </FormalParameters> <Applications> <Application Id="transformData"> …       </Application> </Applications> <DataFields> <DataField Id="1" Name="orderNumber" IsArray="FALSE"> <DataType> <BasicType Type="INTEGER"/> </DataType> <Length>0</Length> <Description/> </DataField> <DataField Id="3" Name="status" IsArray="FALSE"> </DataField> </DataFields> <ActivitySets/> <Activities> <Activity Id="10" Name="Transform Data"> <Implementation> <Task> <TaskApplication Id="transformData"> <ActualParameters> <ActualParameter>orderString</ActualParameter> <ActualParameter>orderInfo</ActualParameter> </ActualParameters> </TaskApplication> </Task> </Implementation> <NodeGraphicsInfos> <NodeGraphicsInfo Page="1" LaneId="0" Width="75.0" …> …           </NodeGraphicsInfo> </NodeGraphicsInfos> </Activity> </Activities> <Transitions> <Transition Id="16" Name="" From="10"…> </Transition> </Transitions> </WorkflowProcess> <WorkflowProcess Id="3"…> …   </WorkflowProcess> </WorkflowProcesses> <ExtendedAttributes> … </ExtendedAttributes> </Package>