1

私たちの多くは、AX 2012の最適化問題を巡っています。多くの場合、プロセス関連コードの最適化問題は、レポートの中に他の多くの方法があるような解決策はありません。AX 2012でのマルチスレッド化

ケース:1回のボタンクリックで複数の受注をAX 2012で確認する必要があるケースがありました。その注文を確認したら、コード実行に従い、コーディングの方法を最大限に最適化した後、ちょっと時間がかかる他の「カスタマイズされた」プロセスを実行する必要があります。だから私はマルチスレッドを通じてこの種のシナリオを処理する方法についての質問を持っています

+0

誰かが1分以内に自分自身に答えるかどうかは疑問ではない – DAXaholic

+2

@DAXaholic実際には、自己回答は許可されており、さらに奨励されている:https://stackoverflow.com/help/self-answer –

+0

ああ、知りませんでした。ちょっと変だけど、それは私の意見です。それを指摘Thx! – DAXaholic

答えて

0

私はAx2012でスレッドクラスを使用してマルチスレッドを使用するということについて学びました。

まず、すべてのロジックをクラスの静的メソッドで実装する必要があります。その静的メソッドには、スレッドクラスがパラメータとして含まれている必要があります。たとえば、そのメソッドの呼び出しを記述する必要がある場合は、静的メソッドをクラスに作成します。 注:Threadクラスを介してArgs、Objectを送信することはできません。あなたはthread.setInputParm()メソッドを介して_thread.setInputParm([salestable.salesid])メソッドのようなコンテナの形式でのみ送ることができます。

呼び出す:

salesline     salesline; 
ExecutePermission   perm; 
Thread      myThread; 
ttsBegin; 

perm = new ExecutePermission(); 

if (!perm) 
return; 

perm.assert(); 

while select salesid from salestable 
    where salestable.FG_BookingReferenceID == "BRF-0001" 
{ 
    myThread = new Thread(); 
    myThread.setInputParm([salestable.SalesId]); 
    if (myThread) 
    { 
     myThread.removeOnComplete(true); 
     myThread.run(classnum(FG_ConfirmationEngine), staticMethodStr(FG_ConfirmationEngine,process)); 
    } 
} 

CodeAccessPermission::revertAssert(); 

はそれがお役に立てば幸いです。 Happy DAXing

2

multi threadingを直接使用しないでください。それはクライアント技術です。

Axatpaでbatch processingフレームワークを使用してください。サーバー上にマルチスレッドを持つサーバー技術です。 https://msdn.microsoft.com/en-us/library/gg243235.aspx

それは開発者のための意味:あなたのクラスを作成し、RunBasBatchからそれを拡張したりSysOperation https://msdn.microsoft.com/en-us/library/gg862488.aspx

4

Introduction to the SysOperation Frameworkは一例で計算(AX2012でコードをparalellizeする方法の具体的な例を提供する(Tutorial_RunBaseBatch AOT内のクラスを参照してください)素数)。

また、どのようにベストマッチ「スレッド」にバッチタスクに分析を提供し、Batch Parallelism in AX part Iと呼ばれるポストの優れたシリーズをtheresのIIIIIIV

関連する問題