001package org.kuali.ole.select.executor;
002
003import org.kuali.ole.OLEConstants;
004import org.kuali.rice.kew.engine.RouteContext;
005import org.kuali.rice.kew.framework.support.krms.RulesEngineExecutor;
006import org.kuali.rice.krms.api.engine.*;
007
008import java.util.HashMap;
009import java.util.Map;
010
011/**
012 * Created with IntelliJ IDEA.
013 * User: juliyamonicas
014 * Date: 8/20/13
015 * Time: 1:22 PM
016 * To change this template use File | Settings | File Templates.
017 */
018public class OLEEResourceRulesEngineExecutor implements RulesEngineExecutor {
019    private static final String CONTEXT_NAMESPACE_CODE = OLEConstants.OLE_NAMESPACE;
020    private static final String CONTEXT_NAME = "EResource Approval";
021    private static final String EVENT_NAME = "EResource Approval";
022
023    @Override
024    public EngineResults execute(RouteContext routeContext, Engine engine) {
025
026        ExecutionOptions executionOptions = new ExecutionOptions();
027        executionOptions.setFlag(ExecutionFlag.LOG_EXECUTION, true);
028        Map<String, String> contextQualifiers = new HashMap<String, String>();
029        contextQualifiers.put("namespaceCode", CONTEXT_NAMESPACE_CODE);
030        contextQualifiers.put("name", "OLE-CONTEXT");
031        Facts.Builder factsBuilder = Facts.Builder.create();
032        SelectionCriteria sectionCriteria = SelectionCriteria.createCriteria(null, contextQualifiers,
033                getAgendaContext(CONTEXT_NAME));
034        //return engine.execute(sectionCriteria, Facts.EMPTY_FACTS, null);
035        factsBuilder.addFact("eresourceApproval", "true");
036        return engine.execute(sectionCriteria, factsBuilder.build(), executionOptions);
037    }
038
039    /**
040     * This method returns AgendaContext using agendaName..
041     *
042     * @param agendaName
043     * @return Map
044     */
045    protected Map<String, String> getAgendaContext(String agendaName) {
046        Map<String, String> selector = new HashMap<String, String>();
047        selector.put(OLEConstants.NAME, agendaName);
048        return selector;
049    }
050}