package context.apps.demos.imautostatus; import context.arch.discoverer.component.ClassnameElement; import context.arch.discoverer.component.ConstantAttributeElement; import context.arch.discoverer.query.ANDQueryItem; import context.arch.discoverer.query.ClassifierWrapper; import context.arch.discoverer.query.RuleQueryItem; import context.arch.enactor.ClassifierEnactor; import context.arch.storage.AttributeNameValue; /** * Enactor to handle classifier reasoning for IM Autostatus application. * It takes input from AutostatusWidget and outputs changes to ResponsivenessWidget. * @author Brian Y. Lim * */ public class AutostatusEnactor extends ClassifierEnactor { public AutostatusEnactor(String userId) { super( // in-widget query new ANDQueryItem( RuleQueryItem.instance(new ClassnameElement(AutostatusWidget.class)), RuleQueryItem.instance(new ConstantAttributeElement(AttributeNameValue.instance(ResponsivenessWidget.USER_ID, userId))) ), // out-widget query new ANDQueryItem( RuleQueryItem.instance(new ClassnameElement(ResponsivenessWidget.class)), RuleQueryItem.instance(new ConstantAttributeElement(AttributeNameValue.instance(ResponsivenessWidget.USER_ID, userId))) ), ResponsivenessWidget.RESPONSIVENESS, // outcome name // delegate for classifier new ClassifierWrapper( "demos/imautostatus-dtree/imautostatus.model", // file path to Weka classifier model "demos/imautostatus-dtree/imautostatus-test.arff" // file path to Weka ARFF file with relevant header), ), userId); // enactor id start(); } }