Search code examples
axaptax++dynamics-365-operationssysoperationframework

service doesn't start in sysoperation framework


Below are shown my classes of sysOperation framework, my problem is when i open the dialog and i press OK , nothing happens, what's wrong with this code?

My service class:

class ProdutionFLowsService extends SysOperationServiceBase
{

    ProductionFlowId idOfCopy;
    int copyToDo;
    ProdTable prodTable;

    public void process(ProdutionFLowsContract  _contract)
    {

        this.getPromptParameters(_contract);

        select firstonly ProdId
                from prodTable
                order by ProdId
                where prodTable.ProductionFlowId == this.idOfCopy;

        this.insertInProdTable();
      


    }

     public void insertInProdTable()
    {
        ProdTable _prodTable;
        while(copyToDo > 0)
        {
             buf2Buf(prodTable,_prodTable);
            _prodTable.RecId = 0;
            _prodTable.ProdId = _prodTable.Type().initProdId(true);
            _prodTable.GAP035ProductionFlowId = _prodTable.ProductionFlowId;
            _prodTable.insert();
            copyToDo--;
        }
    }

    public void getPromptParameters(ProdutionFLowsContract _contract)
    {
       copyToDo =  _contract.parmCopyToDo();
       idOfCopy = _contract.parmidOfCopy();
    }

}

My controller class:

class ProdutionFLowsController extends SysOperationServiceController
{
    
    public void new()
    {
        super();
        super(classStr(ProdutionFLowsService), methodStr(ProdutionFLowsService, process), SysOperationExecutionMode::Synchronous);
        this.parmDialogCaption("TODO");
    
    }
    public static void main(Args _args)
    {
        ProdutionFLowsController controller = new ProdutionFLowsController();
        controller.parmArgs(_args);
        controller.startOperation();
    }

}

My Contract Class:

[DataContractAttribute]
class ProdutionFLowsContract implements SysOperationInitializable,SysOperationValidatable
{
    ProductionFlowId idOfCopy;
    int copyToDo;

   
    public void initialize()
    {
        idOfCopy = "";
        copyToDo = 0;
    }
    [DataMemberAttribute("idOfCopy"),SysOperationLabelAttribute(literalStr("TODO(Id)")),SysOperationDisplayOrderAttribute("1")]
    public ProductionFlowId parmidOfCopy(ProductionFlowId    _idOfCopy = idOfCopy)
    {
        idOfCopy = _idOfCopy;

        return idOfCopy;
    }
    [DataMemberAttribute("copyToDo"),SysOperationLabelAttribute(literalStr("copyToDo(Copy)")),SysOperationDisplayOrderAttribute("2")]
    public int parmCopyToDo(int     _copyToDo = copyToDo)
    {
        copyToDo = _copyToDo;

        return copyToDo;
    }

    public boolean validate()
    {
        
        return false;
    }

}

Solution

  • Your contract validation always fails because it always returns false and doesn't show any error in the infolog:

    public boolean validate()
    {
        return false;
    }
    

    Try to replace return false with return true or to remove SysOperationValidatable and validate method altogether.