Un recorrido rápido por el uso de condiciones previas
Se pueden utilizar condiciones previas para controlar de forma explícita el orden de operaciones en un modelo. Por ejemplo, se puede ejecutar un proceso después de otro haciendo que la salida del primer proceso sea una condición previa para el segundo proceso. Cualquier variable puede ser una condición previa para la ejecución de una herramienta, y cualquier herramienta puede tener más de una condición previa.
Ejemplo 1: establecer una variable de datos como una condición previa
En este ejemplo, se conectarán dos procesos distintos pero relacionados entre sí con una condición previa para que uno se ejecute antes que el otro. La primera cadena de procesos crea un nuevo dataset de entidades dentro de una geodatabase de archivos nueva. El segundo proceso recorta una clase de entidad en un área de estudio y, a continuación, escribe la salida en el dataset de entidades recién creado.
Si el modelo anterior se ejecuta tal como está, no es posible controlar el orden de las operaciones; la herramienta Recortar puede ejecutarse antes incluso de que se haya creado su ubicación de salida, dando como resultado un error. Una forma de evitarlo es ejecutar primero los procesos Crear archivo GDB y Crear dataset de entidades haciendo clic con el botón derecho del ratón en el proceso y seleccionando Ejecutar, para por último, ejecutar el proceso Recortar.
Sin embargo, este método de ejecución de herramientas individuales sólo funciona en ModelBuilder. ¿Qué ocurrirá si el modelo se debe ejecutar fuera de ModelBuilder o necesita ejecutar todo el modelo de una vez, no herramienta por herramienta?
Se pueden utilizar condiciones previas para controlar de forma explícita el orden de operaciones en un modelo. En el siguiente modelo, la nueva variable Dataset de entidades se convierte en una condición previa para la herramienta Recortar. De esta manera, la herramienta Recortar no se ejecutará hasta que se haya creado el nuevo dataset de entidades.
Ejemplo 2: establecer una variable booleana como condición previa
En el ejemplo anterior, se utilizó una variable de dataset de entidades como condición previa para una herramienta. Una variable booleana utilizada como condición previa se comporta de forma diferente a las variables de datos como por ejemplo, datasets de entidades o clases de entidad. Con las variables booleanas, ModelBuilder lee el valor TRUE o FALSE de la variable en lugar de determinar si se han creado los datos. Si el valor es TRUE, se cumple la condición previa y se ejecuta la herramienta dependiente. Si el valor es FALSE, no se cumple la condición previa y no se ejecuta la herramienta dependiente. En el siguiente ejemplo, una variable booleana, Ejecutar modelo, se convierte en una condición previa de una herramienta.
La variable de condición previa booleana se convierte en un parámetro de modelo de modo que queda expuesta cuando se abre el cuadro de diálogo de la herramienta de modelo. Al marcar el parámetro Ejecutar modelo en el cuadro de diálogo de la herramienta, se establece la variable en TRUE, de modo que cuando se ejecuta el modelo, también se ejecutará el proceso dependiente del modelo (Agregar campo). Si el parámetro Ejecutar modelo no está marcado, la variable booleana será FALSE, y cuando se ejecute el modelo, no se ejecutará el proceso dependiente del modelo porque la condición no se cumple. Si el parámetro no está marcado, aparecerá el siguiente mensaje de advertencia al ejecutar el modelo: "El proceso no se ha ejecutado porque la condición previa era falsa".
Para obtener más información acerca de crear variables de modelo de diferentes tipos, consulte Crear variables.
Ejemplo 3: establecer una variable de entero largo como condición previa
Una variable larga (entero largo) se comporta del mismo modo que una variable booleana cuando se establece como condición previa. Si el valor de la variable larga es un entero positivo, se evalúa como verdadera y se ejecuta el proceso dependiente. Si el valor es 0 o negativo, se evalúa como falso y no se ejecuta el proceso dependiente.