Saltar al contenido principal
Version: v19 R8

Utilizar parámetros de acción

OBJETIVOS

Definir parámetros de acción para editar el contenido de su aplicación.

En el tutorial al definir acciones, descubrimos cómo ejecutar código 4D desde una aplicación iOS definiendo acciones en la sección acciones.

En este tutorial, iremos más allá y crearemos:

  • una acción de adición para crear una nueva tarea,
  • una acción de edición que le permitirá editar las tareas existentes desde la aplicación iOS,
  • una acción de eliminación para eliminar una entidad, y
  • una acción que le permitirá enviar un comentario por correo electrónico para una tarea específica.

Para comenzar, primero descarguemos el proyecto Starter basado en nuestra aplicación iOS Tasks:

PASO 1. Añadir acción

Comencemos por una tarea simple. Abra el proyecto móvil Tasks y vaya directamente a la sección Actions.

Action section

Está bastante vacío por el momento... Esto es lo que queremos: crear una nueva tarea desde la aplicación iOS.

Para esto, creemos una acción utilizando una acción preestablecida Agregar:

  • Haga clic en la flecha en el botón +, en la parte inferior de la tabla Acciones.
  • Seleccione la opción acción de añadir.
  • Seleccione la tabla Task.

Add action creation

  • Se muestra una nueva acción llamada "addTasks" con "Add..." como etiqueta predeterminada.
  • Todos los parámetrosdisponibles y sus propiedades se muestran en la sección Parámetros de las acciones.

Add action parameters

En este punto, todos los parámetros de las acciones de adición se crean automáticamente y están listos para usar.

PASO 2. Acción de edición

Ahora creemos una acción que le permitirá editar el contenido de su aplicación.

Para esto, creemos una acción utilizando una acción preestablecida de edición:

  • Haga clic en la flecha en el botón +, en la parte inferior de la tabla Acciones.
  • Seleccione la opción acción de edición.
  • Seleccione la tabla Tasks.

Edit action creation

En este punto verá:

  • Se muestra Una nueva acción llamada "editTasks" con "Add..." como etiqueta predeterminada.
  • Todos los parámetrosdisponibles y sus propiedades se muestran en la sección Parámetros de las acciones.

Edit action parameters

No se preocupe, manejaremos el código 4D para estas acciones más adelante. :-)

PASO 3. Acción de eliminación

El proceso de creación de la acción predefinido Eliminar es casi el mismo que la acción Editar:

  • Haga clic en la flecha en el botón +, en la parte inferior de la tabla Acciones.
  • Seleccione la opción acción de eliminación.
  • Seleccione la tabla Tasks.

Delete action creation

En este punto, verá una nueva acción llamada "deleteTasks" con "Remove" como la etiqueta predeterminada.

Acción de eliminación

No necesita preocuparse por los parámetros o propiedades de este tipo de acción.

PASO 4. Acción de envío de comentario

Ahora queremos enviar un comentario a un correo electrónico específico dependiendo de una tarea específica. Para hacerlo, haga clic en el botón + y cree una nueva acción llamada sendComment.

Delete action creation

Ahora creemos tres parámetros:

  • Haga clic en el botón + y seleccione Title en la lista de parámetros de las acciones, para incluirlo en el correo electrónico que va a enviar.
  • Cree un parámetro Comment y seleccione el formato Área de texto.
  • Cree un parámetro email y seleccione el formato Email address.

Su sección Actions debería verse así:

Send comment action creation

PASO 5. Creación del método base On Mobile App Action

Haga clic en el botón Crear para crear el método base On Mobile App Action.

Todas sus acciones se incluirán automáticamente en el método base.

Lo único que debe hacer es agregar una referencia a su(s) método(s) para el (los) escenario(s) que desea manejar.

Aquí el método base On Mobile App Action final:

C_OBJECT($0;$response)
C_OBJECT($1;$request)

C_OBJECT($o;$context;$request;$result;$parameters)

$request:=$1 // Información ofrecida por la aplicación móvil

$context:=$request.context
$parameters:=$request.parameters

Case of

: ($request.action="addTasks")

// Insertar aquí el código para la acción "Add…"

$o:=New object(\
"dataClass";$context.dataClass;\
"parameters";$parameters)

$result:=addAction ($o)

: ($request.action="editTasks")

// Insertar aquí el código para la acción "Edit…"

$o:=New object(\
"dataClass";$context.dataClass;\
"ID";$context.entity.primaryKey;\
"parameters";$parameters)

$result:=editAction ($o)


: ($request.action="deleteTasks")

// Insertar aquí el código para la acción "Remove"

$o:=New object(\
"dataClass";$context.dataClass;\
"ID";$context.entity.primaryKey)

$result:=deleteAction ($o)

: ($request.action="sendComment")

// Insertar aquí el código para la acción "Send Comment"

$o:=New object(\
"dataClass";$context.dataClass;\
"ID";$context.entity.primaryKey;\
"parameters";$parameters)


$result:=sendMail ($o)

Else

// Acción desconocida
End case

$0:=$result

PASO 6. Creación de todos los métodos necesarios

addAction

C_OBJECT($0)
C_OBJECT($1)

C_OBJECT($entity;$in;$out)

$in:=$1

$out:=New object("success";False)

If ($in.dataClass#Null)

$entity:=ds.Tasks.new() //create a reference

For each ($key;$in.parameters)

$entity[$key]:=$in.parameters[$key]

End for each

$entity.save() //save the entity


$out.success:=True // notify App that action success
$out.dataSynchro:=True // notify App to refresh the selection
$out.statusText:="Task added"

Else

$out.errors:=New collection("No Selection")

End if

$0:=$out


editAction

C_OBJECT($0)
C_OBJECT($1)

C_OBJECT($dataClass;$entity;$in;$out;$status;$selection)

$in:=$1

$selection:=ds[$in.dataClass].query("ID = :1";String($in.ID))

If ($selection.length=1)

$entity:=$selection[0]

For each ($key;$in.parameters)

$entity[$key]:=$in.parameters[$key]

End for each

$status:=$entity.save()

$out:=New object

If ($status.success)

$out.success:=True // notificar la App que la acción es exitosa
$out.dataSynchro:=True // notificar la App para refrescar esta entidad
$out.statusText:="Task edited"

Else

$out:=$status // devolver estado a la App

End if

Else

$out.success:=False // notificar la App que la acción falló

End if

$0:=$out


deleteAction


C_OBJECT($0)
C_OBJECT($1)

C_OBJECT($dataClass;$entity;$in;$out;$status;$selection)

$in:=$1

$selection:=ds[$in.dataClass].query("ID = :1";String($in.ID))

If ($selection.length=1)

$entity:=$selection.drop()

$out:=New object

If ($entity.length=0)

$out.success:=True // notificar a la App que la acción es exitosa
$out.dataSynchro:=True // notificar a la App refrescar esta entidad
$out.statusText:="Task deleted"

Else

$out:=$status // devolver estado a la App

End if

Else

$out.success:=False // notificar a la App que la acción falló

End if

$0:=$out


sendEmail

C_OBJECT($0;$out)
C_OBJECT($1;$in)

C_OBJECT($dataClass;$entity;$selection)

$in:=$1

$selection:=ds[$in.dataClass].query("ID = :1";String($in.ID))

If ($selection.length=1)

$entity:=$selection[0]

For each ($key;$in.parameters)

$entity[$key]:=$in.parameters[$key]

End for each

$out:=New object

$server:=New object
$server.host:="smtp.gmail.com"
$server.port:=465
$server.user:="test@mail.com"
$server.password:="yourPassword"

$transporter:=SMTP New transporter($server)

$email:=New object
$email.subject:="New comment about one of your task"
$email.from:="yourEmail"
$email.to:=$emailToSend
$email.htmlBody:="<h1>Comment from Tasks for iOS</h1>"+"<p><b>Task:</b> "+$taskTitle+"</p><p><b>Comment:</b> "\
+$commentToSend+"</p><br><p><i>Send from my 4D for iOS app</i></p>"\

$status:=$transporter.send($email)
If ($status.success)
$out.success:=True // notificar a la App que la acción fue exitosa
$out.statusText:="Mail sent"

Else
$out.success:=False // notificar a la App que la acción falló
$out.statusText:="Mail not sent"

End if

Else

$out.success:=False // notificar a la App que la acción falló

End if

$0:=$out


No olvide agregar sus propios valores para la acción sendEmail.

PASO 7. Creación de la aplicación

¡Es hora de generar su aplicación!

Ahora, si hace clic en el botón Action de la barra de navegación, podrá crear una nueva tarea.

Create new task

Si mantiene la presión sobre su nueva celda de tareas en el Formulario Lista, se mostrará una acción Editar... en la lista de acciones.

Edit task

Envíe un comentario utilizando la acción Send comment.

Send task comment

Y finalmente puede eliminar una entidad utilizando la acción Eliminar... .

Delete task

PASO 8. ¿Qué hacer ahora?

¡Felicitaciones! ¡Felicitaciones! ¡Felicitaciones! Acaba de agregar 2 acciones a su aplicación iOS. ¡Felicitaciones! ¡Felicitaciones! ¡Felicitaciones! Su aplicación iOS Tasks ahora está completa y ahora puede modificar los datos de su aplicación directamente desde su dispositivo y sincronizarlos con su servidor.

Descargar el proyecto terminado: