SysOperation framework. Controller. Process multiselect


Step 1. Add List and parm method to the Data contract

/// <summary>
///    The data contract class for Sample service.
/// </summary>
[DataContract]
internal class SampleDataContract 
{
    List recordIdList;
              
    /// <summary>
    ///     Gets or sets the value of the datacontract parameter.
    /// </summary>
    /// <param name="_recordIdList">The new value of the datacontract parameter.</param>
    /// <returns>The current value of datacontract parameter.</returns>
    [
        DataMember('recordIdList'),
        AifCollectionType('return', Types::Int64),
        SysOperationControlVisibility(false)
    ]
    public List parmRecordIdList(List _recordIdList = recordIdList)
    {
        recordIdList = _recordIdList;

        return recordIdList;
    }

}

Step 2 Create init contract method in controller class

/// <summary>
///  A controller class for the Sample service
/// </summary>
internal final class SampleController extends SysOperationServiceController
{ 
    internal static void main(Args _args)
    {
        SampleController controller = SampleController::newFromArgs(_args);
        controller.startOperation();
    }

    /// <summary>
    ///     New from Args static constructor.
    /// </summary>
    /// <param name = "_args">Instance of Args class.</param>
    /// <returns> Constructed <c>SampleController</c> class.</returns>
    public static SampleController newFromArgs(Args _args)
    {
        SampleController controller = SampleController::construct();
        controller.initializeFromArgs(_args);

        return controller;
    }

    
    public void initializeFromArgs(Args _args)
    {
        super(_args);

        SampleContract contract = this.getDataContractObject();
        contract.parmRecordIdList(this.getRecordIdList());
    }


    private List getRecordIdList()
    {
        List recordIdList = new List(Types::Int64);

        if (args.caller() is FormRun)
        {
            MultiSelectionHelper multiselectionHelper = MultiSelectionHelper::createFromCaller(args.caller());

            multiselectionHelper.parmDatasource(FormDataUtil::getFormDataSource(this.parmArgs().record()));
                
            common selectedRecord = multiselectionHelper.getFirst();
            while (selectedRecord)
            {
                recordIdList.addEnd(selectedRecord.RecId);
                selectedRecord = multiselectionHelper.getNext();
            }
        }

        return recordIdList;
    }

    public static SampleController construct()
    {
        return new SampleController();
    }
}