BUG-13402 SOLR esta tratando de mostar la lista de casos para la carpeta SOLVED

- No se encontraba implementado.

- Se añadio funcionalidad para los casos pausados agregado el parametro $pausedtUser en las funciones buildSearchIndexDocumentPMOS2 para poder crear el xml y poder ir indexando todos los datos al servidor de solr.
- al sincronizar los datos se crea el campo "APP_PAUSED_USER_DEL_INDEX_" con el cual se podran realizar las busquedas.
- Cuando se recuperan los datos se actualizan los contadores de Paused tambien desde solr.
This commit is contained in:
Marco Antonio Nina
2013-11-07 16:40:41 -04:00
parent 3e7af25e6c
commit 0db2555968
2 changed files with 83 additions and 21 deletions

View File

@@ -446,7 +446,11 @@ class AppSolr
$delegationIndexes[] = "APP_UNASSIGNED_USER_GROUP_DEL_INDEX_" . trim ($group ['GRP_UID']) . '_txt';
}
}
// Paused, add condition
if ($userUid != null && $action == 'paused') {
$solrSearchText .= "APP_PAUSED_USERS:" . $userUid . ' AND ';
$delegationIndexes[] = "APP_PAUSED_USER_DEL_INDEX_" . trim ($userUid) . '_txt';
}
//search action
if ($action == 'search'){
if($dateFrom != "" || $dateTo != "") {
@@ -515,12 +519,12 @@ class AppSolr
'resultFormat' => 'json'
);
$solrRequestData = Entity_SolrRequestData::createForRequestPagination ($data);
// use search index to return list of cases
$searchIndex = new BpmnEngine_Services_SearchIndex ($this->_solrIsEnabled, $this->_solrHost);
// execute query
$solrQueryResult = $searchIndex->getDataTablePaginatedList ($solrRequestData);
if($this->debug)
{
$this->afterSolrQueryTime = microtime (true);
@@ -787,6 +791,9 @@ class AppSolr
$data = $this->getAppGridData ($userUid, 0, 0, 'unassigned', null, null, null, null,
null, null, null, null, null, null, null, true);
$casesCount ['selfservice'] = $data ['totalCount'];
$data = $this->getAppGridData ($userUid, 0, 0, 'paused', null, null, null, null,
null, null, null, null, null, null, null, true);
$casesCount ['paused'] = $data ['totalCount'];
return $casesCount;
}
@@ -1309,7 +1316,6 @@ class AppSolr
*/
public function updateApplicationSearchIndex($aaAPPUIDs, $saveDBRecord = false)
{
if (empty ($aaAPPUIDs))
return;
@@ -1642,6 +1648,7 @@ class AppSolr
$participatedUsersCompletedByUser = $result [11];
$unassignedUsers = $result [12];
$unassignedGroups = $result [13];
$pausedtUser = $result [14];
try {
@@ -1649,7 +1656,7 @@ class AppSolr
$xmlCurrentDoc = $this->buildSearchIndexDocumentPMOS2 ($documentInformation, $dynaformFieldTypes,
$lastUpdateDate, $maxPriority, $delLastIndex, $assignedUsers, $assignedUsersRead, $assignedUsersUnread,
$draftUser, $participatedUsers, $participatedUsersStartedByUser, $participatedUsersCompletedByUser,
$unassignedUsers, $unassignedGroups);
$unassignedUsers, $unassignedGroups,$pausedtUser);
//concat doc to the list of docs
$xmlDoc .= $xmlCurrentDoc;
@@ -1749,7 +1756,7 @@ class AppSolr
public function buildSearchIndexDocumentPMOS2($documentData, $dynaformFieldTypes, $lastUpdateDate,
$maxPriority, $delLastIndex, $assignedUsers, $assignedUsersRead, $assignedUsersUnread, $draftUser,
$participatedUsers, $participatedUsersStartedByUser, $participatedUsersCompletedByUser,
$unassignedUsers, $unassignedGroups)
$unassignedUsers, $unassignedGroups,$pausedtUser)
{
// build xml document
@@ -1964,6 +1971,19 @@ class AppSolr
$writer->endElement ();
}
}
if (! empty ($pausedtUser)) {
foreach ($pausedtUser as $paused) {
$writer->startElement ("field");
$writer->writeAttribute ('name', 'APP_PAUSED_USERS');
$writer->text ($paused ['USR_UID']);
$writer->endElement ();
$writer->startElement ("field");
$writer->writeAttribute ('name', 'APP_PAUSED_USER_DEL_INDEX_' . trim ($paused ['USR_UID']) . '_txt');
$writer->text ($paused ['DEL_INDEX']);
$writer->endElement ();
}
}
// get the serialized fields
if (! empty ($documentData ['APP_DATA']) && $documentData ['APP_DATA'] != "N;" ) {
@@ -2184,7 +2204,8 @@ class AppSolr
$indexes = $this->aaSearchRecords ($allAppDbData, array (
'DEL_THREAD_STATUS' => 'OPEN',
'DEL_FINISH_DATE' => 'NULL',
'APP_STATUS' => 'TO_DO' //, 'APP_THREAD_STATUS' => 'OPEN'
'APP_STATUS' => 'TO_DO', //, 'APP_THREAD_STATUS' => 'OPEN'
'APP_TYPE' => ''
));
foreach ($indexes as $index) {
$assignedUsers [] = array (
@@ -2263,6 +2284,19 @@ class AppSolr
'DEL_INDEX' => $allAppDbData [$index] ['DEL_INDEX']
);
}
$pausedUsers = array ();
$indexes = $this->aaSearchRecords ($allAppDbData, array (
'APP_TYPE' => 'PAUSE'
));
foreach ($indexes as $index) {
if ($allAppDbData [$index] ['APP_DISABLE_ACTION_USER'] == null || $allAppDbData [$index] ['APP_DISABLE_ACTION_USER'] == 0) {
$pausedUsers [] = array (
'USR_UID' => $allAppDbData [$index] ['USR_UID'],
'DEL_INDEX' => $allAppDbData [$index] ['DEL_INDEX']
);
}
}
// search information of unassigned users
// the unassigned users are the self service users and groups.
// the self service users are defined in the TASKs of the PROCESS.
@@ -2369,7 +2403,8 @@ class AppSolr
$participatedUsersStartedByUser,
$participatedUsersCompletedByUser,
$unassignedUsers,
$unassignedGroups
$unassignedGroups,
$pausedUsers
);
return $result;
@@ -2649,7 +2684,6 @@ class AppSolr
*/
public function getListApplicationUpdateDelegationData($aaAppUIDs)
{
$allAppDbData = array ();
$c = new Criteria ();
@@ -2690,12 +2724,17 @@ class AppSolr
$c->addSelectColumn ('at.APP_THREAD_PARENT');
$c->addSelectColumn ('at.APP_THREAD_STATUS');
$c->addSelectColumn ('ade.APP_DELAY_UID');
$c->addSelectColumn ('ade.APP_TYPE');
$c->addSelectColumn ('ade.APP_DISABLE_ACTION_USER');
$c->addAsColumn("PRO_CATEGORY_UID", "pro.PRO_CATEGORY");
$c->addAlias ('capp', 'CONTENT');
$c->addAlias ('cpro', 'CONTENT');
$c->addAlias ('ad', 'APP_DELEGATION');
$c->addAlias ('at', 'APP_THREAD');
$c->addAlias ('ade', 'APP_DELAY');
$c->addAlias ("pro", ProcessPeer::TABLE_NAME);
$aConditions = array ();
@@ -2741,6 +2780,30 @@ class AppSolr
);
$c->addJoinMC ($aConditions, Criteria::JOIN);
$aConditions = array ();
$aConditions [] = array (
'ad.APP_UID',
'ade.APP_UID'
);
$aConditions [] = array (
'ad.DEL_INDEX',
'ade.APP_DEL_INDEX'
);
//$aConditions [] = array (
// 'ade.APP_DISABLE_ACTION_USER',
// DBAdapter::getStringDelimiter () . 'null' . DBAdapter::getStringDelimiter ()
//);
$aConditions [] = array (
'ade.APP_DISABLE_ACTION_USER',
DBAdapter::getStringDelimiter () . '0' . DBAdapter::getStringDelimiter ()
);
$aConditions [] = array (
'ade.APP_TYPE',
DBAdapter::getStringDelimiter () . 'PAUSE' . DBAdapter::getStringDelimiter ()
);
$c->addJoinMC($aConditions, Criteria::LEFT_JOIN);
$arrayCondition = array();
$arrayCondition[] = array(ApplicationPeer::PRO_UID, "pro.PRO_UID");
$c->addJoinMC($arrayCondition, Criteria::LEFT_JOIN);
@@ -2758,7 +2821,6 @@ class AppSolr
$rs->next ();
$row = $rs->getRow ();
}
//Propel::close();
return $allAppDbData;

View File

@@ -289,7 +289,7 @@ function getAllCounters ()
$aCount = $ApplicationSolrIndex->getCasesCount( $userUid );
//get paused count
$aCountMissing = $oAppCache->getAllCounters( array ('paused','completed','cancelled'), $userUid );
$aCountMissing = $oAppCache->getAllCounters( array ('completed','cancelled'), $userUid );
$aCount = array_merge( $aCount, $aCountMissing );
} else {