Я использую Drools и Liferay, и я пытаюсь вставить в BD пользователя, когда правило было правдой, но Drools не позволяет мне импортировать пакет. У меня нет класса .drl, я передаю строку для запуска drools. Это мой код:Только тип может быть импортирован drools
Код течет слюна:
import com.liferay.portal.kernel.search.BooleanClause;
import com.liferay.portal.kernel.search.BooleanClauseOccur;
import com.liferay.portal.kernel.search.BooleanClauseFactoryUtil;
import com.liferay.portal.kernel.search.BooleanQuery;
import com.liferay.portal.kernel.search.BooleanQueryFactoryUtil;
import com.liferay.portal.kernel.search.Document;
import com.liferay.portal.kernel.search.Field;
import com.liferay.portal.kernel.search.Hits;
import com.liferay.portal.kernel.search.Indexer;
import com.liferay.portal.kernel.search.IndexerRegistryUtil;
import com.liferay.portal.kernel.search.SearchContext;
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.portal.kernel.util.KeyValuePair;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.model.Address;
import com.liferay.portal.model.Group;
import com.liferay.portal.model.Contact;
import com.liferay.portal.model.User;
import com.liferay.portal.service.AddressLocalServiceUtil;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portlet.asset.model.AssetEntry;
import com.liferay.portlet.asset.service.AssetEntryLocalServiceUtil;
import com.liferay.portal.model.User;
import com.liferay.portal.security.auth.PrincipalThreadLocal;
import com.liferay.portal.security.permission.PermissionChecker;
import com.liferay.portal.security.permission.PermissionCheckerFactoryUtil;
import com.liferay.portal.security.permission.PermissionThreadLocal;
import com.liferay.portal.kernel.util.ObjectValuePair;
import com.liferay.portlet.expando.model.ExpandoBridge;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.segmentationPortlet.controller.prova;
rule "Initialize Rules"
salience 1000
when
user : User();
then
end
rule "Rule_1"
when
userRule_2: User(emailAddress == "[email protected]")
user: User();
then
prova p;
p.classification(user,"SegmentUser");
end
код для выполнения Drools; // rule - строка, содержащая код Drools. ThemeDisplay td = (ThemeDisplay) actionRequest.getAttribute (WebKeys.THEME_DISPLAY); Пользователь user = td.getUser(); facts.add (новый факт («пользователь», пользователь));
RulesResourceRetriever rulesResourceRetriever = new RulesResourceRetriever(new StringResourceRetriever(rule), String.valueOf(RulesLanguage. RulesEngineUtil.update(domainName, rulesResourceRetriever, PortalClassLoaderUtil.getClassLoader());
RulesEngineUtil.execute(domainName, facts, Query.createStandardQuery(), PortalClassLoaderUtil.getClassLoader());`
prova.java код: пакет com.segmentationPortlet.controller;
import com.liferay.counter.service.CounterLocalServiceUtil;
import com.liferay.portal.model.User;
import com.segmentationPortlet.model.UserRule;
import com.segmentationPortlet.service.UserRuleLocalServiceUtil;
import com.segmentationPortlet.service.persistence.UserRulePK;
public class prova {
public void classification(User user, String segmentValue) {
try {
UserRule ur = null ;
long id1 = CounterLocalServiceUtil.increment(UserRule.class.getName());
long id2 = CounterLocalServiceUtil.increment(UserRule.class.getName());
UserRulePK u = new UserRulePK(id1, id2);
ur= UserRuleLocalServiceUtil.createUserRule(u);
Long id = (long) 1234;
ur.setUserId(user.getUserId());
ur.setRuleId(id);
ur.setSegment(segmentValue);
UserRuleLocalServiceUtil.addUserRule(ur);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}`
Когда я пытаюсь выполнить у меня есть эта ошибка:
вызвано следующими причинами: com.liferay.portal.kernel.bi.rules.RulesEngineException: импортирование Ошибка: 'com.segmentationPortlet.controller.prova' Ошибка импорта: 'com.segmentationPortlet.controller.Classification.classification' Ошибка импорта: 'com.segmentationPortlet.controller.GetCustomAttribute.getCustomAttribute' [function getCustomAttributegetCustomAttribute (строка: 53): импортируется только тип. com.segmentationPortlet.controller.prova разрешает пакет ] [классификационная классификация функций (строка: 35): импортируется только тип. com.segmentationPortlet.controller.prova разрешает пакет ] [function getCustomAttributegetCustomAttribute (строка: 53): импортируется только тип. com.segmentationPortlet.controller.prova разрешает пакет ]
Любая идея, как я могу решить проблему?
спасибо.
Я проверяю импорт, и это правильно. попробуйте добавить класс в classpath: Нажмите в имени проекта, «Свойства» -> «Путь сборки Java» и в «Библиотеках» нажмите «Добавить папку класса» и выберите папку/src/com/cont ролик, в котором находится класс «Prova.java». Но когда я выполняю код, у меня такая же ошибка. И да, я использую Drools 5.5.0, но у меня нет этой ошибки, потому что код еще не выполнен. Я попытался поместить путь в Prova.java в classpath Windows, но он тоже не работает. Спасибо. – sandra