public bool IsValidForStartProcess(long IdProcess, long IdTarea, object Sender)
        {
            bool IsValid = true;

            _errores.Clear();
            string  ProcessName = twf_Procesos.GetByPk(IdProcess).Descripcion;
            DataSet data        = new DataSet();

            if (!ValidationsCache.Contains(IdProcess, IdTarea, Security.IdPerfil))
            {
                data = businessrules.twf_ProcesosTareasValidaciones.GetValidacionesForStartProcess(IdProcess, IdTarea);                 //Sobrecarga para workflow
                ValidationsCache.Add(IdProcess, IdTarea, Security.IdPerfil, data);
            }
            else
            {
                data = ValidationsCache.Get(IdProcess, IdTarea, Security.IdPerfil);
            }
            if (data != null)
            {
                foreach (DataRow row in data.Tables[0].Rows)
                {
                    string Condicion = Convert.ToString(row["Validacion"]);
                    string Titulo    = Convert.ToString(row["Titulo"]);
                    string Mensaje   = Convert.ToString(row["Mensaje"]);
                    if (!Evaluator.EvaluateToBool(Condicion, Sender, false))                     //Pasa false si la compilación da como resultado un error
                    {
                        IsValid = false;
                        _errores.Add(new ItemDatasetError(Titulo, ProcessName, Mensaje));
                    }
                }
            }
            return(IsValid);
        }
 public static void Clear()
 {
     ValidationsCache.Clear();
 }