Vincolare Esecuzione Step

Requisito Utente

 

Deve essere possibile l'esecuzione di uno step solamente se il precedente è stato eseguito e ha uno stato valido (passed/failed)

Soluzione Proposta

 

Vengono rese disponibili le azioni in base allo stato dello step precedente oppure se lo step in questione è il primo.

 

Per step precedente o successivo si fa riferimento al campo che indica l'ordine ("ST_ORDER").


_______________________________________________________________________

 

Implementazione sul Prodotto

 

La logica di funzionamento è per la maggior parte all'interno della sub Step_MoveTo in cui viene esaminato lo step selezionato. Vengono subito disabilitate alcune azioni   ed eventualmente abilitate secondo questa logica:

- step selezionato è il primo 

  oppure

- se lo stato dello step precedente ha un valore valido (passed/failed)

 

Sono state individuate le seguenti azioni su cui agire:

- Dare il Pass allo step selezionato: act_pass_selected

- Dare il Fail allo step selezionato: act_fail_selected

- Aggiunta Step: act_add_step

- Cancellazione Step: act_del

- Aggiunta Allegato: act_attach

- Nuovo Defect: act_add_bug

e  anche:

- Pin OnTop: act_pin_unpin

- Ritorno alla Vista precedente: act_back

- Vista a Mini Step: act_ministeps

 

Questo il codice implementato:

 

1. Common Module - Funzione ActionCanExecute

 

'questo serve solo per richiamare la ActionCanExecute del relativo modulo

 if ActiveModule = "ManualRun" then
    ActionCanExecute = ManualRun_ActionCanExecute(ActionName)
 end if

 

2. Manual Runner Module - Funzione ManualRun_ActionCanExecute

 

Dim res
res = True

 

Select Case ActionName

         Case "act_add_step", "act_del", "act_pin_unpin", "act_back", "act_ministeps":

                   res = False   'Disabilito per tutti le azioni indicate

End Select

 

'ritorno valore della funzione

ManualRun_ActionCanExecute = res

 

 

3. Manual Runner Module - Sub Step_MoveTo

 

Dim MyRun 

'Creazione oggetto MyRun

Set MyRun  = TDConnection.RunFactory.Item(Run_Fields("RN_RUN_ID").Value)
 


  'disabilito tutti i pulsanti/azioni

  Actions.Action("act_add_step").Enabled = False
  Actions.Action("act_del").Enabled = False
  Actions.Action("act_pin_unpin").Enabled = False
  Actions.Action("act_back").Enabled = False
  Actions.Action("act_ministeps").Enabled = False
  Actions.Action("act_pass_selected").Enabled = False
  Actions.Action("act_fail_selected").Enabled = False
  Actions.Action("act_attach").Enabled = False
  Actions.Action("act_add_bug").Enabled = False

 

  'disabilito anche tuttti i campi dello step su cui sono posizionato

  for k=1 to Step_Fields.Count
      Step_Fields.FieldById(k).IsReadOnly=True
  next

 

  'Devo abilitare solo le azioni per dare il passed, failed, aggiungere allegati e bug.

  'Secondo quanto indicato sopra (Primo Step o altro che può essere eseguito perché

  'lo step precedente ha uno stato valido (passed/failed)).

  

  'Verifico il numero d'ordine dello step selezionato

 

  Dim nr_Ord
  Dim thisStep

 

 'creo oggetto Step

  set thisStep = MyRun.StepFactory.Item(Step_Fields.Field("ST_ID").Value)

  'mi salvo il numero d'ordine
  nr_Ord = thisStep.Field("ST_STEP_ORDER")

 

  Select Case nr_Ord

         'se il numero d'ordine è 1 allora abilito le azioni

         Case 1: Step_EnableActions

 

         'altrimenti devo verificare lo stato dello step precedente

         Case else:
                 Step_VerifyPrevStepStatus(thisStep)

  End Select

 

 

4. Manual Runner Module -  Step_EnableActions (nuova Sub da creare nel modulo)

 

Sub Step_EnableActions
    On Error Resume Next

 

    Actions.Action("act_pass_selected").Enabled = True
    Actions.Action("act_fail_selected").Enabled = True
    Actions.Action("act_attach").Enabled = True
    Actions.Action("act_add_bug").Enabled = True

 

    'Abilito il solo campo in cui inserire il risultato attuale.

    'volendo si possono abilitare anche altri campi o tutti

   Step_Fields.Field("ST_ACTUAL").IsReadOnly = False

 

    On Error Goto 0
End Sub

 

 

5. Manual Runner Module - Step_VerifyPrevStepStatus (nuova Sub da creare nel modulo)

 

Sub Step_VerifyPrevStepStatus(myStep)
    On Error Resume Next

 

    Dim nr_Ord_Prev           'variabile per il numero d'ordine dello step precedente
    Dim Run_StepList          'la lista degli step dell'oggetto run
    Dim myPrevStep            'l'oggetto step precedente

 

   'mi carico il numero d'ordine precedente ( -1)
    nr_Ord_Prev = myStep.Field("ST_STEP_ORDER") - 1

 

    'creo oggetto Lista degli Step
    set Run_StepList =  TDConnection.RunFactory.Item(Run_Fields("RN_RUN_ID").Value).StepFactory.NewList("")

 

    'Ciclo For per analizzare stato dello step precedente

    for each el_St in Run_StepList

        'verifico se lo step in questione è quello da analizzare (il precedente)

        if el_St.Field("ST_STEP_ORDER") = nr_Ord_Prev then
           'Step precedente, mi creo l'oggetto
           set myPrevStep = el_St


           'Eseguo un refresh dell'oggetto per l'aggiornamento dello stato

           myPrevStep.Post
           myPrevStep.Refresh

 

           'Verifico lo stato dello step chiedendomi se è "Passed" o "Failed"
           if myPrevStep.Status = "Passed" Or _
              myPrevStep.Status = "Failed" then

              'Abilito le azioni per lo step corrente (myStep)
              Step_EnableActions

           end if

        end if
    next

    On Error Goto 0
End Sub

 

 

Pag: <<    <