2012-01-17 10 views
1

コードはかなり簡単です。 [ベンダー詳細]フォームから、[機能]> [更新1099]を選択すると、ユーザーは手動で行うのではなく、すべてのベンダーでこれを広げたいと考えています。私は基本VendTax1099Updateクラスを変更してRunBaseBatchを拡張した後、たくさんのparmメソッドを追加しました。このエラーが発生していますが、タスクは存在しますか?私はそれを間違っているのですか?X ++でのマルチスレッドバッチのプログラミング。何らかの理由で働いていない?

"タックス1099情報のタスクベンダー更新が存在しないため、依存関係を作成できませんでした。

私はそれを広く開いて実行しようとするとDBロックがあったので、私はそれを "addDependency"にしました。それらを修正する方法があるかどうかはわかりません。

void run() 
{ 
    BatchHeader   batchHeader; 
    VendTax1099Update vendTax1099Update; 
    VendTax1099Update vendTax1099UpdateOld; 
    VendTable   vendTable; 
    boolean    first = true; 
    ; 

    /* 
    if (this.isInBatch()) 
    { 
    */ 
     // Make sure there is a batch header 
     if (!batchHeader) 
      batchHeader = BatchHeader::construct(this.parmCurrentBatch().BatchJobId); 

     while select vendTable 
      where vendTable.Tax1099Reports  == true  && 
        vendTable.Tax1099Box   != '' 
     { 
      if (Tax1099Fields::exist(vendTable.Tax1099Box)) 
      { 
       vendTax1099Update = new VendTax1099Update(); 
       vendTax1099Update.parmFromDate(fromDate); 
       vendTax1099Update.parmToDate(toDate); 
       vendTax1099Update.parmRecalcAmounts(recalcAmounts); 
       vendTax1099Update.parmSetAll1099(setAll1099); 
       vendTax1099Update.parmBoxFor1099(vendTable.Tax1099Box); 
       vendTax1099Update.parmVendorNum(vendTable.AccountNum); 

       if (first) 
       { 
        batchHeader.addRuntimeTask(vendTax1099Update, this.parmCurrentBatch().RecId); 
        first = false; 
       } 
       else 
       { 
        if (vendTax1099UpdateOld) 
         batchHeader.addDependency(vendTax1099Update, vendTax1099UpdateOld, BatchDependencyStatus::FinishedOrError); 
       } 

       vendTax1099UpdateOld = vendTax1099Update; 
      } 
      else 
       error (strfmt("Unable to process %1 because %2 was not found in Tax1099Fields", vendTable.AccountNum, vendTable.Tax1099Box)); 
     } 
    /* 
    } 
    */ 

    if (batchHeader) 
     batchHeader.save(); 
} 

答えて

2

私が投稿した後、この上の、そしてもちろん数分のカップルの時間の私の脳をラッキングしてきた私は、私はbatchHeader.addDependency()メソッドにステップすることができます実現した後に問題を把握します。

タスクを追加してから、依存関係を設定する必要があります。私は依存関係を設定することも同じタスクでタスクを追加することだと思った。修正されたコードビットは次のとおりです。

  vendTax1099Update.parmBoxFor1099(vendTable.Tax1099Box); 
      vendTax1099Update.parmVendorNum(vendTable.AccountNum); 

      batchHeader.addRuntimeTask(vendTax1099Update, this.parmCurrentBatch().RecId); 

      if (vendTax1099UpdateOld) 
       batchHeader.addDependency(vendTax1099Update, vendTax1099UpdateOld, BatchDependencyStatus::FinishedOrError); 

      vendTax1099UpdateOld = vendTax1099Update; 
     } 
     else 
関連する問題