Quantcast
Channel: Microsoft Dynamics AX Forum - Recent Threads
Viewing all articles
Browse latest Browse all 175888

Avoid over-layering in workflow creation on standard form in D365.

$
0
0

Hi Techies,

This is how we can avoid over-layering while creating workflow on standard form.

-> Extension of ‘CanSubmitToWorkflow’ method in standard table which is not overridden by standard:

 ‘CanSubmitToWorkflow’ is being called from FormDataUtil:: CanSubmitToWorkflow() method for which post event handler can be written, which is purely extension.

Following is the code snippet:

    /// <summary>

    /// Can submit to workflow

    /// </summary>

    /// <param name="args"></param>

    [PostHandlerFor(classStr(FormDataUtil), staticMethodStr(FormDataUtil, canSubmitToWorkflow))]

    public static void FormDataUtil_Post_canSubmitToWorkflow(XppPrePostArgs args)

    {

        Common             record               = args.getArg(identifierStr(_record));

        SalesTable          salesTable           = record as SalesTable;

        boolean            ret                  = args.getReturnValue();

 

        if (record.TableId == tableNum(SalesTable))

        {

            if (salesTable.WorkFlowStatus == VersioningDocumentState::Draft)

            {

                ret = boolean::true;

            }

            else

            {

                ret = boolean::false;

            }

        }

        args.setReturnValue(ret);                    

    }

 

-> Changing workflow properties in standard form through extension:

·         Copy On Initializing event handler of form events.

·         Paste it in your event handler class

·         Write body of the method as follows (replace workflow datasource and workflow type)

     /// <summary>

    /// Triggering workflow dynamically

    /// </summary>

    /// <param name="sender"></param>

    /// <param name="e"></param>

    [FormEventHandler(formStr(SalesTableListPage), FormEventType::Initializing)]

    public static void SalesTableListPage_OnInitializing(xFormRun sender, FormEventArgs e)

    {

        FormRun                SalesTableListPage         = sender;

        FormBuildDesign SalesTableListPageDesign = SalesTableListPage.form().design();

 

        SalesTableListPageDesign.workflowEnabled(true);

        SalesTableListPageDesign.workflowDatasource(tableStr(SalesTable));

        SalesTableListPageDesign.workflowType(workflowTypeStr(SalesOrderWFType));

    }

 

Hope it helped... :)

 

Thanks & regards,

Satish  Kakileti.


Viewing all articles
Browse latest Browse all 175888

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>