複合タイプを使用するランタイム・タスクの作成

この例では、インターフェースで複合タイプを使用するランタイム・タスクを作成します。複合タイプは既に定義されています。すなわち、クライアントのローカル・ファイル・システムには、複合タイプの記述を含む XSD ファイルがあります。

このタスクを実行する理由と実行時期

この例は、リソースがロードされる呼び出し側エンタープライズ・アプリケーションのコンテキスト内のみで実行されます。

このタスクのステップ

  1. ClientTaskFactory にアクセスし、新規タスク・モデルの定義を格納するリソース・セットを作成します。
    ClientTaskFactory factory = ClientTaskFactory.newInstance();
    ResourceSet resourceSet = factory.createResourceSet();
  2. 複合タイプの XSD 定義をリソース・セットに追加して、操作の定義時に使用できるようにします。
    ファイルは、コードが実行されたロケーションの相対位置に配置されます。
    factory.loadXSDSchema( resourceSet, "InputBO.xsd" );
    factory.loadXSDSchema( resourceSet, "OutputBO.xsd" );
  3. 操作の WSDL 定義を作成し、記述を追加します。
    // create the WSDL interface
    Definition definition = factory.createWSDLDefinition
             ( resourceSet, new QName( "http://www.ibm.com/task/test/", "test" ) );
        
    // create a port type
    PortType portType = factory.createPortType( definition, "doItPT" );
    
    // create an operation; the input message is an InputBO and
    // the output message an OutputBO;
    // a fault message is not specified
    Operation operation = factory.createOperation
            ( definition, portType, "doIt",
              new QName( "http://Input", "InputBO" ),
              new QName( "http://Output", "OutputBO" ),
              (Map)null );
  4. 新規ヒューマン・タスクの EMF モデルを作成します。

    タスク・インスタンスを作成する場合は、有効開始日 (UTCDate) は必要ありません。

    TTask humanTask = factory.createTTask( resourceSet,
                                           TTaskKinds.HTASK_LITERAL,
                                           "TestTask",
                                           new UTCDate( "2005-01-01T00:00:00" ),
                                           "http://www.ibm.com/task/test/",
                                           portType,
                                           operation );

    このステップは、タスク・モデルのプロパティーをデフォルト値で初期化します。

  5. ヒューマン・タスク・モデルのプロパティーを変更します。
    // use the methods from the com.ibm.wbit.tel package, for example,
    humanTask.setBusinessRelevance( TBoolean, YES_LITERAL );
    
    // retrieve the task factory to create or modify composite task elements
    TaskFactory taskFactory = factory.getTaskFactory();
    
    // specify escalation settings
    TVerb verb = taskFactory.createTVerb();
    verb.setName("John");
    
    // create escalationReceiver and add verb
    TEscalationReceiver escalationReceiver =
                        taskFactory.createTEscalationReceiver();
    escalationReceiver.setVerb(verb);
    
    // create escalation and add escalation receiver
    TEscalation escalation = taskFactory.createTEscalation();
    escalation.setEscalationReceiver(escalationReceiver);
  6. すべてのリソース定義を含むタスク・モデルを作成します。
    TaskModel taskModel = ClientTaskFactory.createTaskModel( resourceSet );
  7. タスク・モデルを検証し、検証で問題が検出された場合それを訂正します。
    ValidationProblem[] validationProblems = taskModel.validate();
  8. ランタイム・タスク・インスタンスまたはランタイム・タスク・テンプレートを作成します。
    HumanTaskManagerService インターフェースを使用して、タスク・インスタンスまたはタスク・テンプレートを作成します。データ型定義を利用できるように、データ型定義を含むアプリケーション名を指定する必要があります。アプリケーションが Business Process Choreographer によってロードされるように、アプリケーションにダミー・タスクまたはダミー・プロセスも含まれるようにしてください。
    • 以下の断片はタスク・インスタンスを作成します。
      task.createTask( taskModel, "BOapplication", "HTM" );
    • 以下の断片はタスク・テンプレートを作成します。
      task.createTaskTemplate( taskModel, "BOapplication" );

結果

ランタイム・タスク・インスタンスが作成された場合、それを始動することができます。ランタイム・タスク・テンプレートが作成された場合、そのテンプレートからタスク・インスタンスを作成できます。


(c) Copyright IBM Corporation 2005, 2006. All rights reserved.
(c) Copyright IBM Japan 2006
このインフォメーション・センターでは、Eclipse テクノロジー (http://www.eclipse.org) が採用されています。