> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Desarrollar soluciones

> Desarrolle y proteja soluciones de ABBYY FlexiCapture para su reventa, asegurando las Definiciones de Document, los FlexiLayouts y los módulos de reglas con licencias de desarrollador.

Puede desarrollar soluciones basadas en FC para venderlas a terceros. Una solución es una Definición de Document y puede incluir los siguientes componentes adicionales:

* Un FlexiLayout creado en FlexiLayout Studio
* Un módulo de reglas o un algoritmo especial de comprobación de datos que utiliza reglas para validarlos
* Un módulo de exportación o un procedimiento de exportación personalizado

Puede proteger su solución frente al uso no autorizado mediante una **Licencia de Developer** y un identificador único de la solución. Solo los usuarios con una **Licencia de usuario** podrán utilizar su solución.

<div id="protecting-document-definitions">
  ## Protección de las Definiciones de Document
</div>

1. Envíe un mensaje en el que describa su solución y enumere sus componentes a la [oficina de ABBYY](https://www.abbyy.com/support/contacts/) de su región.
2. Según el tipo de solución que esté desarrollando, la oficina de ABBYY le proporcionará identificadores únicos para los componentes de su solución y, en algunos casos, una Licencia de Developer. Los identificadores únicos pueden incluirse en el código fuente de los componentes de su solución y compararse con los identificadores especificados en una licencia de usuario.
3. Inicie FC, abra el editor de Definición de Document, haga clic en **Propiedades de Definición de Document...** en el menú **Definición de Document** del editor, seleccione la pestaña **General** e introduzca el identificador único de la solución que recibió de la oficina de ABBYY.
4. Al vender su solución a un cliente, solicite a la oficina de ABBYY una licencia de usuario que incluya el identificador único de la solución. Sin esta licencia, su cliente no podrá usar la Definición de Document ni FlexiLayout para procesar documentos.

<div id="protecting-individual-components">
  ## Protección de componentes individuales
</div>

Cualquier componente puede desarrollarse y protegerse de forma independiente, sin depender de una solución completa.

Si desea proteger un FlexiLayout, necesitará una Licencia de Developer. Para obtener más información, consulte el artículo **Projects → Funciones de protección para FlexiLayouts y Clasificadores** de la ayuda de ABBYY FlexiLayout Studio.

Los módulos de exportación y de reglas se integran en una Definición de Document mediante un script. No necesitará una Licencia de Developer para proteger estos módulos. Si su solución permite usar módulos con cualquier Definición de Document, puede protegerlos incluyendo una comprobación de identificador único en el código del módulo.

<Note>
  Recomendamos desarrollar una biblioteca externa en formato *.dll* e integrarla con ABBYY FlexiCapture. Así, el código fuente no estará disponible para los usuarios.
</Note>

Para ello, use el método **IsModuleAllowedByLicense** en su módulo para comprobar si la licencia del usuario permite usarlo:

```
IsModuleAllowedByLicense ( authorId : string, moduleName : string ) : bool
```

En el ejemplo de código anterior, **authorId** es el identificador único del desarrollador y **moduleName** es el identificador único de la solución.

<Accordion title="Ejemplos de código">
  El siguiente ejemplo de código muestra cómo un método puede comprobar un parámetro en una licencia:

  ```
  private bool CheckLicense()
         {
              if (FCTools.IsModuleAllowedByLicense("ABBYY RU", "ModuleName") == false)
              {
                  FCTools.ShowMessage("Your license does not allow the use of this module", true);
                  return false;
              }
              else
              {
                  // FCTools.ShowMessage("License is OK", false);
                  return true;
              }
          }
  ```

  Puede llamar al método de comprobación de la licencia en un script de exportación de la siguiente manera:

  ```
  public void ExportDocument(ref IExportDocument docRef, ref FCTools FCTools )
          {
              if (CheckLicense() == true)
              {
                  …
                  exportImages(docRef, FCTools, exportFolder);
                      // export information about the document
                  exportDocInfo(docRef, sw);
                      // export fields
                  exportFields(docRef.Children, sw, "");
              }
          }
  ```

  Si la licencia no incluye un módulo con el nombre **ModuleName** y el autor **ABBYY RU**, al exportar documentos se producirá un error.
</Accordion>
