Skip to content

Commit

Permalink
first draft implementation
Browse files Browse the repository at this point in the history
added new module 'lucene' and 'solr'. Refactoring search services.

Issue imixs#554
  • Loading branch information
rsoika committed Aug 25, 2019
1 parent c434b9b commit a7d1def
Show file tree
Hide file tree
Showing 46 changed files with 2,539 additions and 573 deletions.
22 changes: 1 addition & 21 deletions imixs-workflow-engine/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,27 +27,7 @@
<artifactId>imixs-workflow-core</artifactId>
<version>${project.version}</version>
</dependency>

<!-- Apache Lucene -->
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>${lucene.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
<version>${lucene.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>${lucene.version}</version>
<scope>provided</scope>
</dependency>


<!-- apache fop dependency -->
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,12 @@
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import org.apache.lucene.search.Sort;
import org.apache.lucene.search.SortField;
import org.apache.lucene.search.SortField.Type;
import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.WorkflowKernel;
import org.imixs.workflow.engine.index.SearchService;
import org.imixs.workflow.engine.index.UpdateService;
import org.imixs.workflow.engine.index.SortOrder;
import org.imixs.workflow.engine.jpa.Document;
import org.imixs.workflow.engine.lucene.LuceneSearchService;
import org.imixs.workflow.engine.lucene.LuceneUpdateService;
import org.imixs.workflow.exceptions.AccessDeniedException;
import org.imixs.workflow.exceptions.InvalidAccessException;
import org.imixs.workflow.exceptions.QueryException;
Expand Down Expand Up @@ -164,11 +162,11 @@ public class DocumentService {
@PersistenceContext(unitName = "org.imixs.workflow.jpa")
private EntityManager manager;

@EJB
private LuceneUpdateService luceneUpdateService;
@Inject
private UpdateService indexUpdateService;

@EJB
private LuceneSearchService luceneSearchService;
@Inject
private SearchService luceneSearchService;

@Inject
protected Event<DocumentEvent> documentEvents;
Expand Down Expand Up @@ -475,10 +473,10 @@ public ItemCollection save(ItemCollection document) throws AccessDeniedException

// add/update document into lucene index
if (!document.getItemValueBoolean(NOINDEX)) {
luceneUpdateService.updateDocument(document);
indexUpdateService.updateDocument(document);
} else {
// remove from index
luceneUpdateService.removeDocument(document.getUniqueID());
indexUpdateService.removeDocument(document.getUniqueID());
}

/*
Expand Down Expand Up @@ -621,7 +619,7 @@ public void remove(ItemCollection document) throws AccessDeniedException {
manager.remove(persistedDocument);
// remove document form index - @see issue #412
if (!document.getItemValueBoolean(NOINDEX)) {
luceneUpdateService.removeDocument(document.getUniqueID());
indexUpdateService.removeDocument(document.getUniqueID());
}

} else
Expand Down Expand Up @@ -706,7 +704,7 @@ public int countPages(String searchTerm, int pageSize) throws QueryException {
* @return list of ItemCollection elements
* @throws QueryException
*
* @see org.imixs.workflow.engine.lucene.LuceneSearchService
* @see org.imixs.workflow.engine.index.SearchService
*/
public List<ItemCollection> find(String searchTerm, int pageSize, int pageIndex) throws QueryException {
return find(searchTerm, pageSize, pageIndex, null, false);
Expand Down Expand Up @@ -735,20 +733,20 @@ public List<ItemCollection> find(String searchTerm, int pageSize, int pageIndex)
* @return list of ItemCollection elements
* @throws QueryException
*
* @see org.imixs.workflow.engine.lucene.LuceneSearchService
* @see org.imixs.workflow.engine.index.SearchService
*/
public List<ItemCollection> find(String searchTerm, int pageSize, int pageIndex, String sortBy, boolean sortReverse)
throws QueryException {
logger.finest("......find - SearchTerm=" + searchTerm + " , pageSize=" + pageSize + " pageNumber=" + pageIndex
+ " , sortBy=" + sortBy + " reverse=" + sortReverse);

// create sort object
Sort sortOrder = null;
SortOrder sortOrder = null;
if (sortBy != null && !sortBy.isEmpty()) {
// we do not support multi values here - see
// LuceneUpdateService.addItemValues
// it would be possible if we use a SortedSetSortField class here
sortOrder = new Sort(new SortField[] { new SortField(sortBy, Type.STRING, sortReverse) });
sortOrder = new SortOrder(sortBy, sortReverse);
}

return luceneSearchService.search(searchTerm, pageSize, pageIndex, sortOrder, null);
Expand Down Expand Up @@ -783,20 +781,20 @@ public List<ItemCollection> find(String searchTerm, int pageSize, int pageIndex,
* @return list of ItemCollection elements
* @throws QueryException
*
* @see org.imixs.workflow.engine.lucene.LuceneSearchService
* @see org.imixs.workflow.engine.index.SearchService
*/
public List<ItemCollection> findStubs(String searchTerm, int pageSize, int pageIndex, String sortBy,
boolean sortReverse) throws QueryException {
logger.finest("......find - SearchTerm=" + searchTerm + " , pageSize=" + pageSize + " pageNumber=" + pageIndex
+ " , sortBy=" + sortBy + " reverse=" + sortReverse);

// create sort object
Sort sortOrder = null;
SortOrder sortOrder = null;
if (sortBy != null && !sortBy.isEmpty()) {
// we do not support multi values here - see
// LuceneUpdateService.addItemValues
// it would be possible if we use a SortedSetSortField class here
sortOrder = new Sort(new SortField[] { new SortField(sortBy, Type.STRING, sortReverse) });
sortOrder = new SortOrder(sortBy,sortReverse);
}
// find stubs only!
return luceneSearchService.search(searchTerm, pageSize, pageIndex, sortOrder, null, true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
* type of document entity directly in the database to represent an event. These
* types of events can be queried by clients through the service.
*
* @see org.imixs.workflow.engine.lucene.LuceneUpdateService
* @see org.imixs.workflow.engine.index.UpdateService
* @author rsoika
* @version 1.0
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
import javax.ejb.LocalBean;
import javax.ejb.SessionContext;
import javax.ejb.Singleton;
import javax.inject.Inject;

import org.imixs.workflow.FileData;
import org.imixs.workflow.ItemCollection;
Expand Down Expand Up @@ -89,7 +90,7 @@ public class ModelService implements ModelManager {

private Map<String, Model> modelStore = null;
private static Logger logger = Logger.getLogger(ModelService.class.getName());
@EJB
@Inject
private DocumentService documentService;
@Resource
private SessionContext ctx;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.ws.rs.core.MediaType;
import javax.xml.bind.JAXBException;
import javax.xml.transform.TransformerException;
Expand Down Expand Up @@ -93,10 +94,10 @@ public class ReportService {

private static Logger logger = Logger.getLogger(ReportService.class.getName());

@EJB
@Inject
DocumentService documentService;

@EJB
@Inject
WorkflowService workflowService;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,13 +108,13 @@ public class SetupService {
@ConfigProperty(name = "model.default.data", defaultValue = "")
private String modelDefaultData;

@EJB
@Inject
private DocumentService documentService;

@EJB
@Inject
private ModelService modelService;

@EJB
@Inject
private SchedulerService schedulerService;

@Resource
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ public class SimulationService implements WorkflowContext {
@Any
private Instance<Plugin> plugins;

@EJB
@Inject
private ModelService modelService;

public ModelService getModelService() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.SessionContext;
import javax.inject.Inject;

import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.WorkflowKernel;
Expand Down Expand Up @@ -43,16 +44,16 @@ public class WorkflowScheduler implements Scheduler {

private static Logger logger = Logger.getLogger(WorkflowScheduler.class.getName());

@EJB
@Inject
private WorkflowService workflowService;

@EJB
@Inject
private DocumentService documentService;

@EJB
@Inject
private ModelService modelService;

@EJB
@Inject
private SchedulerService schedulerService;

@Resource
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,13 +116,13 @@ public class WorkflowService implements WorkflowManager, WorkflowContext {
@Any
protected Instance<Adapter> adapters;

@EJB
@Inject
DocumentService documentService;

@EJB
@Inject
ModelService modelService;

@EJB
@Inject
ReportService reportService;

@Resource
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,16 +92,13 @@ public class AdminPService {
@Resource
javax.ejb.TimerService timerService;

@EJB
@Inject
DocumentService documentService;

@EJB
JobHandlerRebuildIndex jobHandlerRebuildIndex;

@EJB
@Inject
JobHandlerUpgradeWorkitems jobHandlerUpgradeWorkitems;

@EJB
@Inject
JobHandlerRenameUser jobHandlerRenameUser;


Expand Down Expand Up @@ -225,9 +222,6 @@ public void scheduleTimer(javax.ejb.Timer timer) {
if (job.equals(JOB_RENAME_USER)) {
jobHandler = jobHandlerRenameUser;
}
if (job.equals(JOB_REBUILD_LUCENE_INDEX)) {
jobHandler = jobHandlerRebuildIndex;
}

if (job.equals(JOB_UPGRADE)) {
jobHandler = jobHandlerUpgradeWorkitems;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,13 @@
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.inject.Inject;

import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.WorkflowKernel;
import org.imixs.workflow.engine.DocumentService;
import org.imixs.workflow.engine.WorkflowService;
import org.imixs.workflow.engine.lucene.LuceneUpdateService;
import org.imixs.workflow.engine.index.UpdateService;
import org.imixs.workflow.engine.plugins.OwnerPlugin;
import org.imixs.workflow.exceptions.AccessDeniedException;
import org.imixs.workflow.exceptions.InvalidAccessException;
Expand Down Expand Up @@ -70,11 +71,11 @@ public class JobHandlerRenameUser implements JobHandler {
@Resource
SessionContext ctx;

@EJB
@Inject
DocumentService documentService;

@EJB
LuceneUpdateService luceneService;
@Inject
UpdateService luceneService;

private static final int DEFAULT_COUNT = 100;
private static Logger logger = Logger.getLogger(JobHandlerRenameUser.class.getName());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.inject.Inject;

import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.WorkflowKernel;
import org.imixs.workflow.engine.DocumentService;
import org.imixs.workflow.engine.lucene.LuceneSearchService;
import org.imixs.workflow.engine.plugins.OwnerPlugin;
import org.imixs.workflow.exceptions.AccessDeniedException;
import org.imixs.workflow.exceptions.PluginException;
Expand All @@ -44,15 +44,10 @@ public class JobHandlerUpgradeWorkitems implements JobHandler {
@Resource
SessionContext ctx;

@EJB
@Inject
DocumentService documentService;

@EJB
LuceneSearchService luceneService;



private static Logger logger = Logger.getLogger(JobHandlerRebuildIndex.class.getName());
private static Logger logger = Logger.getLogger(JobHandlerUpgradeWorkitems.class.getName());

/**
* This method runs the RebuildLuceneIndexJob. The AdminP job description
Expand Down Expand Up @@ -86,12 +81,6 @@ public ItemCollection run(ItemCollection adminp) throws AdminPException {
long lProfiler = System.currentTimeMillis();
int iIndex = adminp.getItemValueInteger("numIndex");
int iBlockSize = adminp.getItemValueInteger("numBlockSize");


// First flush the lucene event log....
logger.info("... flush lucene event log...");
luceneService.flush();


// test if numBlockSize is defined.
if (iBlockSize <= 0) {
Expand Down Expand Up @@ -199,7 +188,7 @@ public boolean upgradeWorkitem(ItemCollection workitem) {
workitem.replaceItemValue("$taskid", workitem.getItemValue("$processid"));
bUpgrade = true;
}

if (!workitem.hasItem(OwnerPlugin.OWNER)) {
workitem.replaceItemValue(OwnerPlugin.OWNER, workitem.getItemValue("namowner"));
bUpgrade = true;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package org.imixs.workflow.engine.index;

public enum DefaultOperator {
OR, AND
};
Loading

0 comments on commit a7d1def

Please sign in to comment.