Bibliotecas Java y .NET personales
En MapForce puede importar archivos de clases Java compilados y archivos de ensamblados .NET (incluidos los ensamblados .NET 4.0). Si las bibliotecas importadas contienen funciones que usan tipos de datos básicos como parámetros y que devuelven tipos simples, dichas funciones aparecerán en la ventana Bibliotecas y se podrán usar en los diseños de asignación de datos como cualquier otra función de MapForce. El resultado de las asignaciones de datos que incluyen funciones Java y .NET importadas se puede ver en el panel Resultados y las funciones estarán disponibles en el código generado. Para aprender más sobre cómo importar bibliotecas personales consulte Importar clase Java personal e Importar ensamblado .NET DLL personal.
Importante:
•Para importar funciones Java o .NET personales necesitará los archivos de clases Java compilados (.class) o los archivos de ensamblados .NET. No se pueden importar archivos Java .jar ni archivos .dll que no sean ensamblados .NET.
•los archivos de ensamblados .NET se pueden importar si el lenguaje de transformación seleccionado es C#. Los ensamblados .NET pueden estar escritos en lenguajes .NET distintos de C# (por ejemplo, C++.NET o VB.NET) siempre que utilicen únicamente los tipos de datos básicos del ensamblado System como parámetros y tipos devueltos. Para más detalles, consulte Compatibilidad con funciones . NET.
•Si desea utilizar funciones personalizadas de .NET en la vista previa de salida integrada (en el panel Resultados), dichas funciones deben estar compiladas para .NET Framework 4.x o .NET Standard 2.0.
•Los archivos de clases Java compilados (.class) se pueden importar si el lenguaje de transformación seleccionado es Java. Debe tener instalado en su ordenador Java Runtime Environment 7 o una versión posterior. Solamente son compatibles ciertos tipos y miembros (véase Compatibilidad con funciones Java).
•No es posible configurar el lenguaje de asignación como C++ si la asignación utiliza ensamblados .class de Java o DLL de .NET importados.
•No es posible configurar el lenguaje de asignación como XSLT si la asignación utiliza ensamblados .class de Java o DLL de .NET importados (sería necesario escribir una función XSLT personalizada que haga de adaptador).
•La importación de funciones desde DLL nativas de C++ está limitada y requiere un método especial. Para obtener más información, consulte Referencias manuales a bibliotecas Java, C# y C++ personales.
•Todas las funciones a las que llame una asignación de MapForce deben devolver el mismo valor cada vez que se llame a la función con los mismos parámetros de entrada. El orden exacto y el número de veces que MapForce llama a una función es indefinido.
•En el caso de los archivos de clases Java importados y de sus paquetes, no es necesario que se añadan a la variable CLASSPATH porque el motor de ejecución integrado y el código Java de salida agregarán automáticamente los paquetes importados a la variable classpath del motor Java o a Ant. Sin embargo, las dependencias de los archivos de clases y paquetes importados no se resolverán automáticamente. Por tanto, si los archivos de clases o paquetes Java dependen de otros archivos de clases, deberá agregar los directorios primarios de todos los paquetes dependientes a la variable de entorno CLASSPATH.
Compatibilidad con funciones Java
Clases de nivel superior, clases de miembro estáticas y clases de miembro no estáticas:
•new <classname>(<arg1>, <arg2>, ...)
•<object>.new <member-class>(<arg1>, <arg2>, ...)
Funciones de miembro y funciones estáticas:
•<function>(<arg1>, <arg2>, ...)
•<object>.<method>(<arg1>, ...)
Conexiones compatibles entre XML Schema y tipos Java:
Tipo Schema | Tipo Java |
|---|---|
xs:string | String |
xs:byte | byte |
xs:short | short |
xs:int | int |
xs:long | long |
xs:boolean | boolean |
xs:float | float |
xs:double | double |
xs:decimal | java.math.BigDecimal |
xs:integer | java.math.BigInteger |
Las conexiones pueden hacerse en ambas direcciones. Los demás tipos Java (incluidos los tipos matriz) no son compatibles. Los métodos que usen dichos parámetros o valores devueltos se omitirán. Se pueden usar tipos de objeto llamando a su constructor o como valor devuelto de un método. Se pueden asignar a otros métodos Java. No es posible manipular el objeto con MapForce.
Compatibilidad con funciones. NET
Clases de nivel superior y clases de miembro:
•new <classname>(<arg1>, <arg2>, ...)
Funciones de miembro y funciones estáticas:
•<function>(<arg1>, <arg2>, ...)
•<object>.<method>(<arg1>, ...)
Conexiones compatibles entre tipos XML Schema y tipos .NET/C#:
Tipo Schema | Tipo .NET | Tipo C# |
|---|---|---|
xs:string | System.String | string |
xs:byte | System.SByte | sbyte |
xs:short | System.Int16 | short |
xs:int | System.Int32 | int |
xs:long | System.Int64 | long |
xs:unsignedByte | System.Byte | byte |
xs:unsignedShort | System.UInt16 | ushort |
xs:unsignedInt | System.UInt32 | uint |
xs:unsignedLong | System.UInt64 | ulong |
xs:boolean | System.Boolean | bool |
xs:float | System.Single | float |
xs:double | System.Double | double |
xs:decimal | System.Decimal | decimal |
Las conexiones pueden hacerse en ambas direcciones. Los demás tipos .NET/C# (incluidos los tipos matriz) no son compatibles. Los métodos que usen dichos parámetros o valores devueltos se omitirán. Se pueden usar tipos de objeto llamando a su constructor o como valor devuelto de un método. Se pueden asignar a otros métodos .NET. No es posible manipular el objeto con MapForce.
Problemas relacionados con los tipos de datos y posibles soluciones
Cuando una función de su biblioteca personal espera tipos enteros, al asignar constantes de tipo Number a los argumentos de la función puede producirse un error de incompatibilidad de tipos similar a este: No match for MyCustomClassLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.MyCustomClassLibrary.Converter.AddValues(MyCustomClassLibrary.Converter, xs:decimal, xs:decimal). Check argument types. Este problema ocurre solamente con las constantes de tipo Number. A continuación se muestra un ejemplo de asignación que podría generar este error. En la asignación hay dos constantes de tipo Number conectadas a los argumentos de la función (de tipo Integer).

Hay varias posibles soluciones:
1.Cambie el tipo de la constante de Number a All other. Para ello, haga doble clic en la barra de título de la constante.
2.En lugar de una constante, use un componente de entrada (por ejemplo, un archivo XML) que pase valores del tipo que espera la función.

3.En su código externo cree una función contenedora que acepte un valor decimal y devuelva un valor entero. La solución contenedora se puede importar como una biblioteca independiente. Por lo tanto, no es necesario modificar el código fuente original de la función de destino para emplear este método.