diff --git a/i18n/es/docusaurus-plugin-content-docs/current/API/VectorClass.md b/i18n/es/docusaurus-plugin-content-docs/current/API/VectorClass.md index 0f94cc2da2bb9d..9ec0540feb02f6 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/API/VectorClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/API/VectorClass.md @@ -11,13 +11,13 @@ En el mundo de las IA, un vector es una secuencia de números que permite a una La clase `4D.Vector` propone tres tipos de cálculos vectoriales. La siguiente tabla resume las principales características de cada uno: -| | cosineSimilarity | dotSimilarity | euclideanDistance | -| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Definición | Compara la orientación de dos textos representados como vectores. Cuanto más apunta en la misma dirección, más cerca están. | Suma de productos entre cada dimensión vectorial. Es como una puntuación ponderada de compatibilidad. | Distancia real entre dos vectores, como si se midiera con una regla. | -| Analogía simple | ¿Estamos hablando del mismo tema? | ¿Se refiere usted al mismo tema de forma insistente? | ¿Está realmente lejos de lo que estoy diciendo? | -| Ejemplo | Imagine que busca películas para ver en un servicio de streaming de vídeo a la carta. La similitud del coseno se utiliza para comparar sus gustos (por ejemplo, le gustan las películas de acción con un poco de comedia) con las descripciones de las películas de su base de datos. No importa si es un "pequeño" fan (ve 1 película al mes) o un "gran" fan (ve 10 películas a la semana), lo que importa es si las películas tienen características similares a lo que le gusta (acción + comedia). El servicio de streaming utiliza la similitud del coseno para recomendar películas que "apuntan en la misma dirección" que sus preferencias. | Piense en un motor de búsqueda. Cuando escribe "receta de tarta de chocolate", el algoritmo compara su consulta con páginas web. El producto punto se puede utilizar no sólo para comprobar si una página habla de pasteles de chocolate (una dirección similar a la de su búsqueda), sino también para dar más peso a las páginas que son muy relevantes (por ejemplo, una página con mucho contenido detallado sobre pasteles de chocolate tendrá una mayor "longitud" y, por tanto, una puntuación más alta). A page with just one sentence on the subject will have a lower score. | Imagina una aplicación de citas. The algorithm can use Euclidean distance to compare your profile (your interests, age, location, etc.) con las de otros usuarios. If your profiles are very similar (for example, you both like hiking, pop music, and you live 5 km apart), the Euclidean distance between your profiles will be low, and the app will suggest this person as a good "match". Here, all differences (however small) count, not just the general direction of your tastes. | +| | cosineSimilarity | dotSimilarity | euclideanDistance | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Definición | Compara la orientación de dos textos representados como vectores. Cuanto más apunta en la misma dirección, más cerca están. | Suma de productos entre cada dimensión vectorial. Es como una puntuación ponderada de compatibilidad. | Distancia real entre dos vectores, como si se midiera con una regla. | +| Analogía simple | ¿Estamos hablando del mismo tema? | ¿Se refiere usted al mismo tema de forma insistente? | ¿Está realmente lejos de lo que estoy diciendo? | +| Ejemplo | Imagine que busca películas para ver en un servicio de streaming de vídeo a la carta. La similitud del coseno se utiliza para comparar sus gustos (por ejemplo, le gustan las películas de acción con un poco de comedia) con las descripciones de las películas de su base de datos. No importa si es un "pequeño" fan (ve 1 película al mes) o un "gran" fan (ve 10 películas a la semana), lo que importa es si las películas tienen características similares a lo que le gusta (acción + comedia). El servicio de streaming utiliza la similitud del coseno para recomendar películas que "apuntan en la misma dirección" que sus preferencias. | Piense en un motor de búsqueda. Cuando escribe "receta de tarta de chocolate", el algoritmo compara su consulta con páginas web. El producto punto se puede utilizar no sólo para comprobar si una página habla de pasteles de chocolate (una dirección similar a la de su búsqueda), sino también para dar más peso a las páginas que son muy relevantes (por ejemplo, una página con mucho contenido detallado sobre pasteles de chocolate tendrá una mayor "longitud" y, por tanto, una puntuación más alta). Una página con una sola frase sobre el tema tendrá una puntuación más baja. | Imagine una aplicación de citas. El algoritmo puede utilizar la distancia euclidiana para comparar su perfil (sus intereses, edad, ubicación, etc.) con las de otros usuarios. Si sus perfiles son muy similares (por ejemplo, a ambos les gusta el senderismo, la música pop, y viven a 5 km de distancia), la distancia euclidiana entre sus perfiles será baja, y la aplicación sugerirá a esta persona como un buen "match". Aquí cuentan todas las diferencias (por pequeñas que sean), no sólo la orientación general de sus gustos. | -In any cases, it's a good idea to test the different vectors to determine which best suits your needs and data. +En cualquier caso, conviene probar los distintos vectores para determinar cuál se adapta mejor a sus necesidades y datos. ### Objeto vector @@ -56,7 +56,7 @@ Los objetos vectoriales son compartidos, inmutables y transmisibles. La función `4D.Vector.new()` crea y devuelve un nuevo objeto del tipo `4D.Vector`. -En *parameter*, pase una colección de números reales que representen el vector a crear. These values are provided by artifical intelligences and represent mathematically objects like words or data. +En *parameter*, pase una colección de números reales que representen el vector a crear. Estos valores los ofrecen las inteligencias artificiales y representan matemáticamente objetos como palabras o datos. #### Ejemplo @@ -90,12 +90,12 @@ var $collection := $vector.toCollection() La función `.cosineSimilarity()` calcula la similitud coseno entre el vector 4D actual y el que se paso en el parámetro *vector*. Ambos vectores deben tener el mismo tamaño. -Esta métrica mide el **ángulo entre vectores** y se utiliza habitualmente para determinar la similitud semántica entre textos. It is recommended for text embeddings, documents, sentences, and any data where **direction** matters more than **magnitude** (e.g. for semantic search or text classification). +Esta métrica mide el **ángulo entre vectores** y se utiliza habitualmente para determinar la similitud semántica entre textos. Se recomienda para incrustaciones de texto, documentos, frases y cualquier dato en el que la **dirección** importe más que la **magnitud** (por ejemplo, para la búsqueda semántica o la clasificación de textos). **Valor devuelto** - Rango: -1 (opuesto) a 1 (idéntico). -- The higher the returned value is, more similar vectors are. +- Cuanto mayor sea el valor devuelto, más parecidos son los vectores. #### Ejemplo 1 @@ -109,7 +109,7 @@ var $similarity := $vector.cosineSimilarity($anotherVector) :::info -This example uses the [4D AIKit extension](../aikit/overview.md) to generate embeddings. +Este ejemplo utiliza la extensión [4D AIKit](../aikit/overview.md) para generar incrustaciones. ::: @@ -127,23 +127,23 @@ String($people.Phone)+". Family IDs - Father: "+String($people.FatherID)+\ var $clientAI:=cs.AIKit.OpenAI.new(getAIKey()) -// Vector calculation with 4D AIKit +// Cálculo de vectores con 4D AIKit var $result:=$clientAI.embeddings.create($prompt; $model) -// 4D.vector object creation +// Creación de objetos 4D.vector var $vector:=$result.vector var $question:="I'm looking for John who lives in USA" -// Vector calculation with 4D AIKit component +// Cálculo vectorial con componente 4D AIKit var $questionVector:=$clientAI.embeddings.create($question; $model).vector -// similarity calculation +// cálculo de similitud If ($vector.cosineSimilarity($questionVector)>0.9) ALERT("Interesting result") End if -//actual result: 0,7360136465949 +//resultado real: 0,7360136465949 ``` @@ -163,14 +163,14 @@ End if #### Descripción -The `.dotSimilarity()` function calculates the dot product of the current 4D vector and the one you passed in the *vector* parameter. Ambos vectores deben tener el mismo tamaño. +La función `.dotSimilarity()` calcula el producto punto del vector 4D actual y el que pasó en el parámetro *vector*. Ambos vectores deben tener el mismo tamaño. -This metric reflects both **similarity** and **magnitude**, and is generally used in models where vector norms (magnitudes) vary. It is recommended for scenarios where embeddings have been fine-tuned with magnitude in mind (e.g., recommendation engines, scoring relevance). +Esta métrica refleja tanto la **similitud** como la **magnitud**, y se utiliza generalmente en modelos en los que varían las normas vectoriales (magnitudes). Se recomienda para escenarios en los que las incrustaciones se han afinado teniendo en cuenta la magnitud (por ejemplo, motores de recomendación, puntuación de relevancia). **Valor devuelto** - Depende de las magnitudes y direcciones de los vectores -- The higher the returned value is, more similar vectors are. +- Cuanto mayor sea el valor devuelto, más parecidos son los vectores. #### Ejemplo @@ -185,7 +185,7 @@ var $score := $vector.dotSimilarity($anotherVector) :::info -This example uses the [4D AIKit extension](../aikit/overview.md) to generate embeddings. +Este ejemplo utiliza la extensión [4D AIKit](../aikit/overview.md) para generar incrustaciones. ::: @@ -200,13 +200,13 @@ $documents:=[{text: "How to bake a chocolate cake"; similarity: 0}; \ $question:="4D coding tutorials" -// Vector calculation with 4D AIKit component +// Cálculo de vectores con el componente AIKit 4D $questionVector:=$clientAI.embeddings.create($question; $model).vector For each ($document; $documents) - // Vector calculation with 4D AIKit component + // Cálculo de vectores con el componente AIKit 4D $vector:=$clientAI.embeddings.create($document.text; $model).vector - // similarity + // similitud $document.similarity:=$vector.dotSimilarity($questionVector) End for each @@ -236,14 +236,14 @@ ALERT("Best answer: "+$documents[0].text) #### Descripción -The `.euclideanDistance()` function calculates the Euclidean distance between the current 4D vector and the one you passed in the *vector* parameter. Ambos vectores deben tener el mismo tamaño. +La función `.euclideanDistance()` calcula la distancia euclídea entre el vector 4D actual y el que pasó en el parámetro *vector*. Ambos vectores deben tener el mismo tamaño. -This measures the straight-line distance in the vector space. It is recommended for numeric or structured data embeddings, or when using models where proximity in raw space directly correlates with similarity. +Esto mide la distancia de línea recta en el espacio vectorial. Se recomienda para incrustaciones de datos numéricos o estructurados, o cuando se utilizan modelos en los que la proximidad en el espacio bruto se correlaciona directamente con la similitud. **Valor devuelto** - valor devuelto >= 0 -- The lower the returned value is, more similar vectors are. +- Cuanto más bajo sea el valor devuelto, más parecidos son los vectores. #### Ejemplo 1 @@ -281,7 +281,7 @@ ALERT("Nearest monument: "+$places[0].name) #### Descripción -The `.length` property contains the number of vector components. +La propiedad `.length` contiene el número de componentes del vector. ## .toCollection() @@ -289,12 +289,12 @@ The `.length` property contains the numb -| Parámetros | Tipo | | Descripción | -| ---------- | ---------- | --------------------------- | ------------------------------------------------------------- | -| Resultado | Collection | <- | Collection of real numbers representing the vector components | +| Parámetros | Tipo | | Descripción | +| ---------- | ---------- | --------------------------- | ---------------------------------------------------------------------- | +| Resultado | Collection | <- | Colección de números reales que representan los componentes del vector | -The `.toCollection()` function returns the vector components as a collection of reals. +La función `.toCollection()` devuelve los componentes del vector como una colección de reales. diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Notes/updates.md b/i18n/es/docusaurus-plugin-content-docs/current/Notes/updates.md index 7dfd8f499d8d8f..9a60f12964430d 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/Notes/updates.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/Notes/updates.md @@ -15,6 +15,12 @@ Lea [**Novedades en 4D 21**](https://blog.4d.com/en-whats-new-in-4d-21/), la ent - New "trim" commands to remove leading and trailing spaces from a string: [`Trim`](../commands/trim.md), [`Trim start`](../commands/trim-start.md), and [`Trim end`](../commands/trim-end.md). - Los comandos [`Num`](../commands/num.md) y [`String`](../commands/string.md) han sido actualizados para soportar conversiones en diferentes bases (radix). +#### Cambios de comportamiento + +- Web services (SOAP): when [scalable sessions](../WebServer/sessions.md#enabling-web-sessions) are enabled, web services now run in [**preemptive processes**](../Develop/preemptive.md) in compiled mode. Make sure your SOAP code is thread-safe. +- Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. No specific processing is done on these URLs anymore. +- Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). + ## 4D 20 R10 Lea las [**Novedades en 4D 20 R10**](https://blog.4d.com/en-whats-new-in-4d-20-R10/), la entrada del blog que muestra todas las nuevas funcionalidades y mejoras en 4D 20 R10. diff --git a/i18n/es/docusaurus-plugin-content-docs/current/ORDA/orda-events.md b/i18n/es/docusaurus-plugin-content-docs/current/ORDA/orda-events.md index 150b59ba0a90ab..b3a9e0c58f7db5 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/ORDA/orda-events.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/ORDA/orda-events.md @@ -5,9 +5,9 @@ title: Eventos ORDA
Historia -| Lanzamiento | Modificaciones | -| ----------- | -------------- | -| 20 R10 | Añadidos | +| Lanzamiento | Modificaciones | +| ----------- | ------------------- | +| 20 R10 | touched event added |
@@ -93,16 +93,12 @@ This event is triggered each time a value is modified in the entity. This event is triggered as soon as the 4D Server / 4D engine can detect a modification of attribute value which can be due to the following actions: - in **client/server with the [`local` keyword](../ORDA/ordaClasses.md#local-functions)** or in **4D single-user**: - - el usuario define un valor en un formulario 4D, - - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). + - el usuario define un valor en un formulario 4D, + - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). - in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). - in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. - with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) -:::note - -::: - The function receives an [*event* object](#event-parameter) as parameter. If this event [throws](../commands-legacy/throw.md) an error, it will not stop the undergoing action. @@ -154,6 +150,72 @@ Function event touched arrivalDate($event : Object) ``` +#### Example 3 (diagram): Client/server with the `local` keyword: + +```mermaid + +sequenceDiagram + + Client->>+Server: $people:=ds.People.all().first() + + Client->>+Client: $people.lastname:="Brown" + Note over Client: local Function event touched lastname($event : Object)
This.lastname:=Uppercase(This.lastname) + +Note over Client:$people.lastname is uppercased + + Client->>+Server: $people.apply() + + Note over Server: The $people entity is received with the lastname attribute uppercased + +``` + +#### Example 4 (diagram): Client/server without the `local` keyword + +```mermaid + +sequenceDiagram + + Client->>+Server: $people:=ds.People.all().first() + + Client->>+Client: $people.lastname:="Brown" + + Note over Client:$people.lastname is not uppercased + + Client->>+Server: $people.apply() + + Note over Server: Function event touched lastname($event : Object)
This.lastname:=Uppercase(This.lastname) + + Server-->>-Client: The $people entity is updated + + Note over Client:$people.lastname is uppercased + + +``` + +#### Ejemplo 5 (diagrama): Aplicación Qodly + +```mermaid + +sequenceDiagram + +Qodly page->>+ Server: Get an entity into the People Qodly source + +Qodly page->>+Qodly page: The user updates People.lastname + +Note over Qodly page: The People Qodly source lastname attribute is not uppercased + +Qodly page->>+ Server: Function call People.apply() + +Note over Server: Function event touched lastname($event : Object)
This.lastname:=Uppercase(This.lastname) + +Server-->>-Qodly page: The People Qodly source is updated +Note over Qodly page: The People Qodly source lastname attribute is uppercased + + +``` + + + diff --git a/i18n/es/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md b/i18n/es/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md index 5c6791c05f9f74..218d3c746df949 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md @@ -355,7 +355,7 @@ Dado que funciones como [`dataClass.fromCollection()`](../API/DataClassClass.md# ::: -#### Ejemplo +#### Ejemplo 1 ```4d @@ -367,6 +367,83 @@ Class constructor() ``` +#### Ejemplo 2 (diagrama): cliente/servidor + +```mermaid + +sequenceDiagram + +Client->>+Client: Form.product:=ds.Products.new() + +Note over Client: Class constructor
This.creationDate:=Current date()
This.comment:="Automatic comment" + +Note over Client: Form.product.creationDate is "06/17/25"
Form.product.comment is "Automatic comment" + +Client->>+Server: Form.product.save() + +Server-->>-Client: Success + + +``` + +#### Ejemplo 3 (diagrama): Qodly - Acción estándar + +```mermaid + +sequenceDiagram + + Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source) + + Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source + + Note over Server: Class constructor
This.creationDate:=Current date()
This.comment:="Automatic comment" + + Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled + + Note over Qodly page: product.creationDate is "06/17/25"
and product.comment is "Automatic comment" + +``` + +#### Example 4 (diagram): Qodly - Standard action and update value on the newly created entity + +```mermaid + +sequenceDiagram + +Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source) + +Qodly page->>+ Qodly page: Update product comment with "Front end comment" + +Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source + +Note over Server: Class constructor
This.creationDate:=Current date()
This.comment:="Automatic comment" + +Note over Server: The comment attribute is set with "Front end comment" + +Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled + +Note over Qodly page: product.creationDate is "06/17/25"
and product.comment is "Front end comment" + +``` + +#### Example 5 (diagram): Qodly - Entity instanciated in a function + +```mermaid + +sequenceDiagram + +Qodly page->>+Server: product Qodly source := Function call Products.createNew() + +Note over Server: CreateNew() function on the Products class
return This.new() + +Note over Server: Class constructor
This.creationDate:=Current date()
This.comment:="Automatic comment" + +Server-->>-Qodly page: The product entity creationDate and comment attributes are filled + +Note over Qodly page: product.creationDate is "06/17/25"
and product.comment is "Automatic comment" + +``` + ## Atributos calculados ### Generalidades diff --git a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/authentication.md b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/authentication.md index 9a1efe7d78e973..298ae339ac8bb9 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/authentication.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/authentication.md @@ -76,7 +76,7 @@ El método base `On Web Authentication` se llama automáticamente cuando una sol Por tanto, se llama al método base `On Web Authentication`: - cuando el servidor web recibe una URL que solicita un recurso que no existe -- cuando el servidor web recibe una URL que empieza por `4DACTION/`, `4DCGI/`... +- when the web server receives a URL beginning with `4DACTION/` - cuando el servidor web recibe una URL de acceso raíz y no se ha definido ninguna página de inicio en los Parámetros o mediante el comando [`WEB SET HOME PAGE`](../commands-legacy/web-set-home-page.md) - cuando el servidor web procesa una etiqueta que ejecuta código (por ejemplo, `4DSCRIPT`) en una página semidinámica. diff --git a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md index dcb4cb4da8bf23..6c5d48722696dc 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md @@ -76,7 +76,7 @@ URL patterns can be given as **prefixes** or using **regular expressions**. Ej: `"pattern": "docs"` o `"pattern": "docs/invoices"` - To declare a regular expression pattern, use the "regexPattern" property name in the HTTPHandlers.json file. Los modelos de expresiones regulares se manejan directamente. - Ex: `"regexPattern" : "/docs/.+/index\.html"` + Ej: `"regexPattern" : "/docs/.+/index\.html"` "Pattern" and "regexPattern" properties cannot be used in the same handler definition (in this case, only the "regexPattern" property is taken into account). diff --git a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md index 7c3140ffad4881..7d8fc3cf7f7ea9 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md @@ -26,10 +26,11 @@ La siguiente tabla indica si el modo apropiativo se utiliza o está disponible, - Servidor REST: gestiona las [funciones de clase del modelo de datos ORDA](../REST/ClassFunctions.md) - Servidor web: maneja las [plantillas web](templates.md), [4DACTION y los métodos base](httpRequests.md) - Servidor de servicios web: gestiona las peticiones SOAP -- ***web setting*** significa que el modo apropiativo depende de un valor de configuración: - - cuando se selecciona la opción de [**sesiones escalables**](sessions.md#enabling-web-sessions), el modo apropiativo se utiliza automáticamente para los procesos web. - - en caso contrario, se tendrá en cuenta la opción [**Utilizar procesos apropiativos**](webServerConfig.md#use-preemptive-processes). - - en lo que respecta a los procesos de servicios web (servidor o cliente), se soporta el modo apropiativo a nivel del método. Sólo tiene que seleccionar la propiedad "Puede ejecutarse en procesos apropiativos" para los métodos del servidor SOAP publicados (ver [Publicación de un servicio web con 4D](https://doc.4d.com/4Dv20/4D/20.2/Publishing-a-Web-Service-with-4D.300-6750334.en.html)) o los métodos del cliente proxy (ver [Suscripción a un servicio web en 4D](https://doc.4d.com/4Dv20/4D/20.2/Subscribing-to-a-Web-Service-in-4D.300-6750336.en.html)) y asegurarse de que el compilador confirme que son hilo seguro. +- ***web setting*** means that the preemptive mode depends on the [**scalable sessions**](sessions.md#enabling-web-sessions) status: + - if scalable sessions are enabled, the preemptive mode is automatically used for web and web service processes. + - if scalable sessions are not enabled: + - for web processes, the [**Use preemptive processes**](webServerConfig.md#use-preemptive-processes) option is taken into account. + - for web service processes (server or client), preemptive mode is supported at method level. ## Escribir código servidor web hilo seguro @@ -51,7 +52,7 @@ Todo el código 4D ejecutado por el servidor web debe ser hilo seguro si quiere - [funciones de clase del modelo de datos ORDA](../REST/ClassFunctions.md) llamadas vía REST -Para cada uno de estos métodos y partes de código, el compilador comprobará si se respetan las reglas de seguridad de hilos, y devolverá errores en caso de que haya problemas. Para más información sobre las reglas hilo seguro, consulte el párrafo *Escribir un método hilo seguro* en el capítulo *Procesos* del manual de [Lenguaje 4D](https://doc.4d.com). +For each of these methods and code parts, the compiler will check if the [thread-safety rules are respected](../Develop/preemptive.md#writing-a-thread-safe-method), and will return errors in case of issues. ## Código web 4D hilo seguro @@ -73,7 +74,6 @@ Por supuesto, el código ejecutado por estos métodos también debe ser hilo seg Las siguientes URLs 4D Web Server son hilo seguro y pueden ser utilizadas en modo apropiativo: - *4daction/* (el método proyecto llamado también debe ser hilo seguro) -- *4dcgi/* (los métodos base llamados también deben ser hilo seguro) - *4dwebtest/* - *4dblank/* - *4dstats/* diff --git a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/sessions.md b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/sessions.md index e137691f98a3f6..e6c30f462d912c 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/sessions.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/sessions.md @@ -16,7 +16,7 @@ Las sesiones web permiten: Las sesiones web se utilizan para: -- [Aplicaciones web](gettingStarted.md) que envían peticiones http, +- [Web applications](gettingStarted.md) sending http requests (including [SOAP Web services](../commands/theme/Web_Services_Server.md) and [/4DACTION](../WebServer/httpRequests.md#4daction) requests), - llamadas a la [REST API](../REST/authUsers.md), que utilizan [datastores remotos](../ORDA/remoteDatastores.md) y [formularios Qodly](qodly-studio.md). ## Habilitando sesiones web diff --git a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md index d107668e627c3e..3a5757f2bf5bfe 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md @@ -597,10 +597,6 @@ Esta opción activa el modo apropiativo para el código del servidor web de su a Los parámetros siguientes siguen siendo compatibles, pero se basan en funcionalidades o tecnologías obsoletas. Generalmente se recomienda mantener los valores por defecto. -#### Autorizar el acceso a la base de datos a través de las URL 4DSYNC - -Esta opción controla el soporte de las peticiones de sincronización HTTP que contienen las URLs obsoletas */4DSYNC*. - #### Validación de la dirección IP de la sesión > Esta opción no está disponible en [modo sesiones evolutivas](WebServer/sessions.md) (no hay validación). diff --git a/i18n/es/docusaurus-plugin-content-docs/current/commands/form-event-code.md b/i18n/es/docusaurus-plugin-content-docs/current/commands/form-event-code.md index c87e08a1e75f6a..81fa2aadfd2d03 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/commands/form-event-code.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/commands/form-event-code.md @@ -300,7 +300,7 @@ En este ejemplo, el evento formulario [`On Scroll`](../Events/onScroll.md) nos p  End case ``` -Result: https://www.youtube.com/watch?v=YIRfsW1BmHE +Resultado: https://www.youtube.com/watch?v=YIRfsW1BmHE ## Ejemplo 13 diff --git a/i18n/es/docusaurus-plugin-content-docs/current/commands/print-form.md b/i18n/es/docusaurus-plugin-content-docs/current/commands/print-form.md index 399a5b3fb6fef6..1358e18b92a2e4 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/commands/print-form.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/commands/print-form.md @@ -8,28 +8,28 @@ displayed_sidebar: docs -| Parámetros | Tipo | | Descripción | -| ---------- | ------------ | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| aTable | Tabla | → | Table owning the form, or Default table, if omitted | -| form | Text, Object | → | Name (string) of the form, or a POSIX path (string) to a .json file describing the form, or an object describing the form to print | -| formData | Object | → | Datos a asociar al formulario | -| areaStart | Integer | → | Marcador de impresión, o Área inicial (si se especifica areaEnd) | -| areaEnd | Integer | → | Área final (si se especifica areaStart) | -| Resultado | Integer | ← | Altura de la sección impresa | +| Parámetros | Tipo | | Descripción | +| ---------- | ------------ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| aTable | Tabla | → | Tabla del formulario, o tabla por defecto, si se omite | +| form | Text, Object | → | Nombre (cadena) del formulario, o ruta POSIX (cadena) a un archivo .json que describa el formulario, o un objeto que describa el formulario a imprimir | +| formData | Object | → | Datos a asociar al formulario | +| areaStart | Integer | → | Marcador de impresión, o área de inicio (si se especifica areaEnd) | +| areaEnd | Integer | → | Área final (si se especifica areaStart) | +| Resultado | Integer | ← | Altura de la sección impresa | ## Descripción -The **Print form** command simply prints *form* with the current values of fields and variables of *aTable*.The **Print form** command simply prints *form* with the current values of fields and variables of *aTable*. It is usually used to print very complex reports that require complete control over the printing process. **Print form** does not do any record processing, break processing or page breaks. Estas operaciones son responsabilidad suya. **Print form*** imprime campos y variables solo en un marco de tamaño fijo. +The **Print form** command simply prints *form* with the current values of fields and variables of *aTable*.El comando **Print form** simplemente imprime *form* con los valores actuales de los campos y variables de la tabla *aTable*. Suele utilizarse para imprimir informes muy complejos que requieren un control total del proceso de impresión. **Print form** no realiza ningún procesamiento de registros, ni las rupturas, ni de saltos de página. Estas operaciones son responsabilidad suya. **Print form*** imprime campos y variables solo en un marco de tamaño fijo. En el parámetro *form*, puede pasar: - el nombre de un formulario, o -- the path (in POSIX syntax) to a valid .json file containing a description of the form to use (see *Form file path*), or +- la ruta (en sintaxis POSIX) de un archivo .json válido que contenga una descripción del formulario a utilizar (ver *Ruta de acceso al archivo de formulario*), o - un objeto que contiene la descripción del formulario. -Since **Print form** does not issue a page break after printing the form, it is easy to combine different forms on the same page. Thus, **Print form** is perfect for complex printing tasks that involve different tables and different forms. Para forzar un salto de página entre formularios, utilice el comando [PAGE BREAK](../commands-legacy/page-break.md). Para transferir la impresión a la página siguiente de un formulario cuya altura es superior al espacio disponible, invoque el comando [CANCEL](../commands-legacy/cancel.md) antes del comando [PAGE BREAK](../commands-legacy/page-break.md). +Como **Print form** no genera un salto de página después de imprimir el formulario, es fácil combinar diferentes formularios en la misma página. Así, **Print form** es perfecto para tareas de impresión complejas que implican diferentes tablas y diferentes formularios. Para forzar un salto de página entre formularios, utilice el comando [PAGE BREAK](../commands-legacy/page-break.md). Para transferir la impresión a la página siguiente de un formulario cuya altura es superior al espacio disponible, invoque el comando [CANCEL](../commands-legacy/cancel.md) antes del comando [PAGE BREAK](../commands-legacy/page-break.md). Se pueden utilizar tres sintaxis diferentes: @@ -41,7 +41,7 @@ Sintaxis:  height:=Print form(myTable;myForm) ``` -In this case, **Print form** only prints the Detail area (the area between the Header line and the Detail line) of the form. +En este caso, **Print form** sólo imprime el área de detalle del formulario (el área entre la línea de encabezado y la línea de detalle). - **Impresión de área de formulario** @@ -51,7 +51,7 @@ Sintaxis:  height:=Print form(myTable;myForm;marker) ``` -In this case, the command will print the section designated by the *marker*. Pass one of the constants of the *Form Area* theme in the marker parameter: +En este caso, el comando imprimirá la sección designada por el *marker*. Pase una de las constantes del tema *Form Area* en el parámetro marcador: | Constante | Tipo | Valor | | ------------- | ------- | ----- | @@ -87,41 +87,41 @@ Sintaxis:  height:=Print form(myTable;myForm;areaStart;areaEnd) ``` -In this case, the command will print the section included between the *areaStart* and *areaEnd* parameters. Los valores introducidos deben expresarse en píxeles. +En este caso, el comando imprimirá la sección incluida entre los parámetros *areaStart* y *areaEnd*. Los valores introducidos deben expresarse en píxeles. **formData** -Opcionalmente, puede pasar parámetros al *form* usando el objeto *formData* o el objeto de clase form automáticamente instanciado por 4D si has [asociado una clase de usuario al formulario](../FormEditor/properties_FormProperties.md#form-class). Any properties of the form data object will then be available from within the form context through the [Form](form.md) command. Optionally, you can pass parameters to the *form* using either the *formData* object or the form class object automatically instantiated by 4D if you have [associated a user class to the form](../FormEditor/properties_FormProperties.md#form-class). +Opcionalmente, puede pasar parámetros al *form* usando el objeto *formData* o el objeto de clase form automáticamente instanciado por 4D si has [asociado una clase de usuario al formulario](../FormEditor/properties_FormProperties.md#form-class). Todas la propiedades del objeto de datos del formulario estarán entonces disponibles desde el contexto del formulario a través del comando [Form](form.md). Optionally, you can pass parameters to the *form* using either the *formData* object or the form class object automatically instantiated by 4D if you have [associated a user class to the form](../FormEditor/properties_FormProperties.md#form-class). Para obtener información detallada sobre el objeto de datos del formulario, consulte el comando [`DIALOG`](dialog.md). **Valor devuelto** -The value returned by **Print form** indicates the height of the printable area. Este valor será tomado en cuenta automáticamente por el comando [Get printed height](../commands-legacy/get-printed-height.md). +El valor devuelto por **Print form** indica la altura del área de impresión. Este valor será tomado en cuenta automáticamente por el comando [Get printed height](../commands-legacy/get-printed-height.md). -Las cajas de diálogo de la impresora no aparecen cuando se utiliza **Print form**. The report does not use the print settings that were assigned to the form in the Design environment. There are two ways to specify the print settings before issuing a series of calls to **Print form**: +Las cajas de diálogo de la impresora no aparecen cuando se utiliza **Print form**. El informe no utiliza la configuración de impresión definida en el modo Diseño para el formulario. Hay dos formas de especificar los parámetros de impresión antes de realizar una serie de llamadas a **Print form**: -- Llamar a [PRINT SETTINGS](../commands-legacy/print-settings.md). In this case, you let the user choose the settings. -- Llame a [SET PRINT OPTION](../commands-legacy/set-print-option.md) y [GET PRINT OPTION](../commands-legacy/get-print-option.md). In this case, print settings are specified programmatically. +- Llamar a [PRINT SETTINGS](../commands-legacy/print-settings.md). En este caso, deja que el usuario elija la configuración. +- Llame a [SET PRINT OPTION](../commands-legacy/set-print-option.md) y [GET PRINT OPTION](../commands-legacy/get-print-option.md). En este caso, los parámetros de impresión se especifican por programación. -**Print form** crea cada página impresa en la memoria. Cada página se imprime cuando la página en memoria está llena o cuando se llama a [PAGE BREAK](../commands-legacy/page-break.md). Para asegurar la impresión de la última página después de cualquier uso de **Print form**, debe concluir con el comando [PAGE BREAK](../commands-legacy/page-break.md) (excepto en el contexto de un [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), ver nota). Otherwise, if the last page is not full, it stays in memory and is not printed. +**Print form** crea cada página impresa en la memoria. Cada página se imprime cuando la página en memoria está llena o cuando se llama a [PAGE BREAK](../commands-legacy/page-break.md). Para asegurar la impresión de la última página después de cualquier uso de **Print form**, debe concluir con el comando [PAGE BREAK](../commands-legacy/page-break.md) (excepto en el contexto de un [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), ver nota). En caso contrario, si la última página no está llena, permanece en memoria y no se imprime. -**Warning:** If the command is called in the context of a printing job opened with [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), you must NOT call [PAGE BREAK](../commands-legacy/page-break.md) for the last page because it is automatically printed by the [CLOSE PRINTING JOB](../commands-legacy/close-printing-job.md) command. Si llama a [PAGE BREAK](../commands-legacy/page-break.md) en este caso, se imprime una página en blanco. +**Atención:** si se llama al comando en el contexto de un trabajo de impresión abierto con [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), NO se debe llamar a [PAGE BREAK](../commands-legacy/page-break.md) para la última página porque se imprime automáticamente con el comando [CLOSE PRINTING JOB](../commands-legacy/close-printing-job.md). Si llama a [PAGE BREAK](../commands-legacy/page-break.md) en este caso, se imprime una página en blanco. -This command prints external areas and objects (for example, 4D Write or 4D View areas). El área se reinicializa cada vez que se ejecuta el comando. +Este comando imprime áreas y objetos externos (por ejemplo, áreas 4D Write o 4D View). El área se reinicializa cada vez que se ejecuta el comando. -**Warning:** Subforms are not printed with **Print form**. Para imprimir sólo un formulario con dichos objetos, utilice [PRINT RECORD](../commands-legacy/print-record.md) en su lugar. +**Atención:** los subformularios no se imprimen con **Print form**. Para imprimir sólo un formulario con dichos objetos, utilice [PRINT RECORD](../commands-legacy/print-record.md) en su lugar. -**Print form** genera sólo un [evento [`On Printing Detail`](../Events/onPrintingDetail.md) para el método formulario. +**Print form** genera sólo un [evento `On Printing Detail`](../Events/onPrintingDetail.md) para el método formulario. -**4D Server:** This command can be executed on 4D Server within the framework of a stored procedure. En este contexto: +**4D Server:** este comando puede ejecutarse en 4D Server en el marco de un procedimiento almacenado. En este contexto: -- Make sure that no dialog box appears on the server machine (except for a specific requirement). -- In the case of a problem concerning the printer (out of paper, printer disconnected, etc.), no error message is generated. +- Asegúrese de que no aparezca ningún cuadro de diálogo en el equipo servidor (salvo que se trate de un requisito específico). +- En el caso de un problema relacionado con la impresora (falta de papel, impresora desconectada, etc.), no se genera ningún mensaje de error. ## Ejemplo 1 -El siguiente ejemplo funciona como lo haría un comando [PRINT SELECTION](../commands-legacy/print-selection.md). However, the report uses one of two different forms, depending on whether the record is for a check or a deposit: +El siguiente ejemplo funciona como lo haría un comando [PRINT SELECTION](../commands-legacy/print-selection.md). Sin embargo, el informe utiliza una de dos formas diferentes, dependiendo de si el registro corresponde a un cheque o a un ingreso: ```4d  QUERY([Register]) // Seleccionar los registros @@ -150,7 +150,7 @@ Consulte el ejemplo del comando [SET PRINT MARKER](../commands-legacy/set-print- ## Ejemplo 3 -This form is used as dialog, then printed with modifications: +Este formulario se utiliza como diálogo y luego se imprime con modificaciones: ![](../assets/en/commands/pict6264975.en.png) diff --git a/i18n/es/docusaurus-plugin-content-docs/current/commands/process-activity.md b/i18n/es/docusaurus-plugin-content-docs/current/commands/process-activity.md index 1c4abf9915ca5e..81ddc4abeb9dfb 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/commands/process-activity.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/commands/process-activity.md @@ -21,6 +21,7 @@ displayed_sidebar: docs | Lanzamiento | Modificaciones | | ----------- | --------------------------------- | | 20 R7 | Soporte del parámetro *sessionID* | +| 21 | Support of web user sessions | @@ -54,10 +55,9 @@ Cuando se ejecuta en 4D en modo remoto o local, `Process activity` siempre devue The "sessions" property contains a collection of objects describing all running sessions on the server. Para una descripción de las propiedades del objeto de sesión, por favor consulte el comando [`Session info`](session-info.md). -:::note Notas +:::note -- Puede obtener el objeto de una sesión utilizando el comando [Session](session.md). -- `Process activity` returns remote client sessions, stored procedure session and rest sessions but not Web sessions (limitation). +Puede obtener el objeto de una sesión utilizando el comando [Session](session.md). ::: diff --git a/i18n/es/docusaurus-plugin-content-docs/current/settings/web.md b/i18n/es/docusaurus-plugin-content-docs/current/settings/web.md index ad022faa6f57ea..393e819fd4f19d 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/settings/web.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/settings/web.md @@ -33,10 +33,6 @@ Indica si el servidor web acepta conexiones seguras. Ver [Activar HTTPS](../WebS Permite modificar el número de puerto TCP/IP utilizado por el servidor web para las conexiones HTTP seguras sobre TLS (protocolo HTTPS). Ver [Puerto HTTPS](../WebServer/webServerConfig.md#https-port). -#### Autorizar el acceso a la base de datos a través de las URL 4DSYNC - -*Nota de compatibilidad:* esta opción es [obsoleta](../WebServer/webServerConfig.md#deprecated-settings). Para el acceso a la base de datos a través de HTTP, ahora se recomienda utilizar las funcionalidades del almacén de datos remoto ORDA y las peticiones REST. - ### Rutas #### Raíz HTML por defecto @@ -112,7 +108,7 @@ No disponible con las [sesiones extensibles](../WebServer/sessions.md). Activa los procesos web apropiativos en sus aplicaciones compiladas. Cuando se selecciona **Utilizar los procesos apropiativos**, la elegibilidad de su código relacionado con la web (incluyendo las etiquetas 4D y los métodos base Web) para la ejecución apropiativa será evaluada durante la compilación. Para más información, consulte [Utilizar los procesos web apropiativos](../WebServer/preemptiveWeb.md). -> Esta opción no se aplica a las sesiones extensibles, a los procesos REST (modo compilado) ni a los procesos de servicios web (servidor o cliente). Ver [Activar el modo apropiativo para el servidor web](../WebServer/webServerConfig.md#use-preemptive-processes). +> Esta opción no se aplica a las sesiones extensibles, a los procesos REST (modo compilado) ni a los procesos de servicios web (servidor o cliente). Ver [Activar el modo apropiativo para el servidor web](../WebServer/webServerConfig.md#use-preemptive-processes). #### Tiempo de espera del proceso inactivo diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/VectorClass.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/VectorClass.md index 9646077643b305..1a2f8d82d798ea 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/VectorClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/VectorClass.md @@ -11,13 +11,13 @@ En el mundo de las IA, un vector es una secuencia de números que permite a una La clase `4D.Vector` propone tres tipos de cálculos vectoriales. La siguiente tabla resume las principales características de cada uno: -| | cosineSimilarity | dotSimilarity | euclideanDistance | -| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Definición | Compara la orientación de dos textos representados como vectores. Cuanto más apunta en la misma dirección, más cerca están. | Suma de productos entre cada dimensión vectorial. Es como una puntuación ponderada de compatibilidad. | Distancia real entre dos vectores, como si se midiera con una regla. | -| Analogía simple | ¿Estamos hablando del mismo tema? | ¿Se refiere usted al mismo tema de forma insistente? | ¿Está realmente lejos de lo que estoy diciendo? | -| Ejemplo | Imagine que busca películas para ver en un servicio de streaming de vídeo a la carta. La similitud del coseno se utiliza para comparar sus gustos (por ejemplo, le gustan las películas de acción con un poco de comedia) con las descripciones de las películas de su base de datos. No importa si es un "pequeño" fan (ve 1 película al mes) o un "gran" fan (ve 10 películas a la semana), lo que importa es si las películas tienen características similares a lo que le gusta (acción + comedia). El servicio de streaming utiliza la similitud del coseno para recomendar películas que "apuntan en la misma dirección" que sus preferencias. | Piense en un motor de búsqueda. Cuando escribe "receta de tarta de chocolate", el algoritmo compara su consulta con páginas web. El producto punto se puede utilizar no sólo para comprobar si una página habla de pasteles de chocolate (una dirección similar a la de su búsqueda), sino también para dar más peso a las páginas que son muy relevantes (por ejemplo, una página con mucho contenido detallado sobre pasteles de chocolate tendrá una mayor "longitud" y, por tanto, una puntuación más alta). A page with just one sentence on the subject will have a lower score. | Imagina una aplicación de citas. The algorithm can use Euclidean distance to compare your profile (your interests, age, location, etc.) con las de otros usuarios. If your profiles are very similar (for example, you both like hiking, pop music, and you live 5 km apart), the Euclidean distance between your profiles will be low, and the app will suggest this person as a good "match". Here, all differences (however small) count, not just the general direction of your tastes. | +| | cosineSimilarity | dotSimilarity | euclideanDistance | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Definición | Compara la orientación de dos textos representados como vectores. Cuanto más apunta en la misma dirección, más cerca están. | Suma de productos entre cada dimensión vectorial. Es como una puntuación ponderada de compatibilidad. | Distancia real entre dos vectores, como si se midiera con una regla. | +| Analogía simple | ¿Estamos hablando del mismo tema? | ¿Se refiere usted al mismo tema de forma insistente? | ¿Está realmente lejos de lo que estoy diciendo? | +| Ejemplo | Imagine que busca películas para ver en un servicio de streaming de vídeo a la carta. La similitud del coseno se utiliza para comparar sus gustos (por ejemplo, le gustan las películas de acción con un poco de comedia) con las descripciones de las películas de su base de datos. No importa si es un "pequeño" fan (ve 1 película al mes) o un "gran" fan (ve 10 películas a la semana), lo que importa es si las películas tienen características similares a lo que le gusta (acción + comedia). El servicio de streaming utiliza la similitud del coseno para recomendar películas que "apuntan en la misma dirección" que sus preferencias. | Piense en un motor de búsqueda. Cuando escribe "receta de tarta de chocolate", el algoritmo compara su consulta con páginas web. El producto punto se puede utilizar no sólo para comprobar si una página habla de pasteles de chocolate (una dirección similar a la de su búsqueda), sino también para dar más peso a las páginas que son muy relevantes (por ejemplo, una página con mucho contenido detallado sobre pasteles de chocolate tendrá una mayor "longitud" y, por tanto, una puntuación más alta). Una página con una sola frase sobre el tema tendrá una puntuación más baja. | Imagine una aplicación de citas. El algoritmo puede utilizar la distancia euclidiana para comparar su perfil (sus intereses, edad, ubicación, etc.) con las de otros usuarios. Si sus perfiles son muy similares (por ejemplo, a ambos les gusta el senderismo, la música pop, y viven a 5 km de distancia), la distancia euclidiana entre sus perfiles será baja, y la aplicación sugerirá a esta persona como un buen "match". Aquí cuentan todas las diferencias (por pequeñas que sean), no sólo la orientación general de sus gustos. | -In any cases, it's a good idea to test the different vectors to determine which best suits your needs and data. +En cualquier caso, conviene probar los distintos vectores para determinar cuál se adapta mejor a sus necesidades y datos. ### Objeto vector @@ -58,7 +58,7 @@ Los objetos vectoriales son compartidos, inmutables y transmisibles. La función `4D.Vector.new()` crea y devuelve un nuevo objeto del tipo `4D.Vector`. -En *parameter*, pase una colección de números reales que representen el vector a crear. These values are provided by artifical intelligences and represent mathematically objects like words or data. +En *parameter*, pase una colección de números reales que representen el vector a crear. Estos valores los ofrecen las inteligencias artificiales y representan matemáticamente objetos como palabras o datos. #### Ejemplo @@ -92,12 +92,12 @@ var $collection := $vector.toCollection() La función `.cosineSimilarity()` calcula la similitud coseno entre el vector 4D actual y el que se paso en el parámetro *vector*. Ambos vectores deben tener el mismo tamaño. -Esta métrica mide el **ángulo entre vectores** y se utiliza habitualmente para determinar la similitud semántica entre textos. It is recommended for text embeddings, documents, sentences, and any data where **direction** matters more than **magnitude** (e.g. for semantic search or text classification). +Esta métrica mide el **ángulo entre vectores** y se utiliza habitualmente para determinar la similitud semántica entre textos. Se recomienda para incrustaciones de texto, documentos, frases y cualquier dato en el que la **dirección** importe más que la **magnitud** (por ejemplo, para la búsqueda semántica o la clasificación de textos). **Valor devuelto** - Rango: -1 (opuesto) a 1 (idéntico). -- The higher the returned value is, more similar vectors are. +- Cuanto mayor sea el valor devuelto, más parecidos son los vectores. #### Ejemplo 1 @@ -111,7 +111,7 @@ var $similarity := $vector.cosineSimilarity($anotherVector) :::info -This example uses the [4D AIKit extension](../aikit/overview.md) to generate embeddings. +Este ejemplo utiliza la extensión [4D AIKit](../aikit/overview.md) para generar incrustaciones. ::: @@ -129,23 +129,23 @@ String($people.Phone)+". Family IDs - Father: "+String($people.FatherID)+\ var $clientAI:=cs.AIKit.OpenAI.new(getAIKey()) -// Vector calculation with 4D AIKit +// Cálculo de vectores con 4D AIKit var $result:=$clientAI.embeddings.create($prompt; $model) -// 4D.vector object creation +// Creación de objetos 4D.vector var $vector:=$result.vector var $question:="I'm looking for John who lives in USA" -// Vector calculation with 4D AIKit component +// Cálculo vectorial con componente 4D AIKit var $questionVector:=$clientAI.embeddings.create($question; $model).vector -// similarity calculation +// cálculo de similitud If ($vector.cosineSimilarity($questionVector)>0.9) ALERT("Interesting result") End if -//actual result: 0,7360136465949 +//resultado real: 0,7360136465949 ``` @@ -165,14 +165,14 @@ End if #### Descripción -The `.dotSimilarity()` function calculates the dot product of the current 4D vector and the one you passed in the *vector* parameter. Ambos vectores deben tener el mismo tamaño. +La función `.dotSimilarity()` calcula el producto punto del vector 4D actual y el que pasó en el parámetro *vector*. Ambos vectores deben tener el mismo tamaño. -This metric reflects both **similarity** and **magnitude**, and is generally used in models where vector norms (magnitudes) vary. It is recommended for scenarios where embeddings have been fine-tuned with magnitude in mind (e.g., recommendation engines, scoring relevance). +Esta métrica refleja tanto la **similitud** como la **magnitud**, y se utiliza generalmente en modelos en los que varían las normas vectoriales (magnitudes). Se recomienda para escenarios en los que las incrustaciones se han afinado teniendo en cuenta la magnitud (por ejemplo, motores de recomendación, puntuación de relevancia). **Valor devuelto** - Depende de las magnitudes y direcciones de los vectores -- The higher the returned value is, more similar vectors are. +- Cuanto mayor sea el valor devuelto, más parecidos son los vectores. #### Ejemplo @@ -187,7 +187,7 @@ var $score := $vector.dotSimilarity($anotherVector) :::info -This example uses the [4D AIKit extension](../aikit/overview.md) to generate embeddings. +Este ejemplo utiliza la extensión [4D AIKit](../aikit/overview.md) para generar incrustaciones. ::: @@ -202,13 +202,13 @@ $documents:=[{text: "How to bake a chocolate cake"; similarity: 0}; \ $question:="4D coding tutorials" -// Vector calculation with 4D AIKit component +// Cálculo de vectores con el componente AIKit 4D $questionVector:=$clientAI.embeddings.create($question; $model).vector For each ($document; $documents) - // Vector calculation with 4D AIKit component + // Cálculo de vectores con el componente AIKit 4D $vector:=$clientAI.embeddings.create($document.text; $model).vector - // similarity + // similitud $document.similarity:=$vector.dotSimilarity($questionVector) End for each @@ -238,14 +238,14 @@ ALERT("Best answer: "+$documents[0].text) #### Descripción -The `.euclideanDistance()` function calculates the Euclidean distance between the current 4D vector and the one you passed in the *vector* parameter. Ambos vectores deben tener el mismo tamaño. +La función `.euclideanDistance()` calcula la distancia euclídea entre el vector 4D actual y el que pasó en el parámetro *vector*. Ambos vectores deben tener el mismo tamaño. -This measures the straight-line distance in the vector space. It is recommended for numeric or structured data embeddings, or when using models where proximity in raw space directly correlates with similarity. +Esto mide la distancia de línea recta en el espacio vectorial. Se recomienda para incrustaciones de datos numéricos o estructurados, o cuando se utilizan modelos en los que la proximidad en el espacio bruto se correlaciona directamente con la similitud. **Valor devuelto** - valor devuelto >= 0 -- The lower the returned value is, more similar vectors are. +- Cuanto más bajo sea el valor devuelto, más parecidos son los vectores. #### Ejemplo 1 @@ -283,7 +283,7 @@ ALERT("Nearest monument: "+$places[0].name) #### Descripción -The `.length` property contains the number of vector components. +La propiedad `.length` contiene el número de componentes del vector. ## .toCollection() @@ -291,12 +291,12 @@ The `.length` property contains the numb -| Parámetros | Tipo | | Descripción | -| ---------- | ---------- | --------------------------- | ------------------------------------------------------------- | -| Resultado | Collection | <- | Collection of real numbers representing the vector components | +| Parámetros | Tipo | | Descripción | +| ---------- | ---------- | --------------------------- | ---------------------------------------------------------------------- | +| Resultado | Collection | <- | Colección de números reales que representan los componentes del vector | -The `.toCollection()` function returns the vector components as a collection of reals. +La función `.toCollection()` devuelve los componentes del vector como una colección de reales. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md index 8128fb72ee6d0d..b3a9e0c58f7db5 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md @@ -5,9 +5,9 @@ title: Eventos ORDA
Historia -| Lanzamiento | Modificaciones | -| ----------- | -------------- | -| 20 R10 | Añadidos | +| Lanzamiento | Modificaciones | +| ----------- | ------------------- | +| 20 R10 | touched event added |
@@ -37,11 +37,11 @@ You can also define the same event at both attribute and entity levels. The attr Normalmente, los eventos ORDA se ejecutan en el servidor. -In client/server configuration however, the `touched()` event function can be executed on the **server or the client**, depending on the use of [`local`](../ORDA/ordaClasses.md#local-functions) keyword. A specific implementation on the client side allows the triggering of the event on the client. +In client/server configuration however, the `touched()` event function can be executed on the **server or the client**, depending on the use of [`local`](./ordaClasses.md#local-functions) keyword. A specific implementation on the client side allows the triggering of the event on the client. :::note -ORDA [`constructor()`](../ORDA/ordaClasses.md#class-constructor) functions are always executed on the client. +ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always executed on the client. ::: @@ -93,16 +93,12 @@ This event is triggered each time a value is modified in the entity. This event is triggered as soon as the 4D Server / 4D engine can detect a modification of attribute value which can be due to the following actions: - in **client/server with the [`local` keyword](../ORDA/ordaClasses.md#local-functions)** or in **4D single-user**: - - el usuario define un valor en un formulario 4D, - - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). + - el usuario define un valor en un formulario 4D, + - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). - in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). - in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. - with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) -:::note - -::: - The function receives an [*event* object](#event-parameter) as parameter. If this event [throws](../commands-legacy/throw.md) an error, it will not stop the undergoing action. @@ -154,6 +150,72 @@ Function event touched arrivalDate($event : Object) ``` +#### Example 3 (diagram): Client/server with the `local` keyword: + +```mermaid + +sequenceDiagram + + Client->>+Server: $people:=ds.People.all().first() + + Client->>+Client: $people.lastname:="Brown" + Note over Client: local Function event touched lastname($event : Object)
This.lastname:=Uppercase(This.lastname) + +Note over Client:$people.lastname is uppercased + + Client->>+Server: $people.apply() + + Note over Server: The $people entity is received with the lastname attribute uppercased + +``` + +#### Example 4 (diagram): Client/server without the `local` keyword + +```mermaid + +sequenceDiagram + + Client->>+Server: $people:=ds.People.all().first() + + Client->>+Client: $people.lastname:="Brown" + + Note over Client:$people.lastname is not uppercased + + Client->>+Server: $people.apply() + + Note over Server: Function event touched lastname($event : Object)
This.lastname:=Uppercase(This.lastname) + + Server-->>-Client: The $people entity is updated + + Note over Client:$people.lastname is uppercased + + +``` + +#### Ejemplo 5 (diagrama): Aplicación Qodly + +```mermaid + +sequenceDiagram + +Qodly page->>+ Server: Get an entity into the People Qodly source + +Qodly page->>+Qodly page: The user updates People.lastname + +Note over Qodly page: The People Qodly source lastname attribute is not uppercased + +Qodly page->>+ Server: Function call People.apply() + +Note over Server: Function event touched lastname($event : Object)
This.lastname:=Uppercase(This.lastname) + +Server-->>-Qodly page: The People Qodly source is updated +Note over Qodly page: The People Qodly source lastname attribute is uppercased + + +``` + + + diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md index 5c6791c05f9f74..218d3c746df949 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md @@ -355,7 +355,7 @@ Dado que funciones como [`dataClass.fromCollection()`](../API/DataClassClass.md# ::: -#### Ejemplo +#### Ejemplo 1 ```4d @@ -367,6 +367,83 @@ Class constructor() ``` +#### Ejemplo 2 (diagrama): cliente/servidor + +```mermaid + +sequenceDiagram + +Client->>+Client: Form.product:=ds.Products.new() + +Note over Client: Class constructor
This.creationDate:=Current date()
This.comment:="Automatic comment" + +Note over Client: Form.product.creationDate is "06/17/25"
Form.product.comment is "Automatic comment" + +Client->>+Server: Form.product.save() + +Server-->>-Client: Success + + +``` + +#### Ejemplo 3 (diagrama): Qodly - Acción estándar + +```mermaid + +sequenceDiagram + + Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source) + + Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source + + Note over Server: Class constructor
This.creationDate:=Current date()
This.comment:="Automatic comment" + + Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled + + Note over Qodly page: product.creationDate is "06/17/25"
and product.comment is "Automatic comment" + +``` + +#### Example 4 (diagram): Qodly - Standard action and update value on the newly created entity + +```mermaid + +sequenceDiagram + +Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source) + +Qodly page->>+ Qodly page: Update product comment with "Front end comment" + +Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source + +Note over Server: Class constructor
This.creationDate:=Current date()
This.comment:="Automatic comment" + +Note over Server: The comment attribute is set with "Front end comment" + +Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled + +Note over Qodly page: product.creationDate is "06/17/25"
and product.comment is "Front end comment" + +``` + +#### Example 5 (diagram): Qodly - Entity instanciated in a function + +```mermaid + +sequenceDiagram + +Qodly page->>+Server: product Qodly source := Function call Products.createNew() + +Note over Server: CreateNew() function on the Products class
return This.new() + +Note over Server: Class constructor
This.creationDate:=Current date()
This.comment:="Automatic comment" + +Server-->>-Qodly page: The product entity creationDate and comment attributes are filled + +Note over Qodly page: product.creationDate is "06/17/25"
and product.comment is "Automatic comment" + +``` + ## Atributos calculados ### Generalidades diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md index dcb4cb4da8bf23..6c5d48722696dc 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md @@ -76,7 +76,7 @@ URL patterns can be given as **prefixes** or using **regular expressions**. Ej: `"pattern": "docs"` o `"pattern": "docs/invoices"` - To declare a regular expression pattern, use the "regexPattern" property name in the HTTPHandlers.json file. Los modelos de expresiones regulares se manejan directamente. - Ex: `"regexPattern" : "/docs/.+/index\.html"` + Ej: `"regexPattern" : "/docs/.+/index\.html"` "Pattern" and "regexPattern" properties cannot be used in the same handler definition (in this case, only the "regexPattern" property is taken into account). diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/form-event-code.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/form-event-code.md index c87e08a1e75f6a..81fa2aadfd2d03 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/form-event-code.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/form-event-code.md @@ -300,7 +300,7 @@ En este ejemplo, el evento formulario [`On Scroll`](../Events/onScroll.md) nos p  End case ``` -Result: https://www.youtube.com/watch?v=YIRfsW1BmHE +Resultado: https://www.youtube.com/watch?v=YIRfsW1BmHE ## Ejemplo 13 diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/print-form.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/print-form.md index 52543485d5adb4..1b8d5d973a23d6 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/print-form.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/print-form.md @@ -8,28 +8,28 @@ displayed_sidebar: docs -| Parámetros | Tipo | | Descripción | -| ---------- | ------------ | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| aTable | Tabla | → | Table owning the form, or Default table, if omitted | -| form | Text, Object | → | Name (string) of the form, or a POSIX path (string) to a .json file describing the form, or an object describing the form to print | -| formData | Object | → | Datos a asociar al formulario | -| areaStart | Integer | → | Marcador de impresión, o Área inicial (si se especifica areaEnd) | -| areaEnd | Integer | → | Área final (si se especifica areaStart) | -| Resultado | Integer | ← | Altura de la sección impresa | +| Parámetros | Tipo | | Descripción | +| ---------- | ------------ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| aTable | Tabla | → | Tabla del formulario, o tabla por defecto, si se omite | +| form | Text, Object | → | Nombre (cadena) del formulario, o ruta POSIX (cadena) a un archivo .json que describa el formulario, o un objeto que describa el formulario a imprimir | +| formData | Object | → | Datos a asociar al formulario | +| areaStart | Integer | → | Marcador de impresión, o área de inicio (si se especifica areaEnd) | +| areaEnd | Integer | → | Área final (si se especifica areaStart) | +| Resultado | Integer | ← | Altura de la sección impresa | ## Descripción -The **Print form** command simply prints *form* with the current values of fields and variables of *aTable*. It is usually used to print very complex reports that require complete control over the printing process. **Print form** does not do any record processing, break processing or page breaks. Estas operaciones son responsabilidad suya. **Print form*** imprime campos y variables solo en un marco de tamaño fijo. +El comando **Print form** simplemente imprime *form* con los valores actuales de los campos y variables de la tabla *aTable*. Suele utilizarse para imprimir informes muy complejos que requieren un control total del proceso de impresión. **Print form** no realiza ningún procesamiento de registros, ni las rupturas, ni de saltos de página. Estas operaciones son responsabilidad suya. **Print form*** imprime campos y variables solo en un marco de tamaño fijo. En el parámetro *form*, puede pasar: - el nombre de un formulario, o -- the path (in POSIX syntax) to a valid .json file containing a description of the form to use (see *Form file path*), or +- la ruta (en sintaxis POSIX) de un archivo .json válido que contenga una descripción del formulario a utilizar (ver *Ruta de acceso al archivo de formulario*), o - un objeto que contiene la descripción del formulario. -Since **Print form** does not issue a page break after printing the form, it is easy to combine different forms on the same page. Thus, **Print form** is perfect for complex printing tasks that involve different tables and different forms. Para forzar un salto de página entre formularios, utilice el comando [PAGE BREAK](../commands-legacy/page-break.md). Para transferir la impresión a la página siguiente de un formulario cuya altura es superior al espacio disponible, invoque el comando [CANCEL](../commands-legacy/cancel.md) antes del comando [PAGE BREAK](../commands-legacy/page-break.md). +Como **Print form** no genera un salto de página después de imprimir el formulario, es fácil combinar diferentes formularios en la misma página. Así, **Print form** es perfecto para tareas de impresión complejas que implican diferentes tablas y diferentes formularios. Para forzar un salto de página entre formularios, utilice el comando [PAGE BREAK](../commands-legacy/page-break.md). Para transferir la impresión a la página siguiente de un formulario cuya altura es superior al espacio disponible, invoque el comando [CANCEL](../commands-legacy/cancel.md) antes del comando [PAGE BREAK](../commands-legacy/page-break.md). Se pueden utilizar tres sintaxis diferentes: @@ -41,7 +41,7 @@ Sintaxis:  height:=Print form(myTable;myForm) ``` -In this case, **Print form** only prints the Detail area (the area between the Header line and the Detail line) of the form. +En este caso, **Print form** sólo imprime el área de detalle del formulario (el área entre la línea de encabezado y la línea de detalle). - **Impresión de área de formulario** @@ -51,7 +51,7 @@ Sintaxis:  height:=Print form(myTable;myForm;marker) ``` -In this case, the command will print the section designated by the *marker*. Pass one of the constants of the *Form Area* theme in the marker parameter: +En este caso, el comando imprimirá la sección designada por el *marker*. Pase una de las constantes del tema *Form Area* en el parámetro marcador: | Constante | Tipo | Valor | | ------------- | ------- | ----- | @@ -87,7 +87,7 @@ Sintaxis:  height:=Print form(myTable;myForm;areaStart;areaEnd) ``` -In this case, the command will print the section included between the *areaStart* and *areaEnd* parameters. Los valores introducidos deben expresarse en píxeles. +En este caso, el comando imprimirá la sección incluida entre los parámetros *areaStart* y *areaEnd*. Los valores introducidos deben expresarse en píxeles. **formData** @@ -97,31 +97,31 @@ Para obtener información detallada sobre el objeto de datos del formulario, con **Valor devuelto** -The value returned by **Print form** indicates the height of the printable area. Este valor será tomado en cuenta automáticamente por el comando [Get printed height](../commands-legacy/get-printed-height.md). +El valor devuelto por **Print form** indica la altura del área de impresión. Este valor será tomado en cuenta automáticamente por el comando [Get printed height](../commands-legacy/get-printed-height.md). -Las cajas de diálogo de la impresora no aparecen cuando se utiliza **Print form**. The report does not use the print settings that were assigned to the form in the Design environment. There are two ways to specify the print settings before issuing a series of calls to **Print form**: +Las cajas de diálogo de la impresora no aparecen cuando se utiliza **Print form**. El informe no utiliza la configuración de impresión definida en el modo Diseño para el formulario. Hay dos formas de especificar los parámetros de impresión antes de realizar una serie de llamadas a **Print form**: -- Llamar a [PRINT SETTINGS](../commands-legacy/print-settings.md). In this case, you let the user choose the settings. -- Llame a [SET PRINT OPTION](../commands-legacy/set-print-option.md) y [GET PRINT OPTION](../commands-legacy/get-print-option.md). In this case, print settings are specified programmatically. +- Llamar a [PRINT SETTINGS](../commands-legacy/print-settings.md). En este caso, deja que el usuario elija la configuración. +- Llame a [SET PRINT OPTION](../commands-legacy/set-print-option.md) y [GET PRINT OPTION](../commands-legacy/get-print-option.md). En este caso, los parámetros de impresión se especifican por programación. -**Print form** crea cada página impresa en la memoria. Cada página se imprime cuando la página en memoria está llena o cuando se llama a [PAGE BREAK](../commands-legacy/page-break.md). Para asegurar la impresión de la última página después de cualquier uso de **Print form**, debe concluir con el comando [PAGE BREAK](../commands-legacy/page-break.md) (excepto en el contexto de un [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), ver nota). Otherwise, if the last page is not full, it stays in memory and is not printed. +**Print form** crea cada página impresa en la memoria. Cada página se imprime cuando la página en memoria está llena o cuando se llama a [PAGE BREAK](../commands-legacy/page-break.md). Para asegurar la impresión de la última página después de cualquier uso de **Print form**, debe concluir con el comando [PAGE BREAK](../commands-legacy/page-break.md) (excepto en el contexto de un [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), ver nota). En caso contrario, si la última página no está llena, permanece en memoria y no se imprime. -**Warning:** If the command is called in the context of a printing job opened with [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), you must NOT call [PAGE BREAK](../commands-legacy/page-break.md) for the last page because it is automatically printed by the [CLOSE PRINTING JOB](../commands-legacy/close-printing-job.md) command. Si llama a [PAGE BREAK](../commands-legacy/page-break.md) en este caso, se imprime una página en blanco. +**Atención:** si se llama al comando en el contexto de un trabajo de impresión abierto con [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), NO se debe llamar a [PAGE BREAK](../commands-legacy/page-break.md) para la última página porque se imprime automáticamente con el comando [CLOSE PRINTING JOB](../commands-legacy/close-printing-job.md). Si llama a [PAGE BREAK](../commands-legacy/page-break.md) en este caso, se imprime una página en blanco. -This command prints external areas and objects (for example, 4D Write or 4D View areas). El área se reinicializa cada vez que se ejecuta el comando. +Este comando imprime áreas y objetos externos (por ejemplo, áreas 4D Write o 4D View). El área se reinicializa cada vez que se ejecuta el comando. -**Warning:** Subforms are not printed with **Print form**. Para imprimir sólo un formulario con dichos objetos, utilice [PRINT RECORD](../commands-legacy/print-record.md) en su lugar. +**Atención:** los subformularios no se imprimen con **Print form**. Para imprimir sólo un formulario con dichos objetos, utilice [PRINT RECORD](../commands-legacy/print-record.md) en su lugar. -**Print form** genera sólo un [evento [`On Printing Detail`](../Events/onPrintingDetail.md) para el método formulario. +**Print form** genera sólo un [evento `On Printing Detail`](../Events/onPrintingDetail.md) para el método formulario. -**4D Server:** This command can be executed on 4D Server within the framework of a stored procedure. En este contexto: +**4D Server:** este comando puede ejecutarse en 4D Server en el marco de un procedimiento almacenado. En este contexto: -- Make sure that no dialog box appears on the server machine (except for a specific requirement). -- In the case of a problem concerning the printer (out of paper, printer disconnected, etc.), no error message is generated. +- Asegúrese de que no aparezca ningún cuadro de diálogo en el equipo servidor (salvo que se trate de un requisito específico). +- En el caso de un problema relacionado con la impresora (falta de papel, impresora desconectada, etc.), no se genera ningún mensaje de error. ## Ejemplo 1 -El siguiente ejemplo funciona como lo haría un comando [PRINT SELECTION](../commands-legacy/print-selection.md). However, the report uses one of two different forms, depending on whether the record is for a check or a deposit: +El siguiente ejemplo funciona como lo haría un comando [PRINT SELECTION](../commands-legacy/print-selection.md). Sin embargo, el informe utiliza una de dos formas diferentes, dependiendo de si el registro corresponde a un cheque o a un ingreso: ```4d  QUERY([Register]) // Seleccionar los registros @@ -150,7 +150,7 @@ Consulte el ejemplo del comando [SET PRINT MARKER](../commands-legacy/set-print- ## Ejemplo 3 -This form is used as dialog, then printed with modifications: +Este formulario se utiliza como diálogo y luego se imprime con modificaciones: ![](../assets/en/commands/pict6264975.en.png) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md index b3001faa332972..3dd4ef7516eba8 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md @@ -72,7 +72,7 @@ Lea [**Novedades en 4D 20 R7**](https://blog.4d.com/en-whats-new-in-4d-20-R7/), - Lenguaje 4D: - Nuevos comandos: [Process info](../commands/process-info.md), [Session info](../commands/session-info.md), [SET WINDOW DOCUMENT ICON](../commands/set-window-document-icon.md) - Comandos modificados: [Process activity](../commands/process-activity.md), [Process number](../commands/process-number.md) - - Deprecated commands (replacement): `GET LAST ERROR STACK` ([Last errors](../commands/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) and [#DECLARE/Function](../Concepts/parameters.md#declaring-parameters) declarations). Deprecated commands are prefixed with "\*O\*". + - Deprecated commands (replacement): `GET LAST ERROR STACK` ([Last errors](../commands-legacy/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) and [#DECLARE/Function](../Concepts/parameters.md#declaring-parameters) declarations). Deprecated commands are prefixed with "\*O\*". - 4D Write Pro: - Nuevo comando: [WP DELETE SECTION](../WritePro/commands/wp-delete-section.md) - Comandos modificados: [WP DELETE SUBSECTION](../WritePro/commands/wp-delete-subsection.md) y [WP RESET ATTRIBUTES](../WritePro/commands/wp-reset-attributes.md) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/WebServer/http-request-handler.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/WebServer/http-request-handler.md index dcb4cb4da8bf23..6c5d48722696dc 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/WebServer/http-request-handler.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/WebServer/http-request-handler.md @@ -76,7 +76,7 @@ URL patterns can be given as **prefixes** or using **regular expressions**. Ej: `"pattern": "docs"` o `"pattern": "docs/invoices"` - To declare a regular expression pattern, use the "regexPattern" property name in the HTTPHandlers.json file. Los modelos de expresiones regulares se manejan directamente. - Ex: `"regexPattern" : "/docs/.+/index\.html"` + Ej: `"regexPattern" : "/docs/.+/index\.html"` "Pattern" and "regexPattern" properties cannot be used in the same handler definition (in this case, only the "regexPattern" property is taken into account). diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/form-event-code.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/form-event-code.md index c87e08a1e75f6a..81fa2aadfd2d03 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/form-event-code.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/form-event-code.md @@ -300,7 +300,7 @@ En este ejemplo, el evento formulario [`On Scroll`](../Events/onScroll.md) nos p  End case ``` -Result: https://www.youtube.com/watch?v=YIRfsW1BmHE +Resultado: https://www.youtube.com/watch?v=YIRfsW1BmHE ## Ejemplo 13 diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/print-form.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/print-form.md index 52543485d5adb4..1b8d5d973a23d6 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/print-form.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/print-form.md @@ -8,28 +8,28 @@ displayed_sidebar: docs -| Parámetros | Tipo | | Descripción | -| ---------- | ------------ | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| aTable | Tabla | → | Table owning the form, or Default table, if omitted | -| form | Text, Object | → | Name (string) of the form, or a POSIX path (string) to a .json file describing the form, or an object describing the form to print | -| formData | Object | → | Datos a asociar al formulario | -| areaStart | Integer | → | Marcador de impresión, o Área inicial (si se especifica areaEnd) | -| areaEnd | Integer | → | Área final (si se especifica areaStart) | -| Resultado | Integer | ← | Altura de la sección impresa | +| Parámetros | Tipo | | Descripción | +| ---------- | ------------ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| aTable | Tabla | → | Tabla del formulario, o tabla por defecto, si se omite | +| form | Text, Object | → | Nombre (cadena) del formulario, o ruta POSIX (cadena) a un archivo .json que describa el formulario, o un objeto que describa el formulario a imprimir | +| formData | Object | → | Datos a asociar al formulario | +| areaStart | Integer | → | Marcador de impresión, o área de inicio (si se especifica areaEnd) | +| areaEnd | Integer | → | Área final (si se especifica areaStart) | +| Resultado | Integer | ← | Altura de la sección impresa | ## Descripción -The **Print form** command simply prints *form* with the current values of fields and variables of *aTable*. It is usually used to print very complex reports that require complete control over the printing process. **Print form** does not do any record processing, break processing or page breaks. Estas operaciones son responsabilidad suya. **Print form*** imprime campos y variables solo en un marco de tamaño fijo. +El comando **Print form** simplemente imprime *form* con los valores actuales de los campos y variables de la tabla *aTable*. Suele utilizarse para imprimir informes muy complejos que requieren un control total del proceso de impresión. **Print form** no realiza ningún procesamiento de registros, ni las rupturas, ni de saltos de página. Estas operaciones son responsabilidad suya. **Print form*** imprime campos y variables solo en un marco de tamaño fijo. En el parámetro *form*, puede pasar: - el nombre de un formulario, o -- the path (in POSIX syntax) to a valid .json file containing a description of the form to use (see *Form file path*), or +- la ruta (en sintaxis POSIX) de un archivo .json válido que contenga una descripción del formulario a utilizar (ver *Ruta de acceso al archivo de formulario*), o - un objeto que contiene la descripción del formulario. -Since **Print form** does not issue a page break after printing the form, it is easy to combine different forms on the same page. Thus, **Print form** is perfect for complex printing tasks that involve different tables and different forms. Para forzar un salto de página entre formularios, utilice el comando [PAGE BREAK](../commands-legacy/page-break.md). Para transferir la impresión a la página siguiente de un formulario cuya altura es superior al espacio disponible, invoque el comando [CANCEL](../commands-legacy/cancel.md) antes del comando [PAGE BREAK](../commands-legacy/page-break.md). +Como **Print form** no genera un salto de página después de imprimir el formulario, es fácil combinar diferentes formularios en la misma página. Así, **Print form** es perfecto para tareas de impresión complejas que implican diferentes tablas y diferentes formularios. Para forzar un salto de página entre formularios, utilice el comando [PAGE BREAK](../commands-legacy/page-break.md). Para transferir la impresión a la página siguiente de un formulario cuya altura es superior al espacio disponible, invoque el comando [CANCEL](../commands-legacy/cancel.md) antes del comando [PAGE BREAK](../commands-legacy/page-break.md). Se pueden utilizar tres sintaxis diferentes: @@ -41,7 +41,7 @@ Sintaxis:  height:=Print form(myTable;myForm) ``` -In this case, **Print form** only prints the Detail area (the area between the Header line and the Detail line) of the form. +En este caso, **Print form** sólo imprime el área de detalle del formulario (el área entre la línea de encabezado y la línea de detalle). - **Impresión de área de formulario** @@ -51,7 +51,7 @@ Sintaxis:  height:=Print form(myTable;myForm;marker) ``` -In this case, the command will print the section designated by the *marker*. Pass one of the constants of the *Form Area* theme in the marker parameter: +En este caso, el comando imprimirá la sección designada por el *marker*. Pase una de las constantes del tema *Form Area* en el parámetro marcador: | Constante | Tipo | Valor | | ------------- | ------- | ----- | @@ -87,7 +87,7 @@ Sintaxis:  height:=Print form(myTable;myForm;areaStart;areaEnd) ``` -In this case, the command will print the section included between the *areaStart* and *areaEnd* parameters. Los valores introducidos deben expresarse en píxeles. +En este caso, el comando imprimirá la sección incluida entre los parámetros *areaStart* y *areaEnd*. Los valores introducidos deben expresarse en píxeles. **formData** @@ -97,31 +97,31 @@ Para obtener información detallada sobre el objeto de datos del formulario, con **Valor devuelto** -The value returned by **Print form** indicates the height of the printable area. Este valor será tomado en cuenta automáticamente por el comando [Get printed height](../commands-legacy/get-printed-height.md). +El valor devuelto por **Print form** indica la altura del área de impresión. Este valor será tomado en cuenta automáticamente por el comando [Get printed height](../commands-legacy/get-printed-height.md). -Las cajas de diálogo de la impresora no aparecen cuando se utiliza **Print form**. The report does not use the print settings that were assigned to the form in the Design environment. There are two ways to specify the print settings before issuing a series of calls to **Print form**: +Las cajas de diálogo de la impresora no aparecen cuando se utiliza **Print form**. El informe no utiliza la configuración de impresión definida en el modo Diseño para el formulario. Hay dos formas de especificar los parámetros de impresión antes de realizar una serie de llamadas a **Print form**: -- Llamar a [PRINT SETTINGS](../commands-legacy/print-settings.md). In this case, you let the user choose the settings. -- Llame a [SET PRINT OPTION](../commands-legacy/set-print-option.md) y [GET PRINT OPTION](../commands-legacy/get-print-option.md). In this case, print settings are specified programmatically. +- Llamar a [PRINT SETTINGS](../commands-legacy/print-settings.md). En este caso, deja que el usuario elija la configuración. +- Llame a [SET PRINT OPTION](../commands-legacy/set-print-option.md) y [GET PRINT OPTION](../commands-legacy/get-print-option.md). En este caso, los parámetros de impresión se especifican por programación. -**Print form** crea cada página impresa en la memoria. Cada página se imprime cuando la página en memoria está llena o cuando se llama a [PAGE BREAK](../commands-legacy/page-break.md). Para asegurar la impresión de la última página después de cualquier uso de **Print form**, debe concluir con el comando [PAGE BREAK](../commands-legacy/page-break.md) (excepto en el contexto de un [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), ver nota). Otherwise, if the last page is not full, it stays in memory and is not printed. +**Print form** crea cada página impresa en la memoria. Cada página se imprime cuando la página en memoria está llena o cuando se llama a [PAGE BREAK](../commands-legacy/page-break.md). Para asegurar la impresión de la última página después de cualquier uso de **Print form**, debe concluir con el comando [PAGE BREAK](../commands-legacy/page-break.md) (excepto en el contexto de un [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), ver nota). En caso contrario, si la última página no está llena, permanece en memoria y no se imprime. -**Warning:** If the command is called in the context of a printing job opened with [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), you must NOT call [PAGE BREAK](../commands-legacy/page-break.md) for the last page because it is automatically printed by the [CLOSE PRINTING JOB](../commands-legacy/close-printing-job.md) command. Si llama a [PAGE BREAK](../commands-legacy/page-break.md) en este caso, se imprime una página en blanco. +**Atención:** si se llama al comando en el contexto de un trabajo de impresión abierto con [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), NO se debe llamar a [PAGE BREAK](../commands-legacy/page-break.md) para la última página porque se imprime automáticamente con el comando [CLOSE PRINTING JOB](../commands-legacy/close-printing-job.md). Si llama a [PAGE BREAK](../commands-legacy/page-break.md) en este caso, se imprime una página en blanco. -This command prints external areas and objects (for example, 4D Write or 4D View areas). El área se reinicializa cada vez que se ejecuta el comando. +Este comando imprime áreas y objetos externos (por ejemplo, áreas 4D Write o 4D View). El área se reinicializa cada vez que se ejecuta el comando. -**Warning:** Subforms are not printed with **Print form**. Para imprimir sólo un formulario con dichos objetos, utilice [PRINT RECORD](../commands-legacy/print-record.md) en su lugar. +**Atención:** los subformularios no se imprimen con **Print form**. Para imprimir sólo un formulario con dichos objetos, utilice [PRINT RECORD](../commands-legacy/print-record.md) en su lugar. -**Print form** genera sólo un [evento [`On Printing Detail`](../Events/onPrintingDetail.md) para el método formulario. +**Print form** genera sólo un [evento `On Printing Detail`](../Events/onPrintingDetail.md) para el método formulario. -**4D Server:** This command can be executed on 4D Server within the framework of a stored procedure. En este contexto: +**4D Server:** este comando puede ejecutarse en 4D Server en el marco de un procedimiento almacenado. En este contexto: -- Make sure that no dialog box appears on the server machine (except for a specific requirement). -- In the case of a problem concerning the printer (out of paper, printer disconnected, etc.), no error message is generated. +- Asegúrese de que no aparezca ningún cuadro de diálogo en el equipo servidor (salvo que se trate de un requisito específico). +- En el caso de un problema relacionado con la impresora (falta de papel, impresora desconectada, etc.), no se genera ningún mensaje de error. ## Ejemplo 1 -El siguiente ejemplo funciona como lo haría un comando [PRINT SELECTION](../commands-legacy/print-selection.md). However, the report uses one of two different forms, depending on whether the record is for a check or a deposit: +El siguiente ejemplo funciona como lo haría un comando [PRINT SELECTION](../commands-legacy/print-selection.md). Sin embargo, el informe utiliza una de dos formas diferentes, dependiendo de si el registro corresponde a un cheque o a un ingreso: ```4d  QUERY([Register]) // Seleccionar los registros @@ -150,7 +150,7 @@ Consulte el ejemplo del comando [SET PRINT MARKER](../commands-legacy/set-print- ## Ejemplo 3 -This form is used as dialog, then printed with modifications: +Este formulario se utiliza como diálogo y luego se imprime con modificaciones: ![](../assets/en/commands/pict6264975.en.png) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Debugging/debugLogFiles.md b/i18n/fr/docusaurus-plugin-content-docs/current/Debugging/debugLogFiles.md index e6e6d7b27e0add..ef229096fa650a 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/Debugging/debugLogFiles.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/Debugging/debugLogFiles.md @@ -3,7 +3,7 @@ id: debugLogFiles title: Fichiers journaux --- -Les applications 4D peuvent générer divers fichiers journaux (ou "logs") qui sont utiles pour le débogage ou l'optimisation de leur exécution. Logs are usually started or stopped using selectors of the [SET DATABASE PARAMETER](../commands-legacy/set-database-parameter.md), [WEB SET OPTION](../commands-legacy/web-set-option.md), or [HTTP SET OPTION](../commands-legacy/http-set-option.md) commands and are stored in the [Logs folder](../Project/architecture.md#logs) of the project. +Les applications 4D peuvent générer divers fichiers journaux (ou "logs") qui sont utiles pour le débogage ou l'optimisation de leur exécution. Les journaux sont généralement lancés ou arrêtés à l'aide des sélecteurs des commandes [SET DATABASE PARAMETER](../commands-legacy/set-database-parameter.md), [WEB SET OPTION](../commands-legacy/web-set-option.md), ou [HTTP SET OPTION](../commands-legacy/http-set-option.md) et sont stockés dans le [dossier Logs](../Project/architecture.md#logs) du projet. Les informations stockées dans les journaux doivent être analysées pour détecter et corriger les problèmes. Cette section fournit une description complète des fichiers journaux suivants : @@ -222,23 +222,23 @@ SET DATABASE PARAMETER(Current process debug log recording;2+4) Les champs suivants sont enregistrés pour chaque évènement : -| Colonne # | Noms des champs | Description | -| --------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 1 | sequence_number | Numéro d'opération séquentiel et unique dans la session de log | -| 2 | time | Date et heure au format ISO 8601 (YYYY-MM-DDThh:mm:ss.mmm) | -| 3 | ProcessID | ID du process | -| 4 | unique_processID | ID unique du process | -| 5 | stack_level | Niveau de stack (pile) | -| 6 | operation_type | Type d'opération enregistrée. This value may be an absolute value:

  1. Command
  2. Method (project method, database method, etc.)
  3. Message (sent by [LOG EVENT](../commands-legacy/log-event.md) command only)
  4. PluginMessage
  5. PluginEvent
  6. PluginCommand
  7. PluginCallback
  8. Task
  9. Member method (method attached to a collection or an object)

When closing a stack level, the `operation_type`, `operation` and `operation_parameters` columns have the same value as the opening stack level logged in the `stack_opening_sequence_number` column. Type d'opération enregistrée. Les valeurs des colonnes 6, 7 et 8 sont répétées dans la ligne du niveau de stack de fermeture. La colonne 10 contient les numéros de séquence d'ouverture du niveau de stack, c'est-à-dire 122 pour la 3e ligne et 121 pour la 4e. | -| 7 | operation | Peut représenter (selon le type d'opération) :
  • un ID de commande de langue (lorsque type=1)
  • un nom de méthode (lorsque type=2)
  • une combinaison de pluginIndex;pluginCommand (lorsque type=4, 5, 6 ou 7). Peut contenir quelque chose comme '3;2'
  • un UUID de task de connexion (lorsque type=8)
  • | -| 8 | operation_parameters | Paramètres passés aux commandes, méthodes ou aux plugins | -| 9 | form_event | Evénement formulaire, le cas échéant ; vide dans les autres cas (par conséquent cette colonne est utilisée lorsque le code est exécuté dans une méthode formulaire ou méthode objet) | -| 10 | stack_opening_sequence_number | Niveaux de fermeture de stacks uniquement : numéro de séquence du niveau d'ouverture de stack correspondant | -| 11 | stack_level_execution_time | Niveaux de fermeture de stacks uniquement : Durée en micro secondes de l'action enregistrée courante (cf. 10e colonne des lignes 123 et 124 dans l'historique ci-dessus) | +| Colonne # | Noms des champs | Description | +| --------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 1 | sequence_number | Numéro d'opération séquentiel et unique dans la session de log | +| 2 | time | Date et heure au format ISO 8601 (YYYY-MM-DDThh:mm:ss.mmm) | +| 3 | ProcessID | ID du process | +| 4 | unique_processID | ID unique du process | +| 5 | stack_level | Niveau de stack (pile) | +| 6 | operation_type | Type d'opération enregistrée. Cette valeur peut être une valeur absolue :

    1. Commande
    2. Méthode (méthode projet, méthode base, etc.)
    3. Message (envoyé par la commande [LOG EVENT](../commands-legacy/log-event.md) uniquement)
    4. PluginMessage
    5. PluginEvent
    6. PluginCommand
    7. PluginCallback
    8. Tâche
    9. Méthode membre (méthode attachée à une collection ou à un objet)

    Lors de la fermeture d'un niveau de pile, les colonnes `operation_type`, `operation` et `operation_parameters` ont la même valeur que le niveau de pile d'ouverture enregistré dans la colonne `stack_opening_sequence_number`. Type d'opération enregistrée. Les valeurs des colonnes 6, 7 et 8 sont répétées dans la ligne du niveau de stack de fermeture. La colonne 10 contient les numéros de séquence d'ouverture du niveau de stack, c'est-à-dire 122 pour la 3e ligne et 121 pour la 4e. | +| 7 | operation | Peut représenter (selon le type d'opération) :
  • un ID de commande de langue (lorsque type=1)
  • un nom de méthode (lorsque type=2)
  • une combinaison de pluginIndex;pluginCommand (lorsque type=4, 5, 6 ou 7). Peut contenir quelque chose comme '3;2'
  • un UUID de task de connexion (lorsque type=8)
  • | +| 8 | operation_parameters | Paramètres passés aux commandes, méthodes ou aux plugins | +| 9 | form_event | Evénement formulaire, le cas échéant ; vide dans les autres cas (par conséquent cette colonne est utilisée lorsque le code est exécuté dans une méthode formulaire ou méthode objet) | +| 10 | stack_opening_sequence_number | Niveaux de fermeture de stacks uniquement : numéro de séquence du niveau d'ouverture de stack correspondant | +| 11 | stack_level_execution_time | Niveaux de fermeture de stacks uniquement : Durée en micro secondes de l'action enregistrée courante (cf. 10e colonne des lignes 123 et 124 dans l'historique ci-dessus) | ## 4DDiagnosticLog.txt -Ce fichier journal enregistre de nombreux événements liés au fonctionnement interne de l'application et est lisible par un humain. You can include custom information in this file using the [LOG EVENT](../commands-legacy/log-event.md) command. +Ce fichier journal enregistre de nombreux événements liés au fonctionnement interne de l'application et est lisible par un humain. Vous pouvez inclure des informations personnalisées dans ce fichier en utilisant la commande [LOG EVENT](../commands-legacy/log-event.md). Pour lancer ce journal : @@ -254,7 +254,7 @@ Les champs suivants sont enregistrés pour chaque évènement : | timestamp | Date et heure au format ISO 8601 (YYYY-MM-DDThh:mm:ss.mmm) | | loggerID | Optionnel | | componentSignature | Optionnel - signature de composant interne | -| messageLevel | Info, Attention, Erreur | +| messageLevel | Trace, Debug, Info, Warning, Error | | message | Description de la saisie de journal | En fonction de l'événement, d'autres champs peuvent également être enregistrés, tels que task, socket, etc. @@ -263,7 +263,7 @@ En fonction de l'événement, d'autres champs peuvent également être enregistr Le fichier *4DDiagnosticLog.txt* peut enregistrer différents niveaux de messages, de `ERROR` (le plus important) à `TRACE` (le moins important). Par défaut, le niveau `INFO` est défini, ce qui signifie que le fichier n'enregistre que les événements importants, y compris les erreurs et les résultats inattendus (voir ci-dessous). -You can select the level of messages using the `Diagnostic log level` selector of the [SET DATABASE PARAMETER](../commands-legacy/set-database-parameter.md) command, depending on your needs. Lorsque vous sélectionnez un niveau, les niveaux supérieurs (qui sont plus importants) sont implicitement sélectionnés également. Les niveaux suivants sont disponibles : +Vous pouvez sélectionner le niveau des messages à l'aide du sélecteur `Diagnostic log level` de la commande [SET DATABASE PARAMETER](../commands-legacy/set-database-parameter.md), en fonction de vos besoins. Lorsque vous sélectionnez un niveau, les niveaux supérieurs (qui sont plus importants) sont implicitement sélectionnés également. Les niveaux suivants sont disponibles : | Constante | Description | Lorsque sélectionné, inclut | | ----------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | @@ -459,11 +459,11 @@ Voici un exemple d'enregistrement ORDA côté serveur : ## 4DTCPUDPLog.txt -This log file records events related to TCP or UDP connections. Ces événements comprennent la transmission de données, les erreurs et les informations sur le cycle de vie de la connexion. This log helps developers monitor and debug network activity within their applications. +Ce fichier journal enregistre les événements liés aux connexions TCP ou UDP. Ces événements comprennent la transmission de données, les erreurs et les informations sur le cycle de vie de la connexion. Ce journal aide les développeurs à surveiller et à déboguer l'activité du réseau dans leurs applications. Pour lancer ce journal : -- Use the `SET DATABASE PARAMETER` command: +- Utilisez la commande `SET DATABASE PARAMETER` : ```4d SET DATABASE PARAMETER(TCPUDP log; 1) @@ -481,18 +481,18 @@ Pour lancer ce journal : Les champs suivants sont enregistrés pour chaque évènement : -| Noms des champs | Type | Description | -| --------------- | --------- | ---------------------------------------------------------------------------------------- | -| time | Date/Time | Date and time of the event in ISO 8601 format | -| localPort | Number | Local port used for the connection | -| peerAddress | Text | IP address of the remote peer | -| peerPort | Number | Port of the remote peer | -| protocol | Text | "TCP" or "UDP" | -| event | Text | The type of event: `open`, `close`, `error`, `send`, `receive`, `listen` | -| size | Number | The amount of data sent or received (in bytes), 0 if not applicable | -| excerpt | Number | First 10 bytes of data in hexadecimal format | -| textExcerpt | Text | First 10 bytes of data in text format | -| comment | Text | Additional information about the event, such as error details or encryption status | +| Noms des champs | Type | Description | +| --------------- | --------- | --------------------------------------------------------------------------------------------------------- | +| time | Date/Time | Date et heure de l'événement au format ISO 8601 | +| localPort | Number | Port local utilisé pour la connexion | +| peerAddress | Text | Adresse IP de la machine distante | +| peerPort | Number | Port de la machine distante | +| protocol | Text | "TCP" ou "UDP" | +| event | Text | Le type d'événement: `open`, `close`, `error`, `send`, `receive`, `listen` | +| size | Number | Quantité de données envoyées ou reçues (en octets), 0 si non applicable | +| excerpt | Number | Les 10 premiers octets des données au format hexadécimal | +| textExcerpt | Text | Les 10 premiers octets des données en format texte | +| comment | Text | Informations supplémentaires sur l'événement, telles que les détails de l'erreur ou l'état du chiffrement | ## Utilisation d'un fichier de configuration de log @@ -671,9 +671,9 @@ Voici un exemple de fichier de configuration de log : :::note -- The "state" property values are described in the corresponding commands: `[`WEB SET OPTION`](../commands-legacy/web-set-option.md) (`Web log recording`), [`HTTP SET OPTION`](../commands-legacy/http-set-option.md) (`HTTP client log`), [`SET DATABASE PARAMETER`](../commands-legacy/set-database-parameter.md) (`Client Web log recording`, `IMAP Log\\\\\\\\`,...). -- For httpDebugLogs, the "level" property corresponds to the `wdl` constant options described in the [`WEB SET OPTION`](../commands-legacy/web-set-option.md) command. -- For diagnosticLogs, the "level" property corresponds to the `Diagnostic log level` constant values described in the [`SET DATABASE PARAMETER`](../commands-legacy/set-database-parameter.md) command. +- Les valeurs de la propriété "state" sont décrites dans les commandes correspondantes : [`WEB SET OPTION`](../commands-legacy/web-set-option.md) (`Web log recording`), [`HTTP SET OPTION`](../commands-legacy/http-set-option.md) (`HTTP client log`), [`SET DATABASE PARAMETER`](../commands-legacy/set-database-parameter.md) (`Client Web log recording`, `IMAP Log`,...). +- Pour httpDebugLogs, la propriété "level" correspond aux options de la constante `wdl` décrites dans la commande [`WEB SET OPTION`](../commands-legacy/web-set-option.md). +- Pour les diagnosticLogs, la propriété "level" correspond aux valeurs de la constante `Diagnostic log level` décrites dans la commande [`SET DATABASE PARAMETER`](../commands-legacy/set-database-parameter.md). ::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Notes/updates.md b/i18n/fr/docusaurus-plugin-content-docs/current/Notes/updates.md index 25435ac08fc5ea..d6129439fa1441 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/Notes/updates.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/Notes/updates.md @@ -15,6 +15,12 @@ Lisez [**Les nouveautés de 4D 21**](https://blog.4d.com/fe-whats-new-in-4d-v21/ - New "trim" commands to remove leading and trailing spaces from a string: [`Trim`](../commands/trim.md), [`Trim start`](../commands/trim-start.md), and [`Trim end`](../commands/trim-end.md). - [`Num`](../commands/num.md) and [`String`](../commands/string.md) commands have been updated to support conversions in different bases (radix). +#### Changements de comportement + +- Web services (SOAP): when [scalable sessions](../WebServer/sessions.md#enabling-web-sessions) are enabled, web services now run in [**preemptive processes**](../Develop/preemptive.md) in compiled mode. Make sure your SOAP code is thread-safe. +- Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. No specific processing is done on these URLs anymore. +- Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). + ## 4D 20 R10 Lisez [**Les nouveautés de 4D 20 R10**](https://blog.4d.com/fe-whats-new-in-4d-20-R10/), l'article de blog qui liste toutes les nouvelles fonctionnalités et améliorations de 4D 20 R10. diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/orda-events.md b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/orda-events.md index 3976f919293e5c..9e96d914b6b888 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/orda-events.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/orda-events.md @@ -5,9 +5,9 @@ title: ORDA Events
    Historique -| Release | Modifications | -| ------- | ------------- | -| 20 R10 | Ajout | +| Release | Modifications | +| ------- | ------------------- | +| 20 R10 | touched event added |
    @@ -93,16 +93,12 @@ This event is triggered each time a value is modified in the entity. This event is triggered as soon as the 4D Server / 4D engine can detect a modification of attribute value which can be due to the following actions: - in **client/server with the [`local` keyword](../ORDA/ordaClasses.md#local-functions)** or in **4D single-user**: - - the user sets a value on a 4D form, - - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). + - the user sets a value on a 4D form, + - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). - in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). - in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. - with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) -:::note - -::: - The function receives an [*event* object](#event-parameter) as parameter. If this event [throws](../commands-legacy/throw.md) an error, it will not stop the undergoing action. @@ -154,6 +150,72 @@ Function event touched arrivalDate($event : Object) ``` +#### Example 3 (diagram): Client/server with the `local` keyword: + +```mermaid + +sequenceDiagram + + Client->>+Server: $people:=ds.People.all().first() + + Client->>+Client: $people.lastname:="Brown" + Note over Client: local Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + +Note over Client:$people.lastname is uppercased + + Client->>+Server: $people.apply() + + Note over Server: The $people entity is received with the lastname attribute uppercased + +``` + +#### Example 4 (diagram): Client/server without the `local` keyword + +```mermaid + +sequenceDiagram + + Client->>+Server: $people:=ds.People.all().first() + + Client->>+Client: $people.lastname:="Brown" + + Note over Client:$people.lastname is not uppercased + + Client->>+Server: $people.apply() + + Note over Server: Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + + Server-->>-Client: The $people entity is updated + + Note over Client:$people.lastname is uppercased + + +``` + +#### Example 5 (diagram): Qodly application + +```mermaid + +sequenceDiagram + +Qodly page->>+ Server: Get an entity into the People Qodly source + +Qodly page->>+Qodly page: The user updates People.lastname + +Note over Qodly page: The People Qodly source lastname attribute is not uppercased + +Qodly page->>+ Server: Function call People.apply() + +Note over Server: Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + +Server-->>-Qodly page: The People Qodly source is updated +Note over Qodly page: The People Qodly source lastname attribute is uppercased + + +``` + + + diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md index 007622755e11ab..f0c436ba844653 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md @@ -355,7 +355,7 @@ Since functions such as [`dataClass.fromCollection()`](../API/DataClassClass.md# ::: -#### Exemple +#### Exemple 1 ```4d @@ -367,6 +367,83 @@ Class constructor() ``` +#### Example 2 (diagram): Client/server + +```mermaid + +sequenceDiagram + +Client->>+Client: Form.product:=ds.Products.new() + +Note over Client: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Note over Client: Form.product.creationDate is "06/17/25"
    Form.product.comment is "Automatic comment" + +Client->>+Server: Form.product.save() + +Server-->>-Client: Success + + +``` + +#### Example 3 (diagram): Qodly - Standard action + +```mermaid + +sequenceDiagram + + Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source) + + Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source + + Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + + Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled + + Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Automatic comment" + +``` + +#### Example 4 (diagram): Qodly - Standard action and update value on the newly created entity + +```mermaid + +sequenceDiagram + +Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source) + +Qodly page->>+ Qodly page: Update product comment with "Front end comment" + +Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source + +Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Note over Server: The comment attribute is set with "Front end comment" + +Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled + +Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Front end comment" + +``` + +#### Example 5 (diagram): Qodly - Entity instanciated in a function + +```mermaid + +sequenceDiagram + +Qodly page->>+Server: product Qodly source := Function call Products.createNew() + +Note over Server: CreateNew() function on the Products class
    return This.new() + +Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Server-->>-Qodly page: The product entity creationDate and comment attributes are filled + +Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Automatic comment" + +``` + ## Attributs calculés ### Vue d’ensemble diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/REST/$queryplan.md b/i18n/fr/docusaurus-plugin-content-docs/current/REST/$queryplan.md index 0c93508473cdcd..f739c84de154cc 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/REST/$queryplan.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/REST/$queryplan.md @@ -14,7 +14,7 @@ $queryplan retourne le plan de la requête telle qu'il a été exécuté par 4D | item | Text | Requête exécutée | | subquery | Tableau | S'il existe une sous-requête, un objet supplémentaire contenant une propriété d'élément (comme celle indiquée ci-dessus) | -Pour plus d'informations sur les plans de requête, reportez-vous à [queryPlan ete queryPath](genInfo.md#querypath-and-queryplan). +Pour plus d'informations sur les plans de requête, reportez-vous à [queryPlan et queryPath](genInfo.md#querypath-and-queryplan). ## Exemple diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/REST/genInfo.md b/i18n/fr/docusaurus-plugin-content-docs/current/REST/genInfo.md index b42b3183456e7b..70b98cab741ec8 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/REST/genInfo.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/REST/genInfo.md @@ -10,7 +10,7 @@ Vous pouvez obtenir plusieurs informations du serveur REST : ## Catalogue -Use the [`$catalog`]($catalog.md), [`$catalog/\{dataClass\}`]($catalog.md#catalogdataclass), or [`$catalog/$all`]($catalog.md#catalogall) parameters to get the list of [exposed dataclasses and their attributes](configuration.md#exposing-tables-and-fields). +Utilisez les paramètres [`$catalog`]($catalog.md), [`$catalog/\{dataClass\}`]($catalog.md#catalogdataclass) ou [`$catalog/$all`]($catalog.md#catalogall) pour obtenir la liste des [dataclass exposées et de leurs attributs](configuration.md#exposing-tables-and-fields). Pour obtenir la collection de toutes les dataclass exposées avec leurs attributs : @@ -22,7 +22,7 @@ Use the [`$info`]($info.md) parameter to get information about the entity select ## queryPath et queryPlan -Les sélections d'entité générées par les requêtes peuvent avoir les deux propriétés suivantes : `queryPlan` et `queryPath`. To calculate and return these properties, you just need to add [`$queryPlan`]($queryplan.md) and/or [`$queryPath`]($querypath.md) in the REST request. +Les entity selections générées par via des recherches peuvent avoir les deux propriétés suivantes : `queryPlan` et `queryPath`. Pour calculer et renvoyer ces propriétés, il suffit d'ajouter [`$queryPlan`]($queryplan.md) et/ou [`$queryPath`]($querypath.md) dans la requête REST. Par exemple : diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/authentication.md b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/authentication.md index d53c950b59f24c..d3ee9349555b40 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/authentication.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/authentication.md @@ -76,7 +76,7 @@ La méthode base `On Web Authentication` est automatiquement appelée lorsqu'une La méthode base `On Web Authentication` est donc appelée : - lorsque le serveur web reçoit une URL demandant une ressource qui n'existe pas -- lorsque le serveur web reçoit une URL commençant par `4DACTION/`, `4DCGI/`... +- when the web server receives a URL beginning with `4DACTION/` - when the web server receives a root access URL and no home page has been set in the Settings or by means of the [`WEB SET HOME PAGE`](../commands-legacy/web-set-home-page.md) command - lorsque le serveur web traite une balise exécutant du code (par exemple `4DSCRIPT`) dans une page semi-dynamique. diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md index 1d93c4e1ee1143..73ac6a8fb77782 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md @@ -26,10 +26,11 @@ Le tableau suivant indique si l'utilisation du mode préemptif pour les process - Serveur REST : gère les [fonctions de classe du modèle de données ORDA](../REST/ClassFunctions.md) - Serveur Web : gère les [modèles Web](templates.md), [4DACTION et les méthodes base](httpRequests.md) - Serveur de services Web : gère les requêtes SOAP -- ***web setting*** signifie que le mode préemptif dépend d'une valeur de réglage : - - when [**Scalable sessions**](sessions.md#enabling-web-sessions) option is selected, the preemptive mode is automatically used for web processes. - - sinon, l'option [**Utiliser des process préemptifs**](webServerConfig.md#use-preemptive-processes) est prise en compte. - - en ce qui concerne les process de service Web (serveur ou client), le mode préemptif est pris en charge au niveau de la méthode. You just have to select "Can be run in preemptive processes" property for published SOAP server methods (see [Publishing a Web Service with 4D](https://doc.4d.com/4Dv20/4D/20.2/Publishing-a-Web-Service-with-4D.300-6750334.en.html)) or proxy client methods (see [Subscribing to a Web Service in 4D](https://doc.4d.com/4Dv20/4D/20.2/Subscribing-to-a-Web-Service-in-4D.300-6750336.en.html)) and make sure they are confirmed thread-safe by the compiler. +- ***web setting*** means that the preemptive mode depends on the [**scalable sessions**](sessions.md#enabling-web-sessions) status: + - if scalable sessions are enabled, the preemptive mode is automatically used for web and web service processes. + - if scalable sessions are not enabled: + - for web processes, the [**Use preemptive processes**](webServerConfig.md#use-preemptive-processes) option is taken into account. + - for web service processes (server or client), preemptive mode is supported at method level. ## Ecrire du code serveur Web thread-safe @@ -51,7 +52,7 @@ Tout le code 4D exécuté par le serveur Web doit être thread-safe si vous souh - [Fonctions de classe du modèle de données ORDA](../REST/ClassFunctions.md) appelées via REST -Pour chacune de ces méthodes ou parties de code, le compilateur vérifiera si les règles thread-safe sont respectées, et retournera une erreur en cas de problème. Pour plus d'informations à propos des règles thread-safe, veuillez vous référer au paragraphe *Ecrire une méthode thread-safe* dans le chapitre *Process* du manuel de [Langage 4D](https://doc.4d.com). +For each of these methods and code parts, the compiler will check if the [thread-safety rules are respected](../Develop/preemptive.md#writing-a-thread-safe-method), and will return errors in case of issues. ## Code web 4D thread-safe @@ -73,7 +74,6 @@ Bien sûr, le code exécuté par ces méthodes doit aussi être thread-safe. Les URLs Web Server ci-dessous sont thread-safe et peuvent être utilisées en mode préemptif : - *4daction/* (la méthode projet appelée doit également être à thread-safe) -- *4dcgi/* (les méthodes base appelées doivent également être thread-safe) - *4dwebtest/* - *4dblank/* - *4dstats/* diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/sessions.md b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/sessions.md index d23579728705a2..2be4711c247e39 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/sessions.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/sessions.md @@ -16,7 +16,7 @@ Les sessions Web permettent de : Les sessions Web sont utilisées par : -- les [applications web](gettingStarted.md) qui envoient des requêtes http, +- [Web applications](gettingStarted.md) sending http requests (including [SOAP Web services](../commands/theme/Web_Services_Server.md) and [/4DACTION](../WebServer/httpRequests.md#4daction) requests), - les appels à l'[API REST](../REST/authUsers.md), qui sont effectués par les [datastores distants](../ORDA/remoteDatastores.md) et les [pages Qodly](qodly-studio.md). ## Activation des sessions web diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md index 3232dded835bdd..1ef4d8fc63371e 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md @@ -600,10 +600,6 @@ Cette option active le mode préemptif pour le code du serveur web de votre appl Les paramètres suivants sont toujours pris en charge mais reposent sur des fonctionnalités ou des technologies obsolètes. Il est généralement recommandé de conserver les valeurs par défaut. -#### Autoriser l'accès aux bases de données par le biais des URL 4DSYNC - -Cette option contrôle le support des requêtes de synchronisation HTTP contenant des URLs dépréciées */4DSYNC*. - #### Validation de l'adresse IP de la session > Cette option n'est pas disponible en [mode sessions évolutives](WebServer/sessions.md) (il n'y a pas de validation). diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/commands/create-deployment-license.md b/i18n/fr/docusaurus-plugin-content-docs/current/commands/create-deployment-license.md index 5762a6e0569a86..24794a1597f238 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/commands/create-deployment-license.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/commands/create-deployment-license.md @@ -7,10 +7,10 @@ displayed_sidebar: docs
    Historique -| Release | Modifications | -| ------- | --------------------------------- | -| 20 R10 | New *autoLicenseTarget* parameter | -| 20 | Ajout | +| Release | Modifications | +| ------- | ------------------------------------- | +| 20 R10 | Nouveau paramètre *autoLicenseTarget* | +| 20 | Ajout |
    @@ -18,77 +18,77 @@ displayed_sidebar: docs -| Paramètres | Type | | Description | -| ----------------- | ------------------------- | --------------------------- | ------------------------------------------------- | -| mergedApp | 4D.Folder | → | Folder containing the merged application | -| autoLicenseTarget | Integer | → | Target license for automatic license embedding | -| buildLicense | 4D.File | → | License required to generate the embedded license | -| oemLicense | 4D.File | → | 4D OEM XML Key license if server license | -| Résultat | Object | ← | Statut | +| Paramètres | Type | | Description | +| ----------------- | ------------------------- | --------------------------- | ------------------------------------------------------- | +| mergedApp | 4D.Folder | → | Dossier contenant l'application fusionnée | +| autoLicenseTarget | Integer | → | Licence cible pour l'intégration automatique de licence | +| buildLicense | 4D.File | → | Licence requise pour générer la licence intégrée | +| oemLicense | 4D.File | → | Licence de clé XML OEM 4D si licence serveur | +| Résultat | Object | ← | Statut | ## Description -The **Create deployment license** command creates an embedded license file in the Licenses folder of the *mergedApp* built application. If the Licenses folder does not exist in the *mergedApp* folder, it is created by the command. +La commande **Create deployment license** crée un fichier de licence intégré dans le dossier Licenses de l'application générée *mergedApp*. Si le dossier Licenses n'existe pas dans le dossier *mergedApp*, il est créé par la commande. -In *mergedApp*, pass a [4D.Folder](../API/FolderClass.md) object containing a reference to the folder containing the built application in which you want to embed a license. +Dans *mergedApp*, passez un objet [4D.Folder](../API/FolderClass.md) contenant une référence au dossier contenant l'application générée dans laquelle vous souhaitez intégrer une licence. -Depending on the second parameter, you [let 4D select automatically the license to use](#automatic-license-selection) for the target or [designate the license(s) to use](#designating-the-licenses-to-use). +En fonction du deuxième paramètre, vous [laissez 4D sélectionner automatiquement la licence à utiliser](#automatic-license-selection) pour la cible ou [désignez la ou les licence(s) à utiliser](#designating-the-licenses-to-use). -### Automatic license selection +### Sélection automatique de la licence -If you pass the *autoLicenseTarget* parameter, you let 4D find and use the most appropriate license for the specified target. For more information on the automatic license selection, please refer to the [Build application](../Desktop/building.md#application-automatically-embedding-available-licenses) section. +Si vous passez le paramètre *autoLicenseTarget*, vous laissez à 4D le soin de trouver et d'utiliser la licence la plus appropriée pour la cible spécifiée. Pour plus d'informations sur la sélection automatique des licences, veuillez consulter la section [Build application](../Desktop/building.md#application-automatically-embedding-available-licenses). -The following constants are supported in the *autoLicenseTarget* parameter: +Les constantes suivantes sont prises en charge dans le paramètre *autoLicenseTarget* : -| Constante | Valeur | Description | -| ----------------- | ------ | --------------------------------------------------------------- | -| 4D Volume Desktop | 1 | Create automatically a license for a 4D single-user application | -| 4D Server | 5 | Create automatically a license for a 4D Server application | +| Constante | Valeur | Description | +| ----------------- | ------ | -------------------------------------------------------------------------- | +| 4D Volume Desktop | 1 | Créer automatiquement une licence pour une application 4D mono-utilisateur | +| 4D Server | 5 | Créer automatiquement une licence pour une application 4D Server | -If no valid license is found, an error is generated. +Si aucune licence valide n'est trouvée, une erreur est générée. -### Designating the license(s) to use +### Désignation des licences à utiliser -In *license*, pass a [4D.File](../API/FileClass.md) object containing a reference to the license file used to generate the embedded license. +Dans *license*, passez un objet [4D.File](../API/FileClass.md) contenant une référence au fichier de licence utilisé pour générer la licence intégrée. -In the non-automatic mode, if the build requires a specific OEM license (*4D OEM XML Keys*) and if no such license is already installed in the Licenses folder of the building machine, you need to pass it using the *oemLicense* parameter. This parameter is useful if you dedicate a machine to build your applications. +En mode non automatique, si la génération nécessite une licence OEM spécifique (*4D OEM XML Keys*) et si aucune licence de ce type n'est déjà installée dans le dossier Licences de la machine utilisée pour la génération, vous devez la passer en utilisant le paramètre *oemLicense*. Ce paramètre est utile si vous consacrez une machine à la génération de vos applications. ### Résultat -The command returns a *status* object containing the following properties: +La commande renvoie un objet *statut* contenant les propriétés suivantes : -| **Propriété** | **Type** | **Description** | -| ---------------------------------------------------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| success | Boolean | True if the license file has been generated | -| file | [4D.File](../API/FileClass.md) | The generated license file | -| statusText | Text | Description of the error if any | -| errors | Collection | Collection d'objets erreur | -| \[\].message | Text | Message d'erreur | -| \[\].errCode | Number | Numéro de l'erreur | -| standalone | Object | (only in [automatic mode](#automatic-license-selection) Description attributes for `4D Volume Desktop` license | -| oemServer | Object | (only in [automatic mode](#automatic-license-selection) Description attributes for `4D Server` OEM license | -| oemXMLKey | Object | (only in [automatic mode](#automatic-license-selection) Description attributes for `4D Server` XML Key license | +| **Propriété** | **Type** | **Description** | +| ---------------------------------------------------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| success | Boolean | Vrai si le fichier de licence a été généré | +| file | [4D.File](../API/FileClass.md) | Le fichier de licence généré | +| statusText | Text | Description de l'erreur s'il y en a | +| errors | Collection | Collection d'objets erreur | +| \[\].message | Text | Message d'erreur | +| \[\].errCode | Number | Numéro de l'erreur | +| standalone | Object | (seulement en [mode automatique](#automatic-license-selection)) Attributs de description pour la licence `4D Volume Desktop` | +| oemServer | Object | (uniquement [mode automatique](#automatic-license-selection)) Attributs de description pour la licence OEM `4D Server` | +| oemXMLKey | Object | (uniquement [mode automatique](#automatic-license-selection)) Attributs de description pour la licence de la clé XML `4D Server` | -*Description attributes* are: +Les *attributs de description* sont : -| **Propriété** | **Type** | **Description** | -| -------------------- | -------- | ------------------------------------------ | -| absolutePlatformPath | Text | Path to the original license file retained | -| offerName | Text | Commercial name of the license retained | -| productNumber | Number | Serial number of the license retained | +| **Propriété** | **Type** | **Description** | +| -------------------- | -------- | ---------------------------------------------------- | +| absolutePlatformPath | Text | Chemin d'accès au fichier de licence original choisi | +| offerName | Text | Nom commercial de la licence choisie | +| productNumber | Number | Numéro de série de la licence choisie | :::note Notes -- The generated license must be used only with the application referenced by *mergedApp*. -- It is necessary to regenerate the license each time the application is rebuilt. +- La licence générée doit être utilisée uniquement avec l'application référencée par *mergedApp*. +- Il est nécessaire de récréer la licence à chaque fois que l'application est regénérée. ::: ## Exemple 1 -Use the automatic syntax to create a single-user 4D application: +Utilisation de la syntaxe automatique pour créer une application 4D mono-utilisateur : ```4d  var $status : Object @@ -99,7 +99,7 @@ Use the automatic syntax to create a single-user 4D application: ## Exemple 2 -Designate a license to use: +Désignation d'une licence à utiliser: ```4d  var $status : Object @@ -112,7 +112,7 @@ Designate a license to use: ## Voir également -[Blog post - Finalize an application with 4D commands](https://blog.4d.com/finalize-an-application-with-4d-commands) +[Article de blog - Finaliser une application avec les commandes 4D](https://blog.4d.com/finalize-an-application-with-4d-commands) ## Propriétés diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/commands/process-activity.md b/i18n/fr/docusaurus-plugin-content-docs/current/commands/process-activity.md index ac251fdd8ee67a..3ebd84783ae569 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/commands/process-activity.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/commands/process-activity.md @@ -21,6 +21,7 @@ displayed_sidebar: docs | Release | Modifications | | ------- | ---------------------------------------- | | 20 R7 | Prise en charge du paramètre *sessionID* | +| 21 | Support of web user sessions | @@ -54,10 +55,9 @@ Lorsqu'elle est exécutée sur 4D en mode local ou distant, `Process activity` r La propriété "sessions" contient une collection d'objets décrivant toutes les sessions en cours d'exécution sur le serveur. Pour une description des propriétés de l'objet session, veuillez vous référer à la commande [`Session info`](session-info.md). -:::note Notes +:::note -- Vous pouvez obtenir l'objet d'une session en utilisant la commande [Session](session.md). -- `Process activity` renvoie les sessions des clients distants, les sessions des procédures stockées et les sessions REST, mais pas les sessions Web (limitation). +Vous pouvez obtenir l'objet d'une session en utilisant la commande [Session](session.md). ::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/settings/web.md b/i18n/fr/docusaurus-plugin-content-docs/current/settings/web.md index 1a3a10e98438d9..66c7916c42c5a1 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/settings/web.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/settings/web.md @@ -33,10 +33,6 @@ Indique si le Web server accepte des connexions sécurisées. Voir [Activer HTTP Permet de modifier le numéro du port TCP/IP utilisé par le serveur Web pour les connexions HTTP sécurisées sur TLS (protocole HTTPS). Voir [Port HTTPS](../WebServer/webServerConfig.md#https-port). -#### Autoriser l'accès aux bases de données par le biais des URL 4DSYNC - -*Note de compatibilité :* Cette option est [obsolète](../WebServer/webServerConfig.md#deprecated-settings). Pour l'accès aux bases de données via HTTP, il est désormais recommandé d'utiliser les fonctionnalités de stockage de données à distance ORDA et les requêtes REST. - ### Chemins #### Racine HTML par défaut @@ -112,7 +108,7 @@ Non disponible avec les [sessions extensibles](../WebServer/sessions.md). Active les process web préemptifs dans vos applications compilées. Lorsque l'option **Utiliser des processus préemptifs** est sélectionnée, l'éligibilité de votre code lié au Web (y compris les balises 4D et les méthodes base Web) à l'exécution préemptive sera évaluée pendant la compilation. Pour plus d'informations, voir [Utiliser des processus Web préemptifs](../WebServer/preemptiveWeb.md). -> Cette option ne s'applique pas aux sessions extensibles, aux process REST (mode compilé), ni aux process Web service (serveur et client). Voir [Activer le mode préemptif pour le serveur web](../WebServer/webServerConfig.md#use-preemptive-processes). +> Cette option ne s'applique pas aux sessions extensibles, aux process REST (mode compilé), ni aux process Web service (serveur et client). Voir [Activer le mode préemptif pour le serveur web](../WebServer/webServerConfig.md#use-preemptive-processes). #### Conservation des process inactifs diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Debugging/debugLogFiles.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Debugging/debugLogFiles.md index 4bb4c00d4aa82f..ad0a720c8b06f5 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Debugging/debugLogFiles.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Debugging/debugLogFiles.md @@ -3,7 +3,7 @@ id: debugLogFiles title: Fichiers journaux --- -Les applications 4D peuvent générer divers fichiers journaux (ou "logs") qui sont utiles pour le débogage ou l'optimisation de leur exécution. Logs are usually started or stopped using selectors of the [SET DATABASE PARAMETER](../commands-legacy/set-database-parameter.md), [WEB SET OPTION](../commands-legacy/web-set-option.md), or [HTTP SET OPTION](../commands-legacy/http-set-option.md) commands and are stored in the [Logs folder](../Project/architecture.md#logs) of the project. +Les applications 4D peuvent générer divers fichiers journaux (ou "logs") qui sont utiles pour le débogage ou l'optimisation de leur exécution. Les journaux sont généralement lancés ou arrêtés à l'aide des sélecteurs des commandes [SET DATABASE PARAMETER](../commands-legacy/set-database-parameter.md), [WEB SET OPTION](../commands-legacy/web-set-option.md), ou [HTTP SET OPTION](../commands-legacy/http-set-option.md) et sont stockés dans le [dossier Logs](../Project/architecture.md#logs) du projet. Les informations stockées dans les journaux doivent être analysées pour détecter et corriger les problèmes. Cette section fournit une description complète des fichiers journaux suivants : @@ -71,9 +71,9 @@ Pour chaque requête, les champs suivants sont enregistrés : | bytes_in | Nombre d'octets reçus | | bytes_out | Nombre d'octets envoyés | | server\_duration | exec\_duration | Dépend de l'endroit où le journal est généré :
  • _server\*duration\* lorsqu'il est généré sur le client --Temps en microsecondes pris par le serveur pour traiter la requête et retourner une réponse. B à F dans l'image ci-dessous, OU
  • _exec\*duration\* lors de sa génération sur le serveur --Temps pris en microsecondes pour que le serveur traite la requête. B à E dans l'image ci-dessous.
  • | -| write\_duration | Temps pris en microsecondes pour l'envoi de la :
  • Requête (lorsqu'elle est exécutée sur le client). A to B in image below.
  • Response (when run on the server). E à F dans l'image ci-dessous.
  • | +| write\_duration | Temps pris en microsecondes pour l'envoi de la :
  • Requête (lorsqu'elle est exécutée sur le client). A à B dans l'image ci-dessous.
  • Réponse (lorsqu'elle est exécutée sur le serveur). E à F dans l'image ci-dessous.
  • | | task_kind | Préemptif ou coopératif (respectivement 'p' ou 'c') | -| rtt | Temps en microsecondes pris par le client pour envoyer la requête et pour qu'elle soit reçue par le serveur. A to D and E to H in image below.
  • Only measured when using the ServerNet network layer, returns 0 when used with the legacy network layer.
  • For Windows versions prior to Windows 10 or Windows Server 2016, the call will return 0.
  • | +| rtt | Temps en microsecondes pris par le client pour envoyer la requête et pour qu'elle soit reçue par le serveur. A à D et E à H dans l'image ci-dessous.
  • Uniquement mesuré lors de l'utilisation de la couche réseau ServerNet, renvoie 0 lors de l'utilisation de la couche réseau legacy.
  • Pour les versions de Windows antérieures à Windows 10 ou Windows Server 2016, l'appel renvoie 0.
  • | | extra | Informations supplémentaires relatives au contexte, par exemple le nom de la dataclass et/ou le nom de l'attribut dans le cas d'une requête ORDA | Acheminement de la requête : @@ -222,23 +222,23 @@ SET DATABASE PARAMETER(Current process debug log recording;2+4) Les champs suivants sont enregistrés pour chaque évènement : -| Colonne # | Noms des champs | Description | -| --------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 1 | sequence_number | Numéro d'opération séquentiel et unique dans la session de log | -| 2 | time | Date et heure au format ISO 8601 (YYYY-MM-DDThh:mm:ss.mmm) | -| 3 | ProcessID | ID du process | -| 4 | unique_processID | ID unique du process | -| 5 | stack_level | Niveau de stack (pile) | -| 6 | operation_type | Type d'opération enregistrée. This value may be an absolute value:

    1. Command
    2. Method (project method, database method, etc.)
    3. Message (sent by [LOG EVENT](../commands-legacy/log-event.md) command only)
    4. PluginMessage
    5. PluginEvent
    6. PluginCommand
    7. PluginCallback
    8. Task
    9. Member method (method attached to a collection or an object)

    When closing a stack level, the `operation_type`, `operation` and `operation_parameters` columns have the same value as the opening stack level logged in the `stack_opening_sequence_number` column. Type d'opération enregistrée. Les valeurs des colonnes 6, 7 et 8 sont répétées dans la ligne du niveau de stack de fermeture. La colonne 10 contient les numéros de séquence d'ouverture du niveau de stack, c'est-à-dire 122 pour la 3e ligne et 121 pour la 4e. | -| 7 | operation | Peut représenter (selon le type d'opération) :
  • un ID de commande de langue (lorsque type=1)
  • un nom de méthode (lorsque type=2)
  • une combinaison de pluginIndex;pluginCommand (lorsque type=4, 5, 6 ou 7). Peut contenir quelque chose comme '3;2'
  • un UUID de task de connexion (lorsque type=8)
  • | -| 8 | operation_parameters | Paramètres passés aux commandes, méthodes ou aux plugins | -| 9 | form_event | Evénement formulaire, le cas échéant ; vide dans les autres cas (par conséquent cette colonne est utilisée lorsque le code est exécuté dans une méthode formulaire ou méthode objet) | -| 10 | stack_opening_sequence_number | Niveaux de fermeture de stacks uniquement : numéro de séquence du niveau d'ouverture de stack correspondant | -| 11 | stack_level_execution_time | Niveaux de fermeture de stacks uniquement : Durée en micro secondes de l'action enregistrée courante (cf. 10e colonne des lignes 123 et 124 dans l'historique ci-dessus) | +| Colonne # | Noms des champs | Description | +| --------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 1 | sequence_number | Numéro d'opération séquentiel et unique dans la session de log | +| 2 | time | Date et heure au format ISO 8601 (YYYY-MM-DDThh:mm:ss.mmm) | +| 3 | ProcessID | ID du process | +| 4 | unique_processID | ID unique du process | +| 5 | stack_level | Niveau de stack (pile) | +| 6 | operation_type | Type d'opération enregistrée. Cette valeur peut être une valeur absolue :

    1. Commande
    2. Méthode (méthode projet, méthode base, etc.)
    3. Message (envoyé par la commande [LOG EVENT](../commands-legacy/log-event.md) uniquement)
    4. PluginMessage
    5. PluginEvent
    6. PluginCommand
    7. PluginCallback
    8. Tâche
    9. Méthode membre (méthode attachée à une collection ou à un objet)

    Lors de la fermeture d'un niveau de pile, les colonnes `operation_type`, `operation` et `operation_parameters` ont la même valeur que le niveau de pile d'ouverture enregistré dans la colonne `stack_opening_sequence_number`. Type d'opération enregistrée. Les valeurs des colonnes 6, 7 et 8 sont répétées dans la ligne du niveau de stack de fermeture. La colonne 10 contient les numéros de séquence d'ouverture du niveau de stack, c'est-à-dire 122 pour la 3e ligne et 121 pour la 4e. | +| 7 | operation | Peut représenter (selon le type d'opération) :
  • un ID de commande de langue (lorsque type=1)
  • un nom de méthode (lorsque type=2)
  • une combinaison de pluginIndex;pluginCommand (lorsque type=4, 5, 6 ou 7). Peut contenir quelque chose comme '3;2'
  • un UUID de task de connexion (lorsque type=8)
  • | +| 8 | operation_parameters | Paramètres passés aux commandes, méthodes ou aux plugins | +| 9 | form_event | Evénement formulaire, le cas échéant ; vide dans les autres cas (par conséquent cette colonne est utilisée lorsque le code est exécuté dans une méthode formulaire ou méthode objet) | +| 10 | stack_opening_sequence_number | Niveaux de fermeture de stacks uniquement : numéro de séquence du niveau d'ouverture de stack correspondant | +| 11 | stack_level_execution_time | Niveaux de fermeture de stacks uniquement : Durée en micro secondes de l'action enregistrée courante (cf. 10e colonne des lignes 123 et 124 dans l'historique ci-dessus) | ## 4DDiagnosticLog.txt -Ce fichier journal enregistre de nombreux événements liés au fonctionnement interne de l'application et est lisible par un humain. You can include custom information in this file using the [LOG EVENT](../commands-legacy/log-event.md) command. +Ce fichier journal enregistre de nombreux événements liés au fonctionnement interne de l'application et est lisible par un humain. Vous pouvez inclure des informations personnalisées dans ce fichier en utilisant la commande [LOG EVENT](../commands-legacy/log-event.md). Pour lancer ce journal : @@ -254,7 +254,7 @@ Les champs suivants sont enregistrés pour chaque évènement : | timestamp | Date et heure au format ISO 8601 (YYYY-MM-DDThh:mm:ss.mmm) | | loggerID | Optionnel | | componentSignature | Optionnel - signature de composant interne | -| messageLevel | Info, Attention, Erreur | +| messageLevel | Trace, Debug, Info, Warning, Error | | message | Description de la saisie de journal | En fonction de l'événement, d'autres champs peuvent également être enregistrés, tels que task, socket, etc. @@ -263,7 +263,7 @@ En fonction de l'événement, d'autres champs peuvent également être enregistr Le fichier *4DDiagnosticLog.txt* peut enregistrer différents niveaux de messages, de `ERROR` (le plus important) à `TRACE` (le moins important). Par défaut, le niveau `INFO` est défini, ce qui signifie que le fichier n'enregistre que les événements importants, y compris les erreurs et les résultats inattendus (voir ci-dessous). -You can select the level of messages using the `Diagnostic log level` selector of the [SET DATABASE PARAMETER](../commands-legacy/set-database-parameter.md) command, depending on your needs. Lorsque vous sélectionnez un niveau, les niveaux supérieurs (qui sont plus importants) sont implicitement sélectionnés également. Les niveaux suivants sont disponibles : +Vous pouvez sélectionner le niveau des messages à l'aide du sélecteur `Diagnostic log level` de la commande [SET DATABASE PARAMETER](../commands-legacy/set-database-parameter.md), en fonction de vos besoins. Lorsque vous sélectionnez un niveau, les niveaux supérieurs (qui sont plus importants) sont implicitement sélectionnés également. Les niveaux suivants sont disponibles : | Constante | Description | Lorsque sélectionné, inclut | | ----------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | @@ -336,13 +336,13 @@ Pour démarrer ce journal : Pour chaque requête, les champs suivants sont enregistrés : -| Colonne # | Description | -| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 1 | Numéro d'opération séquentiel et unique dans la session de log | -| 2 | Date et heure au format RFC3339 (yyyy-mm-ddThh:mm:ss.ms) | -| 3 | ID du Process 4D | -| 4 | ID unique du process | -| 5 | | +| Colonne # | Description | +| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | Numéro d'opération séquentiel et unique dans la session de log | +| 2 | Date et heure au format RFC3339 (yyyy-mm-ddThh:mm:ss.ms) | +| 3 | ID du Process 4D | +| 4 | ID unique du process | +| 5 | | ## Requêtes ORDA @@ -459,11 +459,11 @@ Voici un exemple d'enregistrement ORDA côté serveur : ## 4DTCPUDPLog.txt -This log file records events related to TCP or UDP connections. Ces événements comprennent la transmission de données, les erreurs et les informations sur le cycle de vie de la connexion. This log helps developers monitor and debug network activity within their applications. +Ce fichier journal enregistre les événements liés aux connexions TCP ou UDP. Ces événements comprennent la transmission de données, les erreurs et les informations sur le cycle de vie de la connexion. Ce journal aide les développeurs à surveiller et à déboguer l'activité du réseau dans leurs applications. Pour lancer ce journal : -- Use the `SET DATABASE PARAMETER` command: +- Utilisez la commande `SET DATABASE PARAMETER` : ```4d SET DATABASE PARAMETER(TCPUDP log; 1) @@ -481,18 +481,18 @@ Pour lancer ce journal : Les champs suivants sont enregistrés pour chaque évènement : -| Noms des champs | Type | Description | -| --------------- | --------- | ---------------------------------------------------------------------------------------- | -| time | Date/Time | Date and time of the event in ISO 8601 format | -| localPort | Number | Local port used for the connection | -| peerAddress | Text | IP address of the remote peer | -| peerPort | Number | Port of the remote peer | -| protocol | Text | "TCP" or "UDP" | -| event | Text | The type of event: `open`, `close`, `error`, `send`, `receive`, `listen` | -| size | Number | The amount of data sent or received (in bytes), 0 if not applicable | -| excerpt | Number | First 10 bytes of data in hexadecimal format | -| textExcerpt | Text | First 10 bytes of data in text format | -| comment | Text | Additional information about the event, such as error details or encryption status | +| Noms des champs | Type | Description | +| --------------- | --------- | --------------------------------------------------------------------------------------------------------- | +| time | Date/Time | Date et heure de l'événement au format ISO 8601 | +| localPort | Number | Port local utilisé pour la connexion | +| peerAddress | Text | Adresse IP de la machine distante | +| peerPort | Number | Port de la machine distante | +| protocol | Text | "TCP" ou "UDP" | +| event | Text | Le type d'événement: `open`, `close`, `error`, `send`, `receive`, `listen` | +| size | Number | Quantité de données envoyées ou reçues (en octets), 0 si non applicable | +| excerpt | Number | Les 10 premiers octets des données au format hexadécimal | +| textExcerpt | Text | Les 10 premiers octets des données en format texte | +| comment | Text | Informations supplémentaires sur l'événement, telles que les détails de l'erreur ou l'état du chiffrement | ## Utilisation d'un fichier de configuration de log @@ -671,9 +671,9 @@ Voici un exemple de fichier de configuration de log : :::note -- The "state" property values are described in the corresponding commands: `[`WEB SET OPTION`](../commands-legacy/web-set-option.md) (`Web log recording`), [`HTTP SET OPTION`](../commands-legacy/http-set-option.md) (`HTTP client log`), [`SET DATABASE PARAMETER`](../commands-legacy/set-database-parameter.md) (`Client Web log recording`, `IMAP Log\\\\\\\\`,...). -- For httpDebugLogs, the "level" property corresponds to the `wdl` constant options described in the [`WEB SET OPTION`](../commands-legacy/web-set-option.md) command. -- For diagnosticLogs, the "level" property corresponds to the `Diagnostic log level` constant values described in the [`SET DATABASE PARAMETER`](../commands-legacy/set-database-parameter.md) command. +- Les valeurs de la propriété "state" sont décrites dans les commandes correspondantes : [`WEB SET OPTION`](../commands-legacy/web-set-option.md) (`Web log recording`), [`HTTP SET OPTION`](../commands-legacy/http-set-option.md) (`HTTP client log`), [`SET DATABASE PARAMETER`](../commands-legacy/set-database-parameter.md) (`Client Web log recording`, `IMAP Log`,...). +- Pour httpDebugLogs, la propriété "level" correspond aux options de la constante `wdl` décrites dans la commande [`WEB SET OPTION`](../commands-legacy/web-set-option.md). +- Pour les diagnosticLogs, la propriété "level" correspond aux valeurs de la constante `Diagnostic log level` décrites dans la commande [`SET DATABASE PARAMETER`](../commands-legacy/set-database-parameter.md). ::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md index 285ded8a467632..9e96d914b6b888 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md @@ -5,9 +5,9 @@ title: ORDA Events
    Historique -| Release | Modifications | -| ------- | ------------- | -| 20 R10 | Ajout | +| Release | Modifications | +| ------- | ------------------- | +| 20 R10 | touched event added |
    @@ -37,11 +37,11 @@ You can also define the same event at both attribute and entity levels. The attr Usually, ORDA events are executed on the server. -In client/server configuration however, the `touched()` event function can be executed on the **server or the client**, depending on the use of [`local`](../ORDA/ordaClasses.md#local-functions) keyword. A specific implementation on the client side allows the triggering of the event on the client. +In client/server configuration however, the `touched()` event function can be executed on the **server or the client**, depending on the use of [`local`](./ordaClasses.md#local-functions) keyword. A specific implementation on the client side allows the triggering of the event on the client. :::note -ORDA [`constructor()`](../ORDA/ordaClasses.md#class-constructor) functions are always executed on the client. +ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always executed on the client. ::: @@ -93,16 +93,12 @@ This event is triggered each time a value is modified in the entity. This event is triggered as soon as the 4D Server / 4D engine can detect a modification of attribute value which can be due to the following actions: - in **client/server with the [`local` keyword](../ORDA/ordaClasses.md#local-functions)** or in **4D single-user**: - - the user sets a value on a 4D form, - - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). + - the user sets a value on a 4D form, + - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). - in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). - in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. - with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) -:::note - -::: - The function receives an [*event* object](#event-parameter) as parameter. If this event [throws](../commands-legacy/throw.md) an error, it will not stop the undergoing action. @@ -154,6 +150,72 @@ Function event touched arrivalDate($event : Object) ``` +#### Example 3 (diagram): Client/server with the `local` keyword: + +```mermaid + +sequenceDiagram + + Client->>+Server: $people:=ds.People.all().first() + + Client->>+Client: $people.lastname:="Brown" + Note over Client: local Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + +Note over Client:$people.lastname is uppercased + + Client->>+Server: $people.apply() + + Note over Server: The $people entity is received with the lastname attribute uppercased + +``` + +#### Example 4 (diagram): Client/server without the `local` keyword + +```mermaid + +sequenceDiagram + + Client->>+Server: $people:=ds.People.all().first() + + Client->>+Client: $people.lastname:="Brown" + + Note over Client:$people.lastname is not uppercased + + Client->>+Server: $people.apply() + + Note over Server: Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + + Server-->>-Client: The $people entity is updated + + Note over Client:$people.lastname is uppercased + + +``` + +#### Example 5 (diagram): Qodly application + +```mermaid + +sequenceDiagram + +Qodly page->>+ Server: Get an entity into the People Qodly source + +Qodly page->>+Qodly page: The user updates People.lastname + +Note over Qodly page: The People Qodly source lastname attribute is not uppercased + +Qodly page->>+ Server: Function call People.apply() + +Note over Server: Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + +Server-->>-Qodly page: The People Qodly source is updated +Note over Qodly page: The People Qodly source lastname attribute is uppercased + + +``` + + + diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md index 007622755e11ab..f0c436ba844653 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md @@ -355,7 +355,7 @@ Since functions such as [`dataClass.fromCollection()`](../API/DataClassClass.md# ::: -#### Exemple +#### Exemple 1 ```4d @@ -367,6 +367,83 @@ Class constructor() ``` +#### Example 2 (diagram): Client/server + +```mermaid + +sequenceDiagram + +Client->>+Client: Form.product:=ds.Products.new() + +Note over Client: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Note over Client: Form.product.creationDate is "06/17/25"
    Form.product.comment is "Automatic comment" + +Client->>+Server: Form.product.save() + +Server-->>-Client: Success + + +``` + +#### Example 3 (diagram): Qodly - Standard action + +```mermaid + +sequenceDiagram + + Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source) + + Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source + + Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + + Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled + + Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Automatic comment" + +``` + +#### Example 4 (diagram): Qodly - Standard action and update value on the newly created entity + +```mermaid + +sequenceDiagram + +Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source) + +Qodly page->>+ Qodly page: Update product comment with "Front end comment" + +Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source + +Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Note over Server: The comment attribute is set with "Front end comment" + +Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled + +Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Front end comment" + +``` + +#### Example 5 (diagram): Qodly - Entity instanciated in a function + +```mermaid + +sequenceDiagram + +Qodly page->>+Server: product Qodly source := Function call Products.createNew() + +Note over Server: CreateNew() function on the Products class
    return This.new() + +Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Server-->>-Qodly page: The product entity creationDate and comment attributes are filled + +Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Automatic comment" + +``` + ## Attributs calculés ### Vue d’ensemble diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$queryplan.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$queryplan.md index 0c93508473cdcd..f739c84de154cc 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$queryplan.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$queryplan.md @@ -14,7 +14,7 @@ $queryplan retourne le plan de la requête telle qu'il a été exécuté par 4D | item | Text | Requête exécutée | | subquery | Tableau | S'il existe une sous-requête, un objet supplémentaire contenant une propriété d'élément (comme celle indiquée ci-dessus) | -Pour plus d'informations sur les plans de requête, reportez-vous à [queryPlan ete queryPath](genInfo.md#querypath-and-queryplan). +Pour plus d'informations sur les plans de requête, reportez-vous à [queryPlan et queryPath](genInfo.md#querypath-and-queryplan). ## Exemple diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/genInfo.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/genInfo.md index b42b3183456e7b..70b98cab741ec8 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/genInfo.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/genInfo.md @@ -10,7 +10,7 @@ Vous pouvez obtenir plusieurs informations du serveur REST : ## Catalogue -Use the [`$catalog`]($catalog.md), [`$catalog/\{dataClass\}`]($catalog.md#catalogdataclass), or [`$catalog/$all`]($catalog.md#catalogall) parameters to get the list of [exposed dataclasses and their attributes](configuration.md#exposing-tables-and-fields). +Utilisez les paramètres [`$catalog`]($catalog.md), [`$catalog/\{dataClass\}`]($catalog.md#catalogdataclass) ou [`$catalog/$all`]($catalog.md#catalogall) pour obtenir la liste des [dataclass exposées et de leurs attributs](configuration.md#exposing-tables-and-fields). Pour obtenir la collection de toutes les dataclass exposées avec leurs attributs : @@ -22,7 +22,7 @@ Use the [`$info`]($info.md) parameter to get information about the entity select ## queryPath et queryPlan -Les sélections d'entité générées par les requêtes peuvent avoir les deux propriétés suivantes : `queryPlan` et `queryPath`. To calculate and return these properties, you just need to add [`$queryPlan`]($queryplan.md) and/or [`$queryPath`]($querypath.md) in the REST request. +Les entity selections générées par via des recherches peuvent avoir les deux propriétés suivantes : `queryPlan` et `queryPath`. Pour calculer et renvoyer ces propriétés, il suffit d'ajouter [`$queryPlan`]($queryplan.md) et/ou [`$queryPath`]($querypath.md) dans la requête REST. Par exemple : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/commands/create-deployment-license.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/commands/create-deployment-license.md index 5762a6e0569a86..24794a1597f238 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/commands/create-deployment-license.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/commands/create-deployment-license.md @@ -7,10 +7,10 @@ displayed_sidebar: docs
    Historique -| Release | Modifications | -| ------- | --------------------------------- | -| 20 R10 | New *autoLicenseTarget* parameter | -| 20 | Ajout | +| Release | Modifications | +| ------- | ------------------------------------- | +| 20 R10 | Nouveau paramètre *autoLicenseTarget* | +| 20 | Ajout |
    @@ -18,77 +18,77 @@ displayed_sidebar: docs -| Paramètres | Type | | Description | -| ----------------- | ------------------------- | --------------------------- | ------------------------------------------------- | -| mergedApp | 4D.Folder | → | Folder containing the merged application | -| autoLicenseTarget | Integer | → | Target license for automatic license embedding | -| buildLicense | 4D.File | → | License required to generate the embedded license | -| oemLicense | 4D.File | → | 4D OEM XML Key license if server license | -| Résultat | Object | ← | Statut | +| Paramètres | Type | | Description | +| ----------------- | ------------------------- | --------------------------- | ------------------------------------------------------- | +| mergedApp | 4D.Folder | → | Dossier contenant l'application fusionnée | +| autoLicenseTarget | Integer | → | Licence cible pour l'intégration automatique de licence | +| buildLicense | 4D.File | → | Licence requise pour générer la licence intégrée | +| oemLicense | 4D.File | → | Licence de clé XML OEM 4D si licence serveur | +| Résultat | Object | ← | Statut | ## Description -The **Create deployment license** command creates an embedded license file in the Licenses folder of the *mergedApp* built application. If the Licenses folder does not exist in the *mergedApp* folder, it is created by the command. +La commande **Create deployment license** crée un fichier de licence intégré dans le dossier Licenses de l'application générée *mergedApp*. Si le dossier Licenses n'existe pas dans le dossier *mergedApp*, il est créé par la commande. -In *mergedApp*, pass a [4D.Folder](../API/FolderClass.md) object containing a reference to the folder containing the built application in which you want to embed a license. +Dans *mergedApp*, passez un objet [4D.Folder](../API/FolderClass.md) contenant une référence au dossier contenant l'application générée dans laquelle vous souhaitez intégrer une licence. -Depending on the second parameter, you [let 4D select automatically the license to use](#automatic-license-selection) for the target or [designate the license(s) to use](#designating-the-licenses-to-use). +En fonction du deuxième paramètre, vous [laissez 4D sélectionner automatiquement la licence à utiliser](#automatic-license-selection) pour la cible ou [désignez la ou les licence(s) à utiliser](#designating-the-licenses-to-use). -### Automatic license selection +### Sélection automatique de la licence -If you pass the *autoLicenseTarget* parameter, you let 4D find and use the most appropriate license for the specified target. For more information on the automatic license selection, please refer to the [Build application](../Desktop/building.md#application-automatically-embedding-available-licenses) section. +Si vous passez le paramètre *autoLicenseTarget*, vous laissez à 4D le soin de trouver et d'utiliser la licence la plus appropriée pour la cible spécifiée. Pour plus d'informations sur la sélection automatique des licences, veuillez consulter la section [Build application](../Desktop/building.md#application-automatically-embedding-available-licenses). -The following constants are supported in the *autoLicenseTarget* parameter: +Les constantes suivantes sont prises en charge dans le paramètre *autoLicenseTarget* : -| Constante | Valeur | Description | -| ----------------- | ------ | --------------------------------------------------------------- | -| 4D Volume Desktop | 1 | Create automatically a license for a 4D single-user application | -| 4D Server | 5 | Create automatically a license for a 4D Server application | +| Constante | Valeur | Description | +| ----------------- | ------ | -------------------------------------------------------------------------- | +| 4D Volume Desktop | 1 | Créer automatiquement une licence pour une application 4D mono-utilisateur | +| 4D Server | 5 | Créer automatiquement une licence pour une application 4D Server | -If no valid license is found, an error is generated. +Si aucune licence valide n'est trouvée, une erreur est générée. -### Designating the license(s) to use +### Désignation des licences à utiliser -In *license*, pass a [4D.File](../API/FileClass.md) object containing a reference to the license file used to generate the embedded license. +Dans *license*, passez un objet [4D.File](../API/FileClass.md) contenant une référence au fichier de licence utilisé pour générer la licence intégrée. -In the non-automatic mode, if the build requires a specific OEM license (*4D OEM XML Keys*) and if no such license is already installed in the Licenses folder of the building machine, you need to pass it using the *oemLicense* parameter. This parameter is useful if you dedicate a machine to build your applications. +En mode non automatique, si la génération nécessite une licence OEM spécifique (*4D OEM XML Keys*) et si aucune licence de ce type n'est déjà installée dans le dossier Licences de la machine utilisée pour la génération, vous devez la passer en utilisant le paramètre *oemLicense*. Ce paramètre est utile si vous consacrez une machine à la génération de vos applications. ### Résultat -The command returns a *status* object containing the following properties: +La commande renvoie un objet *statut* contenant les propriétés suivantes : -| **Propriété** | **Type** | **Description** | -| ---------------------------------------------------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| success | Boolean | True if the license file has been generated | -| file | [4D.File](../API/FileClass.md) | The generated license file | -| statusText | Text | Description of the error if any | -| errors | Collection | Collection d'objets erreur | -| \[\].message | Text | Message d'erreur | -| \[\].errCode | Number | Numéro de l'erreur | -| standalone | Object | (only in [automatic mode](#automatic-license-selection) Description attributes for `4D Volume Desktop` license | -| oemServer | Object | (only in [automatic mode](#automatic-license-selection) Description attributes for `4D Server` OEM license | -| oemXMLKey | Object | (only in [automatic mode](#automatic-license-selection) Description attributes for `4D Server` XML Key license | +| **Propriété** | **Type** | **Description** | +| ---------------------------------------------------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| success | Boolean | Vrai si le fichier de licence a été généré | +| file | [4D.File](../API/FileClass.md) | Le fichier de licence généré | +| statusText | Text | Description de l'erreur s'il y en a | +| errors | Collection | Collection d'objets erreur | +| \[\].message | Text | Message d'erreur | +| \[\].errCode | Number | Numéro de l'erreur | +| standalone | Object | (seulement en [mode automatique](#automatic-license-selection)) Attributs de description pour la licence `4D Volume Desktop` | +| oemServer | Object | (uniquement [mode automatique](#automatic-license-selection)) Attributs de description pour la licence OEM `4D Server` | +| oemXMLKey | Object | (uniquement [mode automatique](#automatic-license-selection)) Attributs de description pour la licence de la clé XML `4D Server` | -*Description attributes* are: +Les *attributs de description* sont : -| **Propriété** | **Type** | **Description** | -| -------------------- | -------- | ------------------------------------------ | -| absolutePlatformPath | Text | Path to the original license file retained | -| offerName | Text | Commercial name of the license retained | -| productNumber | Number | Serial number of the license retained | +| **Propriété** | **Type** | **Description** | +| -------------------- | -------- | ---------------------------------------------------- | +| absolutePlatformPath | Text | Chemin d'accès au fichier de licence original choisi | +| offerName | Text | Nom commercial de la licence choisie | +| productNumber | Number | Numéro de série de la licence choisie | :::note Notes -- The generated license must be used only with the application referenced by *mergedApp*. -- It is necessary to regenerate the license each time the application is rebuilt. +- La licence générée doit être utilisée uniquement avec l'application référencée par *mergedApp*. +- Il est nécessaire de récréer la licence à chaque fois que l'application est regénérée. ::: ## Exemple 1 -Use the automatic syntax to create a single-user 4D application: +Utilisation de la syntaxe automatique pour créer une application 4D mono-utilisateur : ```4d  var $status : Object @@ -99,7 +99,7 @@ Use the automatic syntax to create a single-user 4D application: ## Exemple 2 -Designate a license to use: +Désignation d'une licence à utiliser: ```4d  var $status : Object @@ -112,7 +112,7 @@ Designate a license to use: ## Voir également -[Blog post - Finalize an application with 4D commands](https://blog.4d.com/finalize-an-application-with-4d-commands) +[Article de blog - Finaliser une application avec les commandes 4D](https://blog.4d.com/finalize-an-application-with-4d-commands) ## Propriétés diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/Debugging/debugLogFiles.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/Debugging/debugLogFiles.md index c850b9335b2fb5..709527f48ceda8 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/Debugging/debugLogFiles.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/Debugging/debugLogFiles.md @@ -3,7 +3,7 @@ id: debugLogFiles title: Fichiers journaux --- -Les applications 4D peuvent générer divers fichiers journaux (ou "logs") qui sont utiles pour le débogage ou l'optimisation de leur exécution. Logs are usually started or stopped using selectors of the [SET DATABASE PARAMETER](../commands-legacy/set-database-parameter.md), [WEB SET OPTION](../commands-legacy/web-set-option.md), or [HTTP SET OPTION](../commands-legacy/http-set-option.md) commands and are stored in the [Logs folder](../Project/architecture.md#logs) of the project. +Les applications 4D peuvent générer divers fichiers journaux (ou "logs") qui sont utiles pour le débogage ou l'optimisation de leur exécution. Les journaux sont généralement lancés ou arrêtés à l'aide des sélecteurs des commandes [SET DATABASE PARAMETER](../commands-legacy/set-database-parameter.md), [WEB SET OPTION](../commands-legacy/web-set-option.md), ou [HTTP SET OPTION](../commands-legacy/http-set-option.md) et sont stockés dans le [dossier Logs](../Project/architecture.md#logs) du projet. Les informations stockées dans les journaux doivent être analysées pour détecter et corriger les problèmes. Cette section fournit une description complète des fichiers journaux suivants : @@ -222,23 +222,23 @@ SET DATABASE PARAMETER(Current process debug log recording;2+4) Les champs suivants sont enregistrés pour chaque évènement : -| Colonne # | Noms des champs | Description | -| --------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 1 | sequence_number | Numéro d'opération séquentiel et unique dans la session de log | -| 2 | time | Date et heure au format ISO 8601 (YYYY-MM-DDThh:mm:ss.mmm) | -| 3 | ProcessID | ID du process | -| 4 | unique_processID | ID unique du process | -| 5 | stack_level | Niveau de stack (pile) | -| 6 | operation_type | Type d'opération enregistrée. This value may be an absolute value:

    1. Command
    2. Method (project method, database method, etc.)
    3. Message (sent by [LOG EVENT](../commands-legacy/log-event.md) command only)
    4. PluginMessage
    5. PluginEvent
    6. PluginCommand
    7. PluginCallback
    8. Task
    9. Member method (method attached to a collection or an object)

    When closing a stack level, the `operation_type`, `operation` and `operation_parameters` columns have the same value as the opening stack level logged in the `stack_opening_sequence_number` column. Type d'opération enregistrée. Les valeurs des colonnes 6, 7 et 8 sont répétées dans la ligne du niveau de stack de fermeture. La colonne 10 contient les numéros de séquence d'ouverture du niveau de stack, c'est-à-dire 122 pour la 3e ligne et 121 pour la 4e. | -| 7 | operation | Peut représenter (selon le type d'opération) :
  • un ID de commande de langue (lorsque type=1)
  • un nom de méthode (lorsque type=2)
  • une combinaison de pluginIndex;pluginCommand (lorsque type=4, 5, 6 ou 7). Peut contenir quelque chose comme '3;2'
  • un UUID de task de connexion (lorsque type=8)
  • | -| 8 | operation_parameters | Paramètres passés aux commandes, méthodes ou aux plugins | -| 9 | form_event | Evénement formulaire, le cas échéant ; vide dans les autres cas (par conséquent cette colonne est utilisée lorsque le code est exécuté dans une méthode formulaire ou méthode objet) | -| 10 | stack_opening_sequence_number | Niveaux de fermeture de stacks uniquement : numéro de séquence du niveau d'ouverture de stack correspondant | -| 11 | stack_level_execution_time | Niveaux de fermeture de stacks uniquement : Durée en micro secondes de l'action enregistrée courante (cf. 10e colonne des lignes 123 et 124 dans l'historique ci-dessus) | +| Colonne # | Noms des champs | Description | +| --------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 1 | sequence_number | Numéro d'opération séquentiel et unique dans la session de log | +| 2 | time | Date et heure au format ISO 8601 (YYYY-MM-DDThh:mm:ss.mmm) | +| 3 | ProcessID | ID du process | +| 4 | unique_processID | ID unique du process | +| 5 | stack_level | Niveau de stack (pile) | +| 6 | operation_type | Type d'opération enregistrée. Cette valeur peut être une valeur absolue :

    1. Commande
    2. Méthode (méthode projet, méthode base, etc.)
    3. Message (envoyé par la commande [LOG EVENT](../commands-legacy/log-event.md) uniquement)
    4. PluginMessage
    5. PluginEvent
    6. PluginCommand
    7. PluginCallback
    8. Tâche
    9. Méthode membre (méthode attachée à une collection ou à un objet)

    Lors de la fermeture d'un niveau de pile, les colonnes `operation_type`, `operation` et `operation_parameters` ont la même valeur que le niveau de pile d'ouverture enregistré dans la colonne `stack_opening_sequence_number`. Type d'opération enregistrée. Les valeurs des colonnes 6, 7 et 8 sont répétées dans la ligne du niveau de stack de fermeture. La colonne 10 contient les numéros de séquence d'ouverture du niveau de stack, c'est-à-dire 122 pour la 3e ligne et 121 pour la 4e. | +| 7 | operation | Peut représenter (selon le type d'opération) :
  • un ID de commande de langue (lorsque type=1)
  • un nom de méthode (lorsque type=2)
  • une combinaison de pluginIndex;pluginCommand (lorsque type=4, 5, 6 ou 7). Peut contenir quelque chose comme '3;2'
  • un UUID de task de connexion (lorsque type=8)
  • | +| 8 | operation_parameters | Paramètres passés aux commandes, méthodes ou aux plugins | +| 9 | form_event | Evénement formulaire, le cas échéant ; vide dans les autres cas (par conséquent cette colonne est utilisée lorsque le code est exécuté dans une méthode formulaire ou méthode objet) | +| 10 | stack_opening_sequence_number | Niveaux de fermeture de stacks uniquement : numéro de séquence du niveau d'ouverture de stack correspondant | +| 11 | stack_level_execution_time | Niveaux de fermeture de stacks uniquement : Durée en micro secondes de l'action enregistrée courante (cf. 10e colonne des lignes 123 et 124 dans l'historique ci-dessus) | ## 4DDiagnosticLog.txt -Ce fichier journal enregistre de nombreux événements liés au fonctionnement interne de l'application et est lisible par un humain. You can include custom information in this file using the [LOG EVENT](../commands-legacy/log-event.md) command. +Ce fichier journal enregistre de nombreux événements liés au fonctionnement interne de l'application et est lisible par un humain. Vous pouvez inclure des informations personnalisées dans ce fichier en utilisant la commande [LOG EVENT](../commands-legacy/log-event.md). Pour lancer ce journal : @@ -254,7 +254,7 @@ Les champs suivants sont enregistrés pour chaque évènement : | timestamp | Date et heure au format ISO 8601 (YYYY-MM-DDThh:mm:ss.mmm) | | loggerID | Optionnel | | componentSignature | Optionnel - signature de composant interne | -| messageLevel | Info, Attention, Erreur | +| messageLevel | Trace, Debug, Info, Warning, Error | | message | Description de la saisie de journal | En fonction de l'événement, d'autres champs peuvent également être enregistrés, tels que task, socket, etc. @@ -263,7 +263,7 @@ En fonction de l'événement, d'autres champs peuvent également être enregistr Le fichier *4DDiagnosticLog.txt* peut enregistrer différents niveaux de messages, de `ERROR` (le plus important) à `TRACE` (le moins important). Par défaut, le niveau `INFO` est défini, ce qui signifie que le fichier n'enregistre que les événements importants, y compris les erreurs et les résultats inattendus (voir ci-dessous). -You can select the level of messages using the `Diagnostic log level` selector of the [SET DATABASE PARAMETER](../commands-legacy/set-database-parameter.md) command, depending on your needs. Lorsque vous sélectionnez un niveau, les niveaux supérieurs (qui sont plus importants) sont implicitement sélectionnés également. Les niveaux suivants sont disponibles : +Vous pouvez sélectionner le niveau des messages à l'aide du sélecteur `Diagnostic log level` de la commande [SET DATABASE PARAMETER](../commands-legacy/set-database-parameter.md), en fonction de vos besoins. Lorsque vous sélectionnez un niveau, les niveaux supérieurs (qui sont plus importants) sont implicitement sélectionnés également. Les niveaux suivants sont disponibles : | Constante | Description | Lorsque sélectionné, inclut | | ----------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | @@ -459,11 +459,11 @@ Voici un exemple d'enregistrement ORDA côté serveur : ## 4DTCPLog.txt -This log file records events related to TCP connections. Ces événements comprennent la transmission de données, les erreurs et les informations sur le cycle de vie de la connexion. This log helps developers monitor and debug network activity within their applications. +This log file records events related to TCP connections. Ces événements comprennent la transmission de données, les erreurs et les informations sur le cycle de vie de la connexion. Ce journal aide les développeurs à surveiller et à déboguer l'activité du réseau dans leurs applications. Pour lancer ce journal : -- Use the `SET DATABASE PARAMETER` command: +- Utilisez la commande `SET DATABASE PARAMETER` : ```4d SET DATABASE PARAMETER(TCP log; 1) @@ -481,18 +481,18 @@ Pour lancer ce journal : Les champs suivants sont enregistrés pour chaque évènement : -| Noms des champs | Type | Description | -| --------------- | --------- | ------------------------------------------------------------------------------------------ | -| time | Date/Time | Date and time of the event in ISO 8601 format | -| localPort | Number | Local port used for the connection | -| peerAddress | Text | IP address of the remote peer | -| peerPort | Number | Port of the remote peer | -| protocol | Text | Indicates whether the event is related to `TCP` | -| event | Text | The type of event:`open`, `close`, `error`, `send`, `receive`, or `listen` | -| size | Number | The amount of data sent or received (in bytes), 0 if not applicable | -| excerpt | Number | First 10 bytes of data in hexadecimal format | -| textExcerpt | Text | First 10 bytes of data in text format | -| comment | Text | Additional information about the event, such as error details or encryption status | +| Noms des champs | Type | Description | +| --------------- | --------- | --------------------------------------------------------------------------------------------------------- | +| time | Date/Time | Date et heure de l'événement au format ISO 8601 | +| localPort | Number | Port local utilisé pour la connexion | +| peerAddress | Text | Adresse IP de la machine distante | +| peerPort | Number | Port de la machine distante | +| protocol | Text | Indicates whether the event is related to `TCP` | +| event | Text | The type of event:`open`, `close`, `error`, `send`, `receive`, or `listen` | +| size | Number | Quantité de données envoyées ou reçues (en octets), 0 si non applicable | +| excerpt | Number | Les 10 premiers octets des données au format hexadécimal | +| textExcerpt | Text | Les 10 premiers octets des données en format texte | +| comment | Text | Informations supplémentaires sur l'événement, telles que les détails de l'erreur ou l'état du chiffrement | ## Utilisation d'un fichier de configuration de log @@ -671,9 +671,9 @@ Voici un exemple de fichier de configuration de log : :::note -- The "state" property values are described in the corresponding commands: `[`WEB SET OPTION`](../commands-legacy/web-set-option.md) (`Web log recording`), [`HTTP SET OPTION`](../commands-legacy/http-set-option.md) (`HTTP client log`), [`SET DATABASE PARAMETER`](../commands-legacy/set-database-parameter.md) (`Client Web log recording`, `IMAP Log\\\\\\\\`,...). -- For httpDebugLogs, the "level" property corresponds to the `wdl` constant options described in the [`WEB SET OPTION`](../commands-legacy/web-set-option.md) command. -- For diagnosticLogs, the "level" property corresponds to the `Diagnostic log level` constant values described in the [`SET DATABASE PARAMETER`](../commands-legacy/set-database-parameter.md) command. +- Les valeurs de la propriété "state" sont décrites dans les commandes correspondantes : [`WEB SET OPTION`](../commands-legacy/web-set-option.md) (`Web log recording`), [`HTTP SET OPTION`](../commands-legacy/http-set-option.md) (`HTTP client log`), [`SET DATABASE PARAMETER`](../commands-legacy/set-database-parameter.md) (`Client Web log recording`, `IMAP Log`,...). +- Pour httpDebugLogs, la propriété "level" correspond aux options de la constante `wdl` décrites dans la commande [`WEB SET OPTION`](../commands-legacy/web-set-option.md). +- Pour les diagnosticLogs, la propriété "level" correspond aux valeurs de la constante `Diagnostic log level` décrites dans la commande [`SET DATABASE PARAMETER`](../commands-legacy/set-database-parameter.md). ::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md index f4223ebdc79743..52a27217b0cf34 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md @@ -72,7 +72,7 @@ Lisez [**Les nouveautés de 4D 20 R7**](https://blog.4d.com/fe-whats-new-in-4d-2 - Langage 4D: - Nouvelles commandes : [Process info](../commands/process-info.md), [Session info](../commands/session-info.md), [SET WINDOW DOCUMENT ICON](../commands/set-window-document-icon.md) - Commandes modifiées : [Process activity](../commands/process-activity.md), [Process number](../commands/process-number.md) - - Deprecated commands (replacement): `GET LAST ERROR STACK` ([Last errors](../commands/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) and [#DECLARE/Function](../Concepts/parameters.md#declaring-parameters) declarations). Deprecated commands are prefixed with "\*O\*". + - Deprecated commands (replacement): `GET LAST ERROR STACK` ([Last errors](../commands-legacy/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) and [#DECLARE/Function](../Concepts/parameters.md#declaring-parameters) declarations). Deprecated commands are prefixed with "\*O\*". - 4D Write Pro : - Nouvelle commande : [WP DELETE SECTION](../WritePro/commands/wp-delete-section.md) - Commandes modifiées : [WP DELETE SUBSECTION](../WritePro/commands/wp-delete-subsection.md), [WP RESET ATTRIBUTES](../WritePro/commands/wp-reset-attributes.md) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$queryplan.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$queryplan.md index 0c93508473cdcd..f739c84de154cc 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$queryplan.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$queryplan.md @@ -14,7 +14,7 @@ $queryplan retourne le plan de la requête telle qu'il a été exécuté par 4D | item | Text | Requête exécutée | | subquery | Tableau | S'il existe une sous-requête, un objet supplémentaire contenant une propriété d'élément (comme celle indiquée ci-dessus) | -Pour plus d'informations sur les plans de requête, reportez-vous à [queryPlan ete queryPath](genInfo.md#querypath-and-queryplan). +Pour plus d'informations sur les plans de requête, reportez-vous à [queryPlan et queryPath](genInfo.md#querypath-and-queryplan). ## Exemple diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/genInfo.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/genInfo.md index b42b3183456e7b..70b98cab741ec8 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/genInfo.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/genInfo.md @@ -10,7 +10,7 @@ Vous pouvez obtenir plusieurs informations du serveur REST : ## Catalogue -Use the [`$catalog`]($catalog.md), [`$catalog/\{dataClass\}`]($catalog.md#catalogdataclass), or [`$catalog/$all`]($catalog.md#catalogall) parameters to get the list of [exposed dataclasses and their attributes](configuration.md#exposing-tables-and-fields). +Utilisez les paramètres [`$catalog`]($catalog.md), [`$catalog/\{dataClass\}`]($catalog.md#catalogdataclass) ou [`$catalog/$all`]($catalog.md#catalogall) pour obtenir la liste des [dataclass exposées et de leurs attributs](configuration.md#exposing-tables-and-fields). Pour obtenir la collection de toutes les dataclass exposées avec leurs attributs : @@ -22,7 +22,7 @@ Use the [`$info`]($info.md) parameter to get information about the entity select ## queryPath et queryPlan -Les sélections d'entité générées par les requêtes peuvent avoir les deux propriétés suivantes : `queryPlan` et `queryPath`. To calculate and return these properties, you just need to add [`$queryPlan`]($queryplan.md) and/or [`$queryPath`]($querypath.md) in the REST request. +Les entity selections générées par via des recherches peuvent avoir les deux propriétés suivantes : `queryPlan` et `queryPath`. Pour calculer et renvoyer ces propriétés, il suffit d'ajouter [`$queryPlan`]($queryplan.md) et/ou [`$queryPath`]($querypath.md) dans la requête REST. Par exemple : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20/Debugging/debugLogFiles.md b/i18n/fr/docusaurus-plugin-content-docs/version-20/Debugging/debugLogFiles.md index 077235cdf8890a..e979ab81590f7d 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20/Debugging/debugLogFiles.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20/Debugging/debugLogFiles.md @@ -254,7 +254,7 @@ Les champs suivants sont enregistrés pour chaque évènement : | timestamp | Date et heure au format ISO 8601 (YYYY-MM-DDThh:mm:ss.mmm) | | loggerID | Optionnel | | componentSignature | Optionnel - signature de composant interne | -| messageLevel | Info, Attention, Erreur | +| messageLevel | Trace, Debug, Info, Warning, Error | | message | Description de la saisie de journal | En fonction de l'événement, d'autres champs peuvent également être enregistrés, tels que task, socket, etc. diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/Notes/updates.md b/i18n/ja/docusaurus-plugin-content-docs/current/Notes/updates.md index 163634bd444463..d191f8d8712d67 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/Notes/updates.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/Notes/updates.md @@ -15,6 +15,12 @@ Read [**What’s new in 4D 21**](https://blog.4d.com/en-whats-new-in-4d-21/), th - New "trim" commands to remove leading and trailing spaces from a string: [`Trim`](../commands/trim.md), [`Trim start`](../commands/trim-start.md), and [`Trim end`](../commands/trim-end.md). - [`Num`](../commands/num.md) and [`String`](../commands/string.md) commands have been updated to support conversions in different bases (radix). +#### 動作の変更 + +- Web services (SOAP): when [scalable sessions](../WebServer/sessions.md#enabling-web-sessions) are enabled, web services now run in [**preemptive processes**](../Develop/preemptive.md) in compiled mode. Make sure your SOAP code is thread-safe. +- Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. No specific processing is done on these URLs anymore. +- Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). + ## 4D 20 R10 [**4D 20 R10の新機能**](https://blog.4d.com/en-whats-new-in-4d-20-R10/) 4D 20 R10 の新機能と拡張機能をすべてリストアップしたブログ記事です。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/orda-events.md b/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/orda-events.md index f17589a199ad21..f72873cf8a5d0a 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/orda-events.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/orda-events.md @@ -5,9 +5,9 @@ title: ORDA Events
    履歴 -| リリース | 内容 | -| ------ | -- | -| 20 R10 | 追加 | +| リリース | 内容 | +| ------ | ------------------- | +| 20 R10 | touched event added |
    @@ -93,16 +93,12 @@ This event is triggered each time a value is modified in the entity. This event is triggered as soon as the 4D Server / 4D engine can detect a modification of attribute value which can be due to the following actions: - in **client/server with the [`local` keyword](../ORDA/ordaClasses.md#local-functions)** or in **4D single-user**: - - the user sets a value on a 4D form, - - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). + - the user sets a value on a 4D form, + - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). - in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). - in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. - with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) -:::note - -::: - The function receives an [*event* object](#event-parameter) as parameter. If this event [throws](../commands-legacy/throw.md) an error, it will not stop the undergoing action. @@ -154,6 +150,72 @@ Function event touched arrivalDate($event : Object) ``` +#### Example 3 (diagram): Client/server with the `local` keyword: + +```mermaid + +sequenceDiagram + + Client->>+Server: $people:=ds.People.all().first() + + Client->>+Client: $people.lastname:="Brown" + Note over Client: local Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + +Note over Client:$people.lastname is uppercased + + Client->>+Server: $people.apply() + + Note over Server: The $people entity is received with the lastname attribute uppercased + +``` + +#### Example 4 (diagram): Client/server without the `local` keyword + +```mermaid + +sequenceDiagram + + Client->>+Server: $people:=ds.People.all().first() + + Client->>+Client: $people.lastname:="Brown" + + Note over Client:$people.lastname is not uppercased + + Client->>+Server: $people.apply() + + Note over Server: Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + + Server-->>-Client: The $people entity is updated + + Note over Client:$people.lastname is uppercased + + +``` + +#### Example 5 (diagram): Qodly application + +```mermaid + +sequenceDiagram + +Qodly page->>+ Server: Get an entity into the People Qodly source + +Qodly page->>+Qodly page: The user updates People.lastname + +Note over Qodly page: The People Qodly source lastname attribute is not uppercased + +Qodly page->>+ Server: Function call People.apply() + +Note over Server: Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + +Server-->>-Qodly page: The People Qodly source is updated +Note over Qodly page: The People Qodly source lastname attribute is uppercased + + +``` + + + diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md b/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md index f25d304321ab1e..d06def3e344611 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md @@ -360,7 +360,7 @@ Since functions such as [`dataClass.fromCollection()`](../API/DataClassClass.md# ::: -#### 例題 +#### 例題 1 ```4d @@ -372,6 +372,83 @@ Class constructor() ``` +#### Example 2 (diagram): Client/server + +```mermaid + +sequenceDiagram + +Client->>+Client: Form.product:=ds.Products.new() + +Note over Client: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Note over Client: Form.product.creationDate is "06/17/25"
    Form.product.comment is "Automatic comment" + +Client->>+Server: Form.product.save() + +Server-->>-Client: Success + + +``` + +#### Example 3 (diagram): Qodly - Standard action + +```mermaid + +sequenceDiagram + + Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source) + + Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source + + Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + + Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled + + Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Automatic comment" + +``` + +#### Example 4 (diagram): Qodly - Standard action and update value on the newly created entity + +```mermaid + +sequenceDiagram + +Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source) + +Qodly page->>+ Qodly page: Update product comment with "Front end comment" + +Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source + +Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Note over Server: The comment attribute is set with "Front end comment" + +Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled + +Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Front end comment" + +``` + +#### Example 5 (diagram): Qodly - Entity instanciated in a function + +```mermaid + +sequenceDiagram + +Qodly page->>+Server: product Qodly source := Function call Products.createNew() + +Note over Server: CreateNew() function on the Products class
    return This.new() + +Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Server-->>-Qodly page: The product entity creationDate and comment attributes are filled + +Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Automatic comment" + +``` + ## 計算属性 ### 概要 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/authentication.md b/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/authentication.md index 6f4079ecefa74b..e1c0a440a5f803 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/authentication.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/authentication.md @@ -76,7 +76,7 @@ BASICモードと同様に、ユーザーは接続時に自分の名前とパス つまり、`On Web Authentication` データベースメソッドは次の場合に呼び出されます: - Webサーバーが、存在しないリソースを要求する URL を受信した場合 -- Webサーバーが `4DACTION/`, `4DCGI/` ... で始まる URL を受信した場合 +- when the web server receives a URL beginning with `4DACTION/` - Webサーバーがルートアクセス URL を受信したが、ストラクチャー設定または [`WEB SET HOME PAGE`](../commands-legacy/web-set-home-page.md) コマンドでホームページが設定されていないとき - Webサーバーが、セミダイナミックページ内でコードを実行するタグ (`4DSCRIPT`など) を処理した場合。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md b/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md index 25959f9a5d4fb9..d1b958ccbe0295 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md @@ -26,10 +26,11 @@ title: プリエンプティブWebプロセスの使用 - REST サーバー: REST で呼び出された [ORDA データモデルクラス関数](../REST/ClassFunctions.md) を処理します - Web サーバー: [Web テンプレート](templates.md)、[4DACTION とデータベースメソッド](httpRequests.md) を処理します - Web サービスサーバー: SOAPリクエストを処理します -- ***Web設定*** とは、プリエンプティブモード実行が設定によることを表します: - - when [**Scalable sessions**](sessions.md#enabling-web-sessions) option is selected, the preemptive mode is automatically used for web processes. - - それ以外の場合は、[**プリエンプティブプロセスを使用**](webServerConfig.md#プリエンプティブプロセスを使用) オプションが考慮されます。 - - Webサービスプロセス (サーバーまたはクライアント) のプリエンプティブモードは、メソッドレベルでサポートされています。 公開済みの SOAPサーバーメソッド ([4Dで Web サービスを公開する](https://doc.4d.com/4Dv20/4D/20.2/Publishing-a-Web-Service-with-4D.300-6750334.ja.html) 参照) あるいはプロキシクライアントメソッド ([4Dから Web サービスへサブスクライブする](https://doc.4d.com/4Dv20/4D/20.2/Subscribing-to-a-Web-Service-in-4D.300-6750336.ja.html) 参照) の "プリエンプティブプロセスで実行可能" プロパティをチェックし、メソッドがコンパイラーによってスレッドセーフと確認されるようにします。 +- ***web setting*** means that the preemptive mode depends on the [**scalable sessions**](sessions.md#enabling-web-sessions) status: + - if scalable sessions are enabled, the preemptive mode is automatically used for web and web service processes. + - if scalable sessions are not enabled: + - for web processes, the [**Use preemptive processes**](webServerConfig.md#use-preemptive-processes) option is taken into account. + - for web service processes (server or client), preemptive mode is supported at method level. ## スレッドセーフなWebサーバーコードの書き方 @@ -51,7 +52,7 @@ Webプロセスをプリエンプティモードで実行するには、Webサ - REST で呼び出された [ORDA データモデルクラス関数](../REST/ClassFunctions.md) -これらそれぞれのメソッドとコードの部分について、スレッドセーフのルールが遵守されているかをコンパイラーがチェックし、問題があった場合にはエラーを返します。 スレッドセーフルールについての詳細は、[4Dランゲージリファレンス](https://doc.4d.com) マニュアルの *プロセス* の章の *スレッドセーフなメソッドの書き方* の段落を参照ください。 +For each of these methods and code parts, the compiler will check if the [thread-safety rules are respected](../Develop/preemptive.md#writing-a-thread-safe-method), and will return errors in case of issues. ## 4D Webコードのスレッドセーフティ @@ -73,7 +74,6 @@ Web関連のデータベースメソッドもスレッドセーフであり、 以下の 4D WebサーバーURLはスレッドセーフであり、プリエンプティモードで使用可能です: - *4daction/* (呼び出されるプロジェクトメソッドもまたスレッドセーフでなければいけません) -- *4dcgi/* (呼び出されるデータベースメソッドもまたスレッドセーフでなければいけません) - *4dwebtest/* - *4dblank/* - *4dstats/* diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/sessions.md b/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/sessions.md index 44168fc42976a3..e948d317edc2f3 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/sessions.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/sessions.md @@ -16,7 +16,7 @@ Webセッションでは、以下のことが可能です: Webセッションは次のものに使用されます: -- HTTPリクエストを送信する [Webアプリケーション](gettingStarted.md) +- [Web applications](gettingStarted.md) sending http requests (including [SOAP Web services](../commands/theme/Web_Services_Server.md) and [/4DACTION](../WebServer/httpRequests.md#4daction) requests), - [リモートデータストア](../ORDA/remoteDatastores.md) や [Qodlyフォーム](qodly-studio.md) が使用する [REST API](../REST/authUsers.md) への呼び出し ## Webセッションの有効化 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md b/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md index f179d82b7712a1..57e4daafbdb3bb 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md @@ -603,10 +603,6 @@ User-Agent: 以下の設定は現在もサポートされていますが、廃止予定の機能や技術に依存しています。 通常はデフォルト値のままにしておくことが推奨されます。 -#### "4DSYNC" URLを使用したデータベースアクセスを許可 - -このオプションを使用して、廃止予定の */4DSYNC* URL による HTTP同期サポートを制御します。 - #### セッション IPアドレス検証 > [スケーラブルセッションモード](WebServer/sessions.md) の場合には、このオプションは利用できません (検証はおこなわれません)。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/commands/process-activity.md b/i18n/ja/docusaurus-plugin-content-docs/current/commands/process-activity.md index f659f5c155545c..055c0a0017931a 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/commands/process-activity.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/commands/process-activity.md @@ -18,9 +18,10 @@ displayed_sidebar: docs
    履歴 -| リリース | 内容 | -| ----- | ------------------- | -| 20 R7 | *sessionID* 引数のサポート | +| リリース | 内容 | +| ----- | ---------------------------- | +| 20 R7 | *sessionID* 引数のサポート | +| 21 | Support of web user sessions |
    @@ -54,10 +55,9 @@ displayed_sidebar: docs "sessions" プロパティには、サーバーで実行中の全てのユーザーセッション を記述するオブジェクトのコレクションが格納されます。 セッションオブジェクトのプロパティの詳細については、[`Session info`](session-info.md) コマンドを参照してください。 -:::note 注記 +:::note -- セッションのオブジェクトは、[Session](session.md) コマンドを使用することで取得できます。 -- `Process activity` はリモートクライアントセッション、ストアドプロシージャーセッションおよびREST セッションを返しますが、Web セッションは返しません(制約)。 +セッションのオブジェクトは、[Session](session.md) コマンドを使用することで取得できます。 ::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/settings/web.md b/i18n/ja/docusaurus-plugin-content-docs/current/settings/web.md index c966d8999a1149..e26af5b79a25f9 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/settings/web.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/settings/web.md @@ -33,10 +33,6 @@ HTTP接続を受け付ける IP (TCP) ポート番号。 [HTTP ポート](../Web TLS (HTTPSプロトコル) を使用したセキュアな HTTP接続に対して Webサーバーが使用する TCP/IPポート番号を指定できます。 [HTTPS ポート](../WebServer/webServerConfig.md#https-ポート) 参照 -#### "4DSYNC" URLを使用したデータベースアクセスを許可 - -*互換性に関する注記*: このオプションは [廃止予定](../WebServer/webServerConfig.md#廃止予定の設定) です。 今後、HTTP を介したデータベースアクセスには ORDA のリモートデータストア機能と RESTリクエストの使用が推奨されます。 - ### パス #### デフォルトHTMLルート @@ -112,7 +108,7 @@ Webプロセスの最大同時接続数の厳格な上限です。 [最大同時 コンパイル済みアプリケーションにおいてプリエンプティブWebプロセスを有効化します。 **プリエンプティブプロセスを使用** が選択されているとき、Web関連のコード (4D グと Webデータベースメソッドを含む) は、コンパイル時にプリエンティブな実行が可能かどうかが評価されます。 詳細な情報については、[プリエンプティブWebプロセスの使用](../WebServer/preemptiveWeb.md) を参照ください。 -> このオプションは スケーラブルセッション、RESTプロセス (コンパイル済みモード)、および Webサービスプロセス (サーバーあるいはクライアント) には適用されません。 See [Enabling the preemptive mode for the web server](../WebServer/webServerConfig.md#use-preemptive-processes). +> このオプションは スケーラブルセッション、RESTプロセス (コンパイル済みモード)、および Webサービスプロセス (サーバーあるいはクライアント) には適用されません。 See [Enabling the preemptive mode for the web server](../WebServer/webServerConfig.md#use-preemptive-processes). #### 非動作プロセスのタイムアウト diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md index f5409c8a6df10e..f72873cf8a5d0a 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md @@ -5,9 +5,9 @@ title: ORDA Events
    履歴 -| リリース | 内容 | -| ------ | -- | -| 20 R10 | 追加 | +| リリース | 内容 | +| ------ | ------------------- | +| 20 R10 | touched event added |
    @@ -37,11 +37,11 @@ You can also define the same event at both attribute and entity levels. The attr Usually, ORDA events are executed on the server. -In client/server configuration however, the `touched()` event function can be executed on the **server or the client**, depending on the use of [`local`](../ORDA/ordaClasses.md#local-functions) keyword. A specific implementation on the client side allows the triggering of the event on the client. +In client/server configuration however, the `touched()` event function can be executed on the **server or the client**, depending on the use of [`local`](./ordaClasses.md#local-functions) keyword. A specific implementation on the client side allows the triggering of the event on the client. :::note -ORDA [`constructor()`](../ORDA/ordaClasses.md#class-constructor) functions are always executed on the client. +ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always executed on the client. ::: @@ -93,16 +93,12 @@ This event is triggered each time a value is modified in the entity. This event is triggered as soon as the 4D Server / 4D engine can detect a modification of attribute value which can be due to the following actions: - in **client/server with the [`local` keyword](../ORDA/ordaClasses.md#local-functions)** or in **4D single-user**: - - the user sets a value on a 4D form, - - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). + - the user sets a value on a 4D form, + - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). - in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). - in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. - with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) -:::note - -::: - The function receives an [*event* object](#event-parameter) as parameter. If this event [throws](../commands-legacy/throw.md) an error, it will not stop the undergoing action. @@ -154,6 +150,72 @@ Function event touched arrivalDate($event : Object) ``` +#### Example 3 (diagram): Client/server with the `local` keyword: + +```mermaid + +sequenceDiagram + + Client->>+Server: $people:=ds.People.all().first() + + Client->>+Client: $people.lastname:="Brown" + Note over Client: local Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + +Note over Client:$people.lastname is uppercased + + Client->>+Server: $people.apply() + + Note over Server: The $people entity is received with the lastname attribute uppercased + +``` + +#### Example 4 (diagram): Client/server without the `local` keyword + +```mermaid + +sequenceDiagram + + Client->>+Server: $people:=ds.People.all().first() + + Client->>+Client: $people.lastname:="Brown" + + Note over Client:$people.lastname is not uppercased + + Client->>+Server: $people.apply() + + Note over Server: Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + + Server-->>-Client: The $people entity is updated + + Note over Client:$people.lastname is uppercased + + +``` + +#### Example 5 (diagram): Qodly application + +```mermaid + +sequenceDiagram + +Qodly page->>+ Server: Get an entity into the People Qodly source + +Qodly page->>+Qodly page: The user updates People.lastname + +Note over Qodly page: The People Qodly source lastname attribute is not uppercased + +Qodly page->>+ Server: Function call People.apply() + +Note over Server: Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + +Server-->>-Qodly page: The People Qodly source is updated +Note over Qodly page: The People Qodly source lastname attribute is uppercased + + +``` + + + diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md index f25d304321ab1e..d06def3e344611 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md @@ -360,7 +360,7 @@ Since functions such as [`dataClass.fromCollection()`](../API/DataClassClass.md# ::: -#### 例題 +#### 例題 1 ```4d @@ -372,6 +372,83 @@ Class constructor() ``` +#### Example 2 (diagram): Client/server + +```mermaid + +sequenceDiagram + +Client->>+Client: Form.product:=ds.Products.new() + +Note over Client: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Note over Client: Form.product.creationDate is "06/17/25"
    Form.product.comment is "Automatic comment" + +Client->>+Server: Form.product.save() + +Server-->>-Client: Success + + +``` + +#### Example 3 (diagram): Qodly - Standard action + +```mermaid + +sequenceDiagram + + Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source) + + Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source + + Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + + Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled + + Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Automatic comment" + +``` + +#### Example 4 (diagram): Qodly - Standard action and update value on the newly created entity + +```mermaid + +sequenceDiagram + +Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source) + +Qodly page->>+ Qodly page: Update product comment with "Front end comment" + +Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source + +Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Note over Server: The comment attribute is set with "Front end comment" + +Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled + +Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Front end comment" + +``` + +#### Example 5 (diagram): Qodly - Entity instanciated in a function + +```mermaid + +sequenceDiagram + +Qodly page->>+Server: product Qodly source := Function call Products.createNew() + +Note over Server: CreateNew() function on the Products class
    return This.new() + +Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Server-->>-Qodly page: The product entity creationDate and comment attributes are filled + +Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Automatic comment" + +``` + ## 計算属性 ### 概要 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md index 6e00dd0dec0a95..2ce5d432515df8 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md @@ -73,7 +73,7 @@ title: リリースノート - 4Dランゲージ: - 新コマンド: [Process info](../commands/process-info.md)、 [Session info](../commands/session-info.md)、 [SET WINDOW DOCUMENT ICON](../commands/set-window-document-icon.md) - 変更されたコマンド: [Process activity](../commands/process-activity.md)、 [Process number](../commands/process-number.md) - - Deprecated commands (replacement): `GET LAST ERROR STACK` ([Last errors](../commands/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) and [#DECLARE/Function](../Concepts/parameters.md#declaring-parameters) declarations). Deprecated commands are prefixed with "\*O\*". + - Deprecated commands (replacement): `GET LAST ERROR STACK` ([Last errors](../commands-legacy/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) and [#DECLARE/Function](../Concepts/parameters.md#declaring-parameters) declarations). Deprecated commands are prefixed with "\*O\*". - 4D Write Pro: - 新コマンド: [WP DELETE SECTION](../WritePro/commands/wp-delete-section.md) - 変更されたコマンド: [WP DELETE SUBSECTION](../WritePro/commands/wp-delete-subsection.md) および [WP RESET ATTRIBUTES](../WritePro/commands/wp-reset-attributes.md) diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/Notes/updates.md b/i18n/pt/docusaurus-plugin-content-docs/current/Notes/updates.md index 0fc157d014910f..583583337abe14 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/Notes/updates.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/Notes/updates.md @@ -15,6 +15,12 @@ Leia [**O que há de novo no 4D 21**](https://blog.4d.com/en-whats-new-in-4d-21/ - New "trim" commands to remove leading and trailing spaces from a string: [`Trim`](../commands/trim.md), [`Trim start`](../commands/trim-start.md), and [`Trim end`](../commands/trim-end.md). - [`Num`](../commands/num.md) and [`String`](../commands/string.md) commands have been updated to support conversions in different bases (radix). +#### Mudanças de comportamento + +- Web services (SOAP): when [scalable sessions](../WebServer/sessions.md#enabling-web-sessions) are enabled, web services now run in [**preemptive processes**](../Develop/preemptive.md) in compiled mode. Make sure your SOAP code is thread-safe. +- Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. No specific processing is done on these URLs anymore. +- Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). + ## 4D 20 R10 Leia [**O que há de novo no 4D 20 R10**](https://blog.4d.com/en-whats-new-in-4d-20-R10/), o post do blog que lista todos os novos recursos e aprimoramentos em 4D 20 R10. diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/orda-events.md b/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/orda-events.md index 28e0bbd1257e01..170e53bd05ca97 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/orda-events.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/orda-events.md @@ -5,9 +5,9 @@ title: ORDA Events
    História -| Release | Mudanças | -| ------- | ---------- | -| 20 R10 | Adicionado | +| Release | Mudanças | +| ------- | ------------------- | +| 20 R10 | touched event added |
    @@ -93,16 +93,12 @@ This event is triggered each time a value is modified in the entity. This event is triggered as soon as the 4D Server / 4D engine can detect a modification of attribute value which can be due to the following actions: - in **client/server with the [`local` keyword](../ORDA/ordaClasses.md#local-functions)** or in **4D single-user**: - - the user sets a value on a 4D form, - - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). + - the user sets a value on a 4D form, + - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). - in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). - in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. - with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) -:::note - -::: - The function receives an [*event* object](#event-parameter) as parameter. If this event [throws](../commands-legacy/throw.md) an error, it will not stop the undergoing action. @@ -154,6 +150,72 @@ Function event touched arrivalDate($event : Object) ``` +#### Example 3 (diagram): Client/server with the `local` keyword: + +```mermaid + +sequenceDiagram + + Client->>+Server: $people:=ds.People.all().first() + + Client->>+Client: $people.lastname:="Brown" + Note over Client: local Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + +Note over Client:$people.lastname is uppercased + + Client->>+Server: $people.apply() + + Note over Server: The $people entity is received with the lastname attribute uppercased + +``` + +#### Example 4 (diagram): Client/server without the `local` keyword + +```mermaid + +sequenceDiagram + + Client->>+Server: $people:=ds.People.all().first() + + Client->>+Client: $people.lastname:="Brown" + + Note over Client:$people.lastname is not uppercased + + Client->>+Server: $people.apply() + + Note over Server: Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + + Server-->>-Client: The $people entity is updated + + Note over Client:$people.lastname is uppercased + + +``` + +#### Example 5 (diagram): Qodly application + +```mermaid + +sequenceDiagram + +Qodly page->>+ Server: Get an entity into the People Qodly source + +Qodly page->>+Qodly page: The user updates People.lastname + +Note over Qodly page: The People Qodly source lastname attribute is not uppercased + +Qodly page->>+ Server: Function call People.apply() + +Note over Server: Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + +Server-->>-Qodly page: The People Qodly source is updated +Note over Qodly page: The People Qodly source lastname attribute is uppercased + + +``` + + + diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md b/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md index 71e56306642d26..66862732f2350b 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md @@ -351,7 +351,7 @@ Since functions such as [`dataClass.fromCollection()`](../API/DataClassClass.md# ::: -#### Exemplo +#### Exemplo 1 ```4d @@ -363,6 +363,83 @@ Class constructor() ``` +#### Example 2 (diagram): Client/server + +```mermaid + +sequenceDiagram + +Client->>+Client: Form.product:=ds.Products.new() + +Note over Client: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Note over Client: Form.product.creationDate is "06/17/25"
    Form.product.comment is "Automatic comment" + +Client->>+Server: Form.product.save() + +Server-->>-Client: Success + + +``` + +#### Example 3 (diagram): Qodly - Standard action + +```mermaid + +sequenceDiagram + + Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source) + + Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source + + Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + + Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled + + Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Automatic comment" + +``` + +#### Example 4 (diagram): Qodly - Standard action and update value on the newly created entity + +```mermaid + +sequenceDiagram + +Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source) + +Qodly page->>+ Qodly page: Update product comment with "Front end comment" + +Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source + +Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Note over Server: The comment attribute is set with "Front end comment" + +Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled + +Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Front end comment" + +``` + +#### Example 5 (diagram): Qodly - Entity instanciated in a function + +```mermaid + +sequenceDiagram + +Qodly page->>+Server: product Qodly source := Function call Products.createNew() + +Note over Server: CreateNew() function on the Products class
    return This.new() + +Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Server-->>-Qodly page: The product entity creationDate and comment attributes are filled + +Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Automatic comment" + +``` + ## Atributos calculados ### Visão Geral diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/authentication.md b/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/authentication.md index 6f091440817408..cdc5f3d9be4117 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/authentication.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/authentication.md @@ -76,7 +76,7 @@ El método base `On Web Authentication` se llama automáticamente cuando una sol Por tanto, se llama al método base `On Web Authentication`: - quando o servidor da Web recebe um URL solicitando um recurso que não existe -- cuando el servidor web recibe una URL que empieza por `4DACTION/`, `4DCGI/`... +- when the web server receives a URL beginning with `4DACTION/` - when the web server receives a root access URL and no home page has been set in the Settings or by means of the [`WEB SET HOME PAGE`](../commands-legacy/web-set-home-page.md) command - cuando el servidor web procesa una etiqueta que ejecuta código (por ejemplo, `4DSCRIPT`) en una página semidinámica. diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md b/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md index 2d90d997d00d53..e4a2ea089f7f6f 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md @@ -26,10 +26,11 @@ A tabela a seguir indica se o modo preventivo está utilizado ou está disponív - Servidor REST: gestiona las [funciones de clase del modelo de datos ORDA](../REST/ClassFunctions.md) - Servidor web: maneja las [plantillas web](templates.md), [4DACTION y los métodos base](httpRequests.md) - Servidor de serviços Web: trata dos pedidos SOAP -- ***web setting*** significa que el modo apropiativo depende de un valor de configuración: - - when [**Scalable sessions**](sessions.md#enabling-web-sessions) option is selected, the preemptive mode is automatically used for web processes. - - caso contrário, a opção [**Usar processos preventivos**](webServerConfig.md#use-preemptive-processes) é tida em conta. - - sobre processos de serviço Web (servidor ou cliente), modo preventivo é suportado no nível do método. You just have to select "Can be run in preemptive processes" property for published SOAP server methods (see [Publishing a Web Service with 4D](https://doc.4d.com/4Dv20/4D/20.2/Publishing-a-Web-Service-with-4D.300-6750334.en.html)) or proxy client methods (see [Subscribing to a Web Service in 4D](https://doc.4d.com/4Dv20/4D/20.2/Subscribing-to-a-Web-Service-in-4D.300-6750336.en.html)) and make sure they are confirmed thread-safe by the compiler. +- ***web setting*** means that the preemptive mode depends on the [**scalable sessions**](sessions.md#enabling-web-sessions) status: + - if scalable sessions are enabled, the preemptive mode is automatically used for web and web service processes. + - if scalable sessions are not enabled: + - for web processes, the [**Use preemptive processes**](webServerConfig.md#use-preemptive-processes) option is taken into account. + - for web service processes (server or client), preemptive mode is supported at method level. ## Escrever código servidor Web hilo seguro @@ -51,7 +52,7 @@ Todo o código 4D executado pelo servidor deve ser hilo seguro se você quiser q - [funciones de clase del modelo de datos ORDA](../REST/ClassFunctions.md) llamadas vía REST -Para cada um desses métodos e partes de código, o compilador irá verificar se as regras de segurança de threads são respeitadas, e retornará erros em caso de problemas. Para más información sobre las reglas hilo seguro, consulte el párrafo *Escribir un método hilo seguro* en el capítulo *Procesos* del manual de [Lenguaje 4D](https://doc.4d.com). +For each of these methods and code parts, the compiler will check if the [thread-safety rules are respected](../Develop/preemptive.md#writing-a-thread-safe-method), and will return errors in case of issues. ## Código web 4D hilo seguro @@ -73,7 +74,6 @@ Obviamente, o código executado por esses métodos também deve ser hilo seguro. As seguintes URLs Web Server 4D são hilo seguro e podem ser usadas em modo preventivo: - *4daction/* (el método proyecto llamado también debe ser hilo seguro) -- *4dcgi/* (los métodos base llamados también deben ser hilo seguro) - *4dwebtest/* - *4dblank/* - *4dstats/* diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/sessions.md b/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/sessions.md index 255b2f823373ae..9833d1bc544197 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/sessions.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/sessions.md @@ -16,7 +16,7 @@ As sessões Web permitem: As sessões Web são usadas para: -- [Aplicaciones web](gettingStarted.md) que envían peticiones http, +- [Web applications](gettingStarted.md) sending http requests (including [SOAP Web services](../commands/theme/Web_Services_Server.md) and [/4DACTION](../WebServer/httpRequests.md#4daction) requests), - calls to the [REST API](../REST/authUsers.md), which are used by [remote datastores](../ORDA/remoteDatastores.md) and [Qodly forms](qodly-studio.md). ## Activando sessões web diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md b/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md index 8918d10a204672..835c154a309971 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md @@ -599,10 +599,6 @@ This option enables the preemptive mode for your application's web server code w As configurações a seguir ainda são compatíveis, mas dependem de recursos ou tecnologias obsoletos. Em geral, é recomendável manter os valores padrão. -#### Permitir acesso ao banco de dados através de URLs 4DSYNC - -Essa opção controla o suporte de solicitações de sincronização HTTP que contêm URLs obsoletos */4DSYNC*. - #### Validação do endereço IP da sessão > This option is not not available in [scalable sessions mode](WebServer/sessions.md) (there is no validation). diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/commands/process-activity.md b/i18n/pt/docusaurus-plugin-content-docs/current/commands/process-activity.md index 8e81796047448e..40672a6e1f8711 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/commands/process-activity.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/commands/process-activity.md @@ -21,6 +21,7 @@ displayed_sidebar: docs | Release | Mudanças | | ------- | -------------------------------- | | 20 R7 | Suporte do parâmetro *sessionID* | +| 21 | Support of web user sessions | @@ -54,10 +55,9 @@ Quando executado em 4D em modo remoto ou local, `Processar atividade` sempre ret A propriedade "sessões" contém uma coleção de objetos descrevendo todas as sessões em execução no servidor. Para obter uma descrição das propriedades do objeto de sessão, consulte o comando [`Session info`](session-info.md). -:::note Notes +:::note -- Você pode obter o objeto de uma sessão usando o comando [Session](session.md). -- 'Process ativity' retorna sessões de cliente remoto, sessão de procedimento armazenado e sessões repouso, mas não sessões Web (limitação). +Você pode obter o objeto de uma sessão usando o comando [Session](session.md). ::: diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/settings/web.md b/i18n/pt/docusaurus-plugin-content-docs/current/settings/web.md index 684ecf4fe98d3e..88ce493d04c2ab 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/settings/web.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/settings/web.md @@ -33,10 +33,6 @@ Indica se o servidor web vai ou não aceitar conexões seguras. Ver [Ativar HTTP Permite modificar o número da porta TCP/IP usada pelo servidor Web para as conexões HTTP seguras sobre TLS (protocolo HTTPS). Ver [Puerto HTTPS](../WebServer/webServerConfig.md#https-port). -#### Permitir acesso ao banco de dados através de URLs 4DSYNC - -*Nota de compatibilidade*: Essa opção está [obsoleta](../WebServer/webServerConfig.md#deprecated-settings). Para acesso ao banco de dados através de HTTP, agora é recomendado usar as funcionalidades de armazenamento remoto do ORDA e solicitações REST. - ### Caminhos #### Raiz HTML predefinida @@ -112,7 +108,7 @@ Não disponível com [sessões escaláveis](../WebServer/sessions.md). Permite processos web preemptivos nas suas aplicações compiladas. Quando **usar processos preventivos** for selecionado, A elegibilidade de seu código relacionado à Web (incluindo tags 4D e métodos de banco de dados web) para a execução preventiva será avaliada durante a compilação. Para mais informações, consulte [Utilizando processos Web preemptivos](../WebServer/preemptiveWeb.md). -> Essa opção não se aplica a sessões dimensionáveis, processos REST (modo compilado) e processos de serviço Web (servidor ou cliente). Consulte [Ativação do modo preemptivo para o servidor Web](../WebServer/webServerConfig.md#use-preemptive-processes). +> Essa opção não se aplica a sessões dimensionáveis, processos REST (modo compilado) e processos de serviço Web (servidor ou cliente). Consulte [Ativação do modo preemptivo para o servidor Web](../WebServer/webServerConfig.md#use-preemptive-processes). #### Tempo limite do processo inativo diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md index 30a68615fc7463..170e53bd05ca97 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md @@ -5,9 +5,9 @@ title: ORDA Events
    História -| Release | Mudanças | -| ------- | ---------- | -| 20 R10 | Adicionado | +| Release | Mudanças | +| ------- | ------------------- | +| 20 R10 | touched event added |
    @@ -37,11 +37,11 @@ You can also define the same event at both attribute and entity levels. The attr Usually, ORDA events are executed on the server. -In client/server configuration however, the `touched()` event function can be executed on the **server or the client**, depending on the use of [`local`](../ORDA/ordaClasses.md#local-functions) keyword. A specific implementation on the client side allows the triggering of the event on the client. +In client/server configuration however, the `touched()` event function can be executed on the **server or the client**, depending on the use of [`local`](./ordaClasses.md#local-functions) keyword. A specific implementation on the client side allows the triggering of the event on the client. :::note -ORDA [`constructor()`](../ORDA/ordaClasses.md#class-constructor) functions are always executed on the client. +ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always executed on the client. ::: @@ -93,16 +93,12 @@ This event is triggered each time a value is modified in the entity. This event is triggered as soon as the 4D Server / 4D engine can detect a modification of attribute value which can be due to the following actions: - in **client/server with the [`local` keyword](../ORDA/ordaClasses.md#local-functions)** or in **4D single-user**: - - the user sets a value on a 4D form, - - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). + - the user sets a value on a 4D form, + - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). - in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). - in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. - with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) -:::note - -::: - The function receives an [*event* object](#event-parameter) as parameter. If this event [throws](../commands-legacy/throw.md) an error, it will not stop the undergoing action. @@ -154,6 +150,72 @@ Function event touched arrivalDate($event : Object) ``` +#### Example 3 (diagram): Client/server with the `local` keyword: + +```mermaid + +sequenceDiagram + + Client->>+Server: $people:=ds.People.all().first() + + Client->>+Client: $people.lastname:="Brown" + Note over Client: local Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + +Note over Client:$people.lastname is uppercased + + Client->>+Server: $people.apply() + + Note over Server: The $people entity is received with the lastname attribute uppercased + +``` + +#### Example 4 (diagram): Client/server without the `local` keyword + +```mermaid + +sequenceDiagram + + Client->>+Server: $people:=ds.People.all().first() + + Client->>+Client: $people.lastname:="Brown" + + Note over Client:$people.lastname is not uppercased + + Client->>+Server: $people.apply() + + Note over Server: Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + + Server-->>-Client: The $people entity is updated + + Note over Client:$people.lastname is uppercased + + +``` + +#### Example 5 (diagram): Qodly application + +```mermaid + +sequenceDiagram + +Qodly page->>+ Server: Get an entity into the People Qodly source + +Qodly page->>+Qodly page: The user updates People.lastname + +Note over Qodly page: The People Qodly source lastname attribute is not uppercased + +Qodly page->>+ Server: Function call People.apply() + +Note over Server: Function event touched lastname($event : Object)
    This.lastname:=Uppercase(This.lastname) + +Server-->>-Qodly page: The People Qodly source is updated +Note over Qodly page: The People Qodly source lastname attribute is uppercased + + +``` + + + diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md index 71e56306642d26..66862732f2350b 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md @@ -351,7 +351,7 @@ Since functions such as [`dataClass.fromCollection()`](../API/DataClassClass.md# ::: -#### Exemplo +#### Exemplo 1 ```4d @@ -363,6 +363,83 @@ Class constructor() ``` +#### Example 2 (diagram): Client/server + +```mermaid + +sequenceDiagram + +Client->>+Client: Form.product:=ds.Products.new() + +Note over Client: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Note over Client: Form.product.creationDate is "06/17/25"
    Form.product.comment is "Automatic comment" + +Client->>+Server: Form.product.save() + +Server-->>-Client: Success + + +``` + +#### Example 3 (diagram): Qodly - Standard action + +```mermaid + +sequenceDiagram + + Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source) + + Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source + + Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + + Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled + + Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Automatic comment" + +``` + +#### Example 4 (diagram): Qodly - Standard action and update value on the newly created entity + +```mermaid + +sequenceDiagram + +Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source) + +Qodly page->>+ Qodly page: Update product comment with "Front end comment" + +Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source + +Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Note over Server: The comment attribute is set with "Front end comment" + +Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled + +Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Front end comment" + +``` + +#### Example 5 (diagram): Qodly - Entity instanciated in a function + +```mermaid + +sequenceDiagram + +Qodly page->>+Server: product Qodly source := Function call Products.createNew() + +Note over Server: CreateNew() function on the Products class
    return This.new() + +Note over Server: Class constructor
    This.creationDate:=Current date()
    This.comment:="Automatic comment" + +Server-->>-Qodly page: The product entity creationDate and comment attributes are filled + +Note over Qodly page: product.creationDate is "06/17/25"
    and product.comment is "Automatic comment" + +``` + ## Atributos calculados ### Visão Geral diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md index d47ea2bdb4204c..c48bf98525b7ec 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md @@ -72,7 +72,7 @@ Leia [**O que há de novo no 4D 20 R7**](https://blog.4d.com/en-whats-new-in-4d- - Línguagem 4D: - Novos comandos: [Process info](../commands/process-info.md), [Session info](../commands/session-info.md), [SET WINDOW DOCUMENT ICON](../commands/set-window-document-icon.md) - Comandos modificados: [Process activity](../commands/process-activity.md), [Process number](../commands/process-number.md) - - Deprecated commands (replacement): `GET LAST ERROR STACK` ([Last errors](../commands/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) and [#DECLARE/Function](../Concepts/parameters.md#declaring-parameters) declarations). Deprecated commands are prefixed with "\*O\*". + - Deprecated commands (replacement): `GET LAST ERROR STACK` ([Last errors](../commands-legacy/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) and [#DECLARE/Function](../Concepts/parameters.md#declaring-parameters) declarations). Deprecated commands are prefixed with "\*O\*". - 4D Write Pro: - Novo comando: [WP DELETE SECTION](../WritePro/commands/wp-delete-section.md) - Comandos modificados: [WP DELETE SUBSECTION](../WritePro/commands/wp-delete-subsection.md) e [WP RESET ATTRIBUTES](../WritePro/commands/wp-reset-attributes.md)