Thursday 17 April 2014

Schedule Application Engine through Peoplecode

The following sample code can be used to Schedule App Engine through PeopleCode.
Code to Schedule App Engine thru PeopleCode:
Local ProcessRequest &MYRQST;
   
   &MyAppName = "MY_APP";
   &MYRQST = CreateProcessRequest("Application Engine", &MyAppName);
   &MYRQST.RunControlID = "TEST";
   &MYRQST.RunLocation = "PSUNX";       
   &MYRQST.Schedule();
   
   If &MYRQST.Status = 0 Then /* if Schedule status is success */
 
  End-If;
Code to know whether the scheduled App Engine ran to success or not:
If &MYRQST.Status = 0 Then /* if Schedule status is success */

      &LOOP = 0;
      While &LOOP = 0
         SQLExec("SELECT A.DISTSTATUS, A.RUNSTATUSDESCR FROM PS_PMN_PRCSLIST A WHERE A.PRCSNAME = :1 AND A.PRCSINSTANCE = (SELECT MAX(B.PRCSINSTANCE) FROM PS_PMN_PRCSLIST B WHERE B.PRCSNAME = A.PRCSNAME)", &MyAppName, &POSTED, &STATUS);
         
         If &STATUS = "Success" And
               &POSTED = 5 Then /* Posted */
            &LOOP = 1
         End-If;
         
         If &STATUS = "Success" And /* Not Posted */
               &POSTED = 4 Then
            &LOOP = 2
         End-If;
         
         If &STATUS = "No Success" Or
               &STATUS = "Error" Then
            &LOOP = 3;
         End-If;
         
      End-While;
      
      If &LOOP = 1 Then
            MessageBox(0, "", 27333, 594, "");  /* Success Msg */
      Else
         If &LOOP = 2 Or
               &LOOP = 3 Then
            MessageBox(0, "", 27333, 595, "");  /* Failed Error Msg */
         End-If;
      End-If; /* If &LOOP = 1 Then */ 
End-If;
 
The below function can also be used for schedule application engine: (Alternative Function)
Function ScheduleSetupAEProcess(&RESULT_SET_COMP)
   &RUN_SETUP_AE_REQST = CreateProcessRequest("Application Engine", "PTLT_SETUP");
   &REC_IMPL_RUN = CreateRecord(Record.PTLT_PROJ_RUN);
   
   /* Run Control ID = Configuration Set Name */
   &RUN_CNTL_ID = &RESULT_SET_COMP;
   
   &RUN_SETUP_AE_REQST.RunControlID = &RUN_CNTL_ID;
   &RUN_SETUP_AE_REQST.Schedule();
   
   If &RUN_SETUP_AE_REQST.Status = 0 Then
      &PROCESS_INSTANCE = &RUN_SETUP_AE_REQST.ProcessInstance;
      /* Insert into Setup Manager Run Control Record */
      &REC_IMPL_RUN.OPRID.Value = %OperatorId;
      &REC_IMPL_RUN.RUN_CNTL_ID.Value = &RUN_CNTL_ID;
      &REC_IMPL_RUN.PTLT_PROJ_NAME.Value = &RESULT_SET_COMP;
      &REC_IMPL_RUN.PROCESSINSTANCE.Value = &PROCESS_INSTANCE;
      
      If Not &REC_IMPL_RUN.Update() Then
         &REC_IMPL_RUN.Insert();
      End-If;
   Else
      Error MsgGet(218, 154, "Process cannot be scheduled");
   End-If;
End-Function;


The following code can be used to schedule App Engine Through PeopleCode.
Local ProcessRequest &MYRQST;
&MyAppName = "TEST_AE";
&MYRQST = CreateProcessRequest("Application Engine", &MyAppName);
&MYRQST.RunControlID = "TEST";
&MYRQST.RunLocation = "PSUNX";
&MYRQST.Schedule();
If &MYRQST.Status = 0 Then /* if Schedule status is success */
End-If;

No comments:

Post a Comment