//----------------------------------------------------------------------------------------------------- private void m_menuStartStep_Click(object sender, EventArgs e) { CEtapeWorkflow etape = EtapeSelectionnee; CWorkflow wkf = m_stackWorkflows.Peek(); using (CContexteDonnee ctx = new CContexteDonnee(wkf.ContexteDonnee.IdSession, true, false)) { wkf = wkf.GetObjetInContexte(ctx) as CWorkflow; CTypeEtapeWorkflow typeEtape = TypeEtapeSelectionnee; if (etape != null) { typeEtape = etape.TypeEtape; } CResultAErreurType <CEtapeWorkflow> resEtape = wkf.CreateOrGetEtapeInCurrentContexte(typeEtape); if (!resEtape) { CFormAlerte.Afficher(resEtape.Erreur); return; } etape = resEtape.DataType; etape = etape.GetObjetInContexte(ctx) as CEtapeWorkflow; etape.InternalSetInfosDemarrageInCurrentContext(); CResultAErreur result = ctx.SaveAll(true); if (!result) { CFormAlerte.Afficher(result.Erreur); } Refresh(); } }
//------------------------------------------------------------- private void EndEtape() { if (m_formulaire != null && m_formulaire.ModeEdition) { CFormAlerte.Afficher(I.T("Validate your modification before|20572")); return; } CResultAErreur result = CResultAErreur.True; using (CContexteDonnee ctx = new CContexteDonnee(m_etapeEnCours.ContexteDonnee.IdSession, true, false)) { if (m_objetSecondaireEnCoursEdition != null) { CObjetDonnee objetSecondaire = m_objetSecondaireEnCoursEdition.GetObjetInContexte(ctx); result = m_panelFormulalire.AffecteValeursToElement(objetSecondaire); } if (result) { m_etapeEnCours = m_etapeEnCours.GetObjetInContexte(ctx) as CEtapeWorkflow; if (m_etapeEnCours.EtatCode == (int)EEtatEtapeWorkflow.Démarrée) { result = m_etapeEnCours.EndEtapeAndSaveIfOk(); } } } if (!result) { CFormAlerte.Afficher(result.Erreur); return; } else { Init(); } }
//------------------------------------------------------------------------ private void NoteErreurSurEtape(CEtapeWorkflow etape, string strMessage) { using (CContexteDonnee ctx = new CContexteDonnee(etape.ContexteDonnee.IdSession, true, false)) { etape = etape.GetObjetInContexte(ctx) as CEtapeWorkflow; etape.EtatCode = (int)EEtatEtapeWorkflow.Erreur; etape.LastError = strMessage; etape.DateFin = null; ctx.SaveAll(false); } }
//----------------------------------------------------------------------------------------------------- private void m_menuAnnulerEtape_Click(object sender, EventArgs e) { CEtapeWorkflow etape = EtapeSelectionnee; using (CContexteDonnee ctx = new CContexteDonnee(etape.ContexteDonnee.IdSession, true, false)) { etape = etape.GetObjetInContexte(ctx) as CEtapeWorkflow; etape.CancelStep(); CResultAErreur result = ctx.SaveAll(true); if (!result) { CFormAlerte.Afficher(result.Erreur); } Refresh(); } }
//------------------------------------------------------------------- public CResultAErreur RunEvent( bool bAutoManagerHandlerTermine, CObjetDonneeAIdNumerique obj, CInfoDeclencheurProcess infoDeclencheur, IIndicateurProgression indicateur) { CResultAErreur result = CResultAErreur.True; CProcessEnExecutionInDb process = ProcessSource; if (ProcessSource != null) { result = process.RepriseProcess(IdActionDeProcessToExecute, indicateur); } else if (EtapeWorkflowATerminer != null) { using (CContexteDonnee contexte = new CContexteDonnee(ContexteDonnee.IdSession, true, false)) { CEtapeWorkflow etape = EtapeWorkflowATerminer.GetObjetInContexte(contexte) as CEtapeWorkflow; if (etape != null) { result = etape.EndEtapeAndSaveIfOk(); } if (!result) { //L'étape ne s'est pas terminée ? tant pis alors, c'est pas grave, elle se terminera par ailleurs result = CResultAErreur.True; return(result); } } } //gestion du handler faite ailleurs if (!bAutoManagerHandlerTermine) { if (!result) { result.EmpileErreur(I.T("@1 handler error|271", Libelle)); } return(result); } EndHandler(result); return(result); }
//----------------------------------------------------------------------------------------------------- private void m_menuEndStep_Click(object sender, EventArgs e) { CEtapeWorkflow etape = EtapeSelectionnee; if (etape != null) { using (CContexteDonnee ctx = new CContexteDonnee(etape.ContexteDonnee.IdSession, true, false)) { etape = etape.GetObjetInContexte(ctx) as CEtapeWorkflow; CResultAErreur result = etape.EndEtapeNoSave(); if (result) { result = ctx.SaveAll(true); } if (!result) { CFormAlerte.Afficher(result.Erreur); return; } } } }
//----------------------------------------------------------------------------- public CResultAErreur AfficheEtape(CEtapeWorkflow etape, bool bDansNouvelOnglet) { CResultAErreur result = CResultAErreur.True; if (etape == null || etape.TypeEtape == null) { return(result); } //Vérifie que l'étape est bien affectée à l'utilisateur string[] strCodes = CUtilSession.GetCodesAffectationsEtapeConcernant(etape.ContexteDonnee.ContexteDonnee); CAffectationsEtapeWorkflow affs = etape.Affectations; bool bIsAffectée = false; foreach (string strCode in strCodes) { if (affs.Contains(strCode)) { bIsAffectée = true; break; } } if (bIsAffectée) { CBlocWorkflow bloc = etape.TypeEtape.Bloc; if (bloc is CBlocWorkflowFormulaire) { result = AfficheEtapeFormulaire(etape, bDansNouvelOnglet); } else if (bloc is CBlocWorkflowProcess) { using (CContexteDonnee ctxt = new CContexteDonnee(etape.ContexteDonnee.IdSession, true, false)) { etape = etape.GetObjetInContexte(ctxt) as CEtapeWorkflow; result = ((CBlocWorkflowProcess)bloc).StartProcess(etape); } } if (!result) { EModeGestionErreurEtapeWorkflow mode = CFormErreurOnWorkflowStep.OnError(result, bloc.ModeGestionErreur); if (mode != EModeGestionErreurEtapeWorkflow.DoNothing) { using (CContexteDonnee ctx = new CContexteDonnee(etape.ContexteDonnee.IdSession, true, false)) { CEtapeWorkflow etapeInContexte = etape.GetObjetInContexte(ctx) as CEtapeWorkflow; switch (mode) { case EModeGestionErreurEtapeWorkflow.CancelStep: etapeInContexte.CancelStep(); break; case EModeGestionErreurEtapeWorkflow.EndStep: result = etapeInContexte.EndEtapeNoSave(); if (!result) { result.EmpileErreur(I.T("Can not end step|20766")); CFormAlerte.Afficher(result.Erreur); return(result); } break; case EModeGestionErreurEtapeWorkflow.SetError: etapeInContexte.EtatCode = (int)EEtatEtapeWorkflow.Erreur; etapeInContexte.LastError = result.Erreur.ToString(); etapeInContexte.DateFin = null; break; } result = ctx.SaveAll(true); } } } } else { CFormAlerte.Afficher(I.T("You are not allowed to display this step|20620")); } return(result); }