InvokeModule(ModuleId: String, ClassName: String, MethodName: String, MethodSig: String, Params: Array): Variant;
InvokeModule(Context: Prognoz.Platform.Interop.Fore.ForeRuntimeContext, ModuleId: string, ClassName: string, MethodName: string, MethodSig: string, Params: array of object): object;
Context. Контекст выполнения метода;
Примечание. Параметр используется только на Fore.NET.
ModuleId. Идентификатор Java-модуля в репозитории;
ClassName. Наименование класса. Значение параметра является регистрозависимым;
MethodName. Наименование выполняемого метода. Значение параметра является регистрозависимым;
MethodSig. JNI-сигнатура метода;
Params. Массив значений параметров, передаваемых в метод.
Метод InvokeModule выполняет статический метод, хранящийся в Java-модуле, и возвращает результат его работы.
Для выполнения примера предполагается наличие в репозитории Java-модуля с идентификатором MOD_JAVA. В модуле реализован следующий класс:
public class Test {
public static double staticFunc(double a, double b){
return (a + b)/2;
}
}
Добавьте ссылки на системные сборки: Java, Metabase.
Sub UserProc;
Var
jUtils: IJavaUtils;
Result: Variant;
Begin
jUtils := New JavaUtils.Create;
Result := jUtils.InvokeModule("MOD_JAVA", "Test", "staticFunc", "(DD)D", 1.0, 2.0);
Debug.WriteLine(Result);
End Sub UserProc;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Java;
…
Public Shared Sub Main(Params: StartParams);
Var
RunContext: ForeRuntimeContext;
jUtils: IJavaUtils = New JavaUtilsClass();
Result: object;
Begin
RunContext := (Params.Metabase As IForeServices).GetRuntime().Context;
Result := jUtils.InvokeModule(RunContext, "MOD_JAVA", "Test", "staticFunc", "(DD)D", 1.0, 2.0);
System.Diagnostics.Debug.WriteLine(Result);
End Sub;
При выполнении примера будет выполнена функция на языке Java, осуществляющая математическое вычисление на основании значений, переданных в параметрах. Результат выполнения функции будет выведен в консоль среды разработки.
См. также: