How-to: INTERNAL
Пример 1
Условие
Нужно реализовать действие, которое выдаст пользователю сообщение с именем и IP-адресом сервера.
Решение
ip = DATA LOCAL TEXT();
getIPJava INTERNAL 'GetIP';
showIPJava 'Показать имя компьютера (Java)' {
getIPJava();
MESSAGE ip();
}
FORM info 'Информация'
PROPERTIES() showIPJava
;
NAVIGATOR {
NEW info;
}
Для решения задачи необходимо создать действие при помощи оператора INTERNAL
, которое создаст объект класса GetIP
(если у класса есть package, то в названии класса нужно также указывать package) и вызовет у него метод executeInternal
. Исходный код этого класса:
GetIP.java
import lsfusion.server.data.sql.exception.SQLHandledException;
import lsfusion.server.language.ScriptingErrorLog;
import lsfusion.server.language.ScriptingLogicsModule;
import lsfusion.server.logics.action.controller.context.ExecutionContext;
import lsfusion.server.logics.property.classes.ClassPropertyInterface;
import lsfusion.server.physics.dev.integration.internal.to.InternalAction;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.sql.SQLException;
public class GetIP extends InternalAction {
public GetIP(ScriptingLogicsModule LM) {
super(LM);
}
@Override
protected void executeInternal(ExecutionContext<ClassPropertyInterface> context) throws SQLException, SQLHandledException {
try {
findProperty("ip").change(InetAddress.getLocalHost().toString(), context);
} catch (UnknownHostException | ScriptingErrorLog.SemanticErrorException ignored) {
}
}
}