BUG 0000 herbert> SOLR implementation in PMOS2
Solr support in PMOS2 includes:
Functionality:
- Implementation of Home views (Inbox, Draft, Participated, Unassigned). The views return fast results.
- Include read, unread, all, and process filter in inbox View.
- Include process filter in draft view.
- Include started by me, completed by me, all, process, and status filter in participated view.
- Include process filter in unassigned view.
- Improved search functionality (search in user defined variables): Use the following syntax to search in process (user defined) variables. {variable_name}:{search_word} ex1:"causal:20*" where causal is the variable defined by the user.
+ Use of wildcards in search: Use * as wildcard at the begin or end of word
+ Multiple conditions in search: Separate multiple conditions by space ex2:"Materiales causal:20*" means that we are searching for the word Materiales and the causal that begin with 20.
+ Search in dates (interval ): Format=> {variable_date}:[yyyy-mm-dd TO yyyy-mm-dd]
Local date not UTC date required
ex: FechaRegistro:[2011-04-15 TO 2011-04-30] //registros con fecha entre el 2011-04-15 y el 2011-04-30.
+ we can use the wildcard *:
ex: FechaRegistro:[* TO 2011-04-30] //registros con fecha menor o igual a 2011-04-30.
FechaRegistro:[2011-04-15 TO *] //registros con fecha mayor o igual a 2011-04-15.
+ Search of exact phrases. format: {variable}:"frase a buscar"
ex: Cliente:"Jesus Marin"
- Application update function.
+ The function is called every time a change is detected in the application's data including the related delegations.
- Use of cache to improve performance
Not included:
- Order of task, sent by, and due date columns.
Pending:
- Advanced search view using faceted lists.
This commit is contained in:
126
workflow/engine/classes/model/AppSolrQueue.php
Normal file
126
workflow/engine/classes/model/AppSolrQueue.php
Normal file
@@ -0,0 +1,126 @@
|
||||
<?php
|
||||
|
||||
require_once 'classes/model/om/BaseAppSolrQueue.php';
|
||||
require_once 'classes/entities/AppSolrQueue.php';
|
||||
|
||||
|
||||
/**
|
||||
* Skeleton subclass for representing a row from the 'APP_SOLR_QUEUE' table.
|
||||
*
|
||||
*
|
||||
*
|
||||
* You should add additional methods to this class to meet the
|
||||
* application requirements. This class will only be generated as
|
||||
* long as it does not already exist in the output directory.
|
||||
*
|
||||
* @package classes.model
|
||||
*/
|
||||
class AppSolrQueue extends BaseAppSolrQueue {
|
||||
|
||||
public function exists($sAppUid)
|
||||
{
|
||||
try {
|
||||
$oRow = AppSolrQueuePeer::retrieveByPK( $sAppUid );
|
||||
if (!is_null($oRow))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch (Exception $oError) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function createUpdate($sAppUid, $iUpdated)
|
||||
{
|
||||
$con = Propel::getConnection(AppSolrQueuePeer::DATABASE_NAME);
|
||||
try
|
||||
{
|
||||
if($this->exists($sAppUid)){
|
||||
$con->begin();
|
||||
//update record
|
||||
//$oRow = AppSolrQueuePeer::retrieveByPK( $sAppUid );
|
||||
//$aFields = $oRow->toArray(BasePeer::TYPE_FIELDNAME);
|
||||
//$this->fromArray($aFields,BasePeer::TYPE_FIELDNAME);
|
||||
$this->setNew(false);
|
||||
//set field
|
||||
$this->setAppUid($sAppUid);
|
||||
$this->setAppUpdated($iUpdated);
|
||||
if($this->validate())
|
||||
{
|
||||
$result=$this->save();
|
||||
}
|
||||
else
|
||||
{
|
||||
$con->rollback();
|
||||
throw(new Exception("Failed Validation in class ".get_class($this)."."));
|
||||
}
|
||||
$con->commit();
|
||||
return $result;
|
||||
}else{
|
||||
//create record
|
||||
//set values
|
||||
$this->setAppUid($sAppUid);
|
||||
$this->setAppUpdated($iUpdated);
|
||||
if($this->validate())
|
||||
{
|
||||
$result=$this->save();
|
||||
}
|
||||
else
|
||||
{
|
||||
$e=new Exception("Failed Validation in class ".get_class($this).".");
|
||||
//$e->aValidationFailures=$this->getValidationFailures();
|
||||
throw($e);
|
||||
}
|
||||
$con->commit();
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
catch(Exception $e)
|
||||
{
|
||||
$con->rollback();
|
||||
throw($e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the list of updated applications
|
||||
* array of Entity_AppSolrQueue
|
||||
*/
|
||||
public function getListUpdatedApplications(){
|
||||
$updatedApplications = array();
|
||||
try
|
||||
{
|
||||
$c = new Criteria();
|
||||
|
||||
$c->addSelectColumn(AppSolrQueuePeer::APP_UID);
|
||||
$c->addSelectColumn(AppSolrQueuePeer::APP_UPDATED);
|
||||
|
||||
//"WHERE
|
||||
$c->add(AppSolrQueuePeer::APP_UPDATED, 0, Criteria::NOT_EQUAL);
|
||||
|
||||
$rs = AppSolrQueuePeer::doSelectRS($c);
|
||||
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
//echo $c->toString();
|
||||
$rs->next();
|
||||
$row = $rs->getRow();
|
||||
|
||||
while (is_array($row)) {
|
||||
$appSolrQueue = Entity_AppSolrQueue::CreateEmpty();
|
||||
$appSolrQueue->appUid = $row['APP_UID'];
|
||||
$appSolrQueue->appUpdated = $row['APP_UPDATED'];
|
||||
$updatedApplications[] = $appSolrQueue;
|
||||
$rs->next();
|
||||
$row = $rs->getRow();
|
||||
}
|
||||
|
||||
return $updatedApplications;
|
||||
}catch(Exception $e){
|
||||
$con->rollback();
|
||||
throw($e);
|
||||
}
|
||||
}
|
||||
} // AppSolrQueue
|
||||
Reference in New Issue
Block a user