use of org.kie.internal.command.RegistryContext in project drools by kiegroup.
the class GetObjectsCommand method execute.
public Collection execute(Context context) {
KieSession ksession = ((RegistryContext) context).lookup(KieSession.class);
Collection col = null;
if (getFilter() != null) {
col = ksession.getObjects(this.filter);
} else {
col = ksession.getObjects();
}
if (this.outIdentifier != null) {
List objects = new ArrayList(col);
((RegistryContext) context).lookup(ExecutionResultImpl.class).setResult(this.outIdentifier, objects);
}
return col;
}
use of org.kie.internal.command.RegistryContext in project drools by kiegroup.
the class InsertObjectCommand method execute.
public FactHandle execute(Context context) {
KieSession ksession = ((RegistryContext) context).lookup(KieSession.class);
FactHandle factHandle;
if (StringUtils.isEmpty(this.entryPoint)) {
factHandle = ksession.insert(object);
} else {
factHandle = ksession.getEntryPoint(this.entryPoint).insert(object);
}
if (outIdentifier != null) {
if (this.returnObject) {
((RegistryContext) context).lookup(ExecutionResultImpl.class).setResult(this.outIdentifier, object);
}
((RegistryContext) context).lookup(ExecutionResultImpl.class).getFactHandles().put(this.outIdentifier, factHandle);
}
if (disconnected) {
DefaultFactHandle disconnectedHandle = ((DefaultFactHandle) factHandle).clone();
disconnectedHandle.disconnect();
return disconnectedHandle;
}
return factHandle;
}
use of org.kie.internal.command.RegistryContext in project drools by kiegroup.
the class QueryCommand method execute.
public QueryResults execute(Context context) {
KieSession ksession = ((RegistryContext) context).lookup(KieSession.class);
if (this.arguments == null || this.arguments.isEmpty()) {
this.arguments = Collections.emptyList();
}
for (int j = 0; j < arguments.size(); j++) {
if (arguments.get(j) instanceof Variable) {
arguments.set(j, Variable.v);
}
}
QueryResults results = ksession.getQueryResults(name, this.arguments.toArray());
if (this.outIdentifier != null) {
((RegistryContext) context).lookup(ExecutionResultImpl.class).setResult(this.outIdentifier, new FlatQueryResults((QueryResultsImpl) results));
}
return results;
}
use of org.kie.internal.command.RegistryContext in project drools by kiegroup.
the class TransactionTestCommand method execute.
public Void execute(Context context) {
em.joinTransaction();
em.persist(mainObject);
if (subObject != null) {
KieSession ksession = ((RegistryContext) context).lookup(KieSession.class);
// THe following 3 lines are the important ones! (See below for an explanation)
InternalKnowledgeBase cleanKBase = KnowledgeBaseFactory.newKnowledgeBase();
cleanKBase.addPackages(ksession.getKieBase().getKiePackages());
StatefulKnowledgeSession commandKSession = JPAKnowledgeService.newStatefulKnowledgeSession(cleanKBase, null, initializeEnvironment());
/**
* Here's what's going on:
* If the PersistableRunner (SSCS) & JtaTransactionManager (JTM) were _not_ aware of transactions,
* -> then inserting the mainObject _before_ having inserted the subObject
* would cause the operation/persist to fail and the transaction to fail.
* - This is because the mainObject contains a foreign key referring to the subObject.
*
* However, the SSCS & JTM check whether or not they're owners of the transaction
* when starting and when committing the transaction they use.
* -> So that when we insert the mainObject here (via a _new_ CommandBasedStatefulKnowledgeSession),
* it does _not_ mess with the transaction state and the operation succeeds.
*/
TransactionTestCommand transactionTestSubCommand = new TransactionTestCommand(this.subObject, getPersistenceEnvironment());
commandKSession.execute(transactionTestSubCommand);
}
return null;
}
use of org.kie.internal.command.RegistryContext in project drools by kiegroup.
the class SetDMNActiveModelCommand method execute.
@Override
public DMNModel execute(Context context) {
RegistryContext registryContext = (RegistryContext) context;
DMNModel activeModel = getDMNModel(context);
;
registryContext.register(DMNModel.class, activeModel);
return activeModel;
}
Aggregations