Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Definición del ámbito y visibilidad de la actividad, al igual que el ámbito y la visibilidad de un objeto, es la capacidad de que otros objetos o actividades accedan a los componentes de la actividad. La definición de actividad se realiza mediante las siguientes implementaciones:
Al determinar los miembros (Argument, objetos Variable y ActivityDelegate, y actividades secundarias) una actividad se expone a sus usuarios.
Implementación de la lógica de ejecución de la actividad
La implementación puede implicar a miembros que no se exponen a los usuarios de la actividad, pero se trata más bien de detalles de la implementación. De forma similar a la definición de tipo, el modelo de actividad permite a un autor calificar la visibilidad de un miembro de actividad con respecto a la definición de la actividad que se está definiendo. Esta visibilidad rige aspectos de uso de los miembros, como el ámbito de los datos.
Ámbito
Además del ámbito de los datos, la visibilidad del modelo de actividad puede restringir el acceso a otros aspectos de la actividad, como la validación, la depuración, el seguimiento o el rastreo. Las propiedades de ejecución usan visibilidad y ámbito para restringir las características de ejecución a un ámbito de definición determinado. Las raíces secundarias usan visibilidad y ámbito para restringir el estado capturado por un CompensableActivity al ámbito de definición en el que se usan las actividades compensables.
Definición y uso
Un flujo de trabajo se escribe mediante la creación de nuevas actividades heredando de clases de actividad base y mediante actividades de la biblioteca de actividades deBuilt-In. Para poder usar una actividad, el autor de la actividad debe configurar la visibilidad de cada componente de su definición.
Miembros de actividad
El modelo de actividad define los argumentos, variables, delegados y actividades secundarias que la actividad pone a disposición de los consumidores. Cada uno de estos miembros se puede declarar como public
o private
. El usuario de la actividad configura los miembros públicos, mientras que los miembros private
utilizan una implementación corregida por el autor de actividad. Las reglas de visibilidad del ámbito de datos son las siguientes:
Los miembros públicos y los miembros públicos de actividades secundarias públicas pueden hacer referencia a las variables públicas.
Los miembros privados y los miembros públicos de las actividades infantiles públicas pueden hacer referencia a los argumentos y a las variables privadas.
Un miembro que puede ser establecido por el usuario de una actividad nunca se debería hacer privado.
Modelos de creación
Las actividades personalizadas se definen mediante NativeActivity, Activity, CodeActivityo AsyncCodeActivity. Las actividades que derivan de estas clases pueden exponer diferentes tipos de miembros con diferentes visibilidades.
NativeActivity
Las actividades que derivan de NativeActivity tienen un comportamiento escrito en código imperativo y, opcionalmente, se pueden definir mediante actividades existentes. Al derivar actividades de NativeActivity se concede acceso a todas las características expuestas por el entorno de ejecución. Cualquier miembro de dicha actividad se puede definir mediante visibilidad pública o privada, excepto los argumentos, que solo se pueden declarar como public
.
Los miembros de clases derivados de NativeActivity se declaran al runtime utilizando el struct NativeActivityMetadata pasado al método CacheMetadata.
Actividad
Las actividades creadas mediante el uso de Activity tienen un comportamiento diseñado estrictamente a través de la composición de otras actividades. La Activity clase tiene una actividad hija de implementación, obtenida durante el tiempo de ejecución mediante Implementation. Una actividad derivada de Activity puede definir argumentos públicos, variables públicas, activityDelegates importados y actividades importadas.
LAs ActivityDelegates y Activities importadas se declaran como elementos secundarios públicos de la actividad, pero no pueden ser programadas directamente por la actividad. Esta información se usa durante la validación para evitar la ejecución de validaciones orientadas a los padres en ubicaciones donde la actividad nunca se ejecutará. Además, los elementos secundarios importados, como los elementos secundarios públicos, pueden ser referenciados y programados por la implementación de la actividad. Esto significa que una actividad que importa una actividad denominada Activity1 puede contener un elemento Sequence en su implementación que programa Activity1.
CodeActivity/AsyncCodeActivity
Esta clase base se utiliza para definir comportamientos en código imperativo. Las actividades que derivan de esta clase solo tienen acceso a los argumentos que exponen. Esto significa que los únicos miembros que estas actividades pueden exponer son los argumentos públicos. Ningún otro miembro o visibilidad se aplican a estas actividades.
Resumen de las visibilidades
En la tabla siguiente se resume la información anterior en esta sección.
Tipo de miembro | NativeActivity | Actividad | CodeActivity/AsyncCodeActivity |
---|---|---|---|
Argumentos | Público/privado | Público | no aplicable |
variables | Público/privado | Público | no aplicable |
Actividades para niños | Público/privado | Público, uno elemento secundario privado definido en Implementación. | no aplicable |
ActivityDelegates | Público/privado | Público | no aplicable |
En general, un miembro que no puede ser establecido por el usuario de una actividad no se debería hacer público.
Propiedades de ejecución
En algunos escenarios, es útil establecer el ámbito de una propiedad de ejecución determinada en los elementos secundarios públicos de una actividad. La ExecutionProperties colección proporciona esta funcionalidad con el Add método . Este método tiene un parámetro booleano que indica si una propiedad determinada se aplica a todos los hijos o solo a los que son públicos. Si este parámetro está establecido en true
, la propiedad solo será visible para los miembros públicos y los miembros públicos de sus elementos secundarios públicos.
Raíces secundarias
Una raíz secundaria es el mecanismo interno del entorno de ejecución para administrar el estado de las actividades de compensación. Cuando CompensableActivity ha terminado de ejecutarse, su estado no se limpia inmediatamente. En su lugar, el estado es mantenido por el runtime en una raíz secundaria hasta que el episodio de compensación se haya completado. Los entornos de ubicación capturados con la raíz secundaria corresponden al ámbito de definición en el que se usa la actividad Compensable.