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'; $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 //search action
if ($action == 'search'){ if ($action == 'search'){
if($dateFrom != "" || $dateTo != "") { if($dateFrom != "" || $dateTo != "") {
@@ -515,12 +519,12 @@ class AppSolr
'resultFormat' => 'json' 'resultFormat' => 'json'
); );
$solrRequestData = Entity_SolrRequestData::createForRequestPagination ($data); $solrRequestData = Entity_SolrRequestData::createForRequestPagination ($data);
// use search index to return list of cases // use search index to return list of cases
$searchIndex = new BpmnEngine_Services_SearchIndex ($this->_solrIsEnabled, $this->_solrHost); $searchIndex = new BpmnEngine_Services_SearchIndex ($this->_solrIsEnabled, $this->_solrHost);
// execute query // execute query
$solrQueryResult = $searchIndex->getDataTablePaginatedList ($solrRequestData); $solrQueryResult = $searchIndex->getDataTablePaginatedList ($solrRequestData);
if($this->debug) if($this->debug)
{ {
$this->afterSolrQueryTime = microtime (true); $this->afterSolrQueryTime = microtime (true);
@@ -770,7 +774,7 @@ class AppSolr
public function getCasesCount($userUid) public function getCasesCount($userUid)
{ {
$casesCount = array (); $casesCount = array ();
// get number of records in todo list // get number of records in todo list
$data = $this->getAppGridData ($userUid, 0, 0, 'todo', null, null, null, null, null, $data = $this->getAppGridData ($userUid, 0, 0, 'todo', null, null, null, null, null,
null, null, null, null, null, null, true); null, null, null, null, null, null, true);
@@ -787,7 +791,10 @@ class AppSolr
$data = $this->getAppGridData ($userUid, 0, 0, 'unassigned', null, null, null, null, $data = $this->getAppGridData ($userUid, 0, 0, 'unassigned', null, null, null, null,
null, null, null, null, null, null, null, true); null, null, null, null, null, null, null, true);
$casesCount ['selfservice'] = $data ['totalCount']; $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; return $casesCount;
} }
@@ -1309,7 +1316,6 @@ class AppSolr
*/ */
public function updateApplicationSearchIndex($aaAPPUIDs, $saveDBRecord = false) public function updateApplicationSearchIndex($aaAPPUIDs, $saveDBRecord = false)
{ {
if (empty ($aaAPPUIDs)) if (empty ($aaAPPUIDs))
return; return;
@@ -1582,8 +1588,8 @@ class AppSolr
foreach ($indexes as $index) { foreach ($indexes as $index) {
$aaAppData[] = $aaAllAppDelData [$index]; $aaAppData[] = $aaAllAppDelData [$index];
} }
$result = $this->getApplicationIndexData ($aAPPUID ['APP_UID'], $aaAppData); $result = $this->getApplicationIndexData ($aAPPUID ['APP_UID'], $aaAppData);
if($this->debug) if($this->debug)
@@ -1642,6 +1648,7 @@ class AppSolr
$participatedUsersCompletedByUser = $result [11]; $participatedUsersCompletedByUser = $result [11];
$unassignedUsers = $result [12]; $unassignedUsers = $result [12];
$unassignedGroups = $result [13]; $unassignedGroups = $result [13];
$pausedtUser = $result [14];
try { try {
@@ -1649,7 +1656,7 @@ class AppSolr
$xmlCurrentDoc = $this->buildSearchIndexDocumentPMOS2 ($documentInformation, $dynaformFieldTypes, $xmlCurrentDoc = $this->buildSearchIndexDocumentPMOS2 ($documentInformation, $dynaformFieldTypes,
$lastUpdateDate, $maxPriority, $delLastIndex, $assignedUsers, $assignedUsersRead, $assignedUsersUnread, $lastUpdateDate, $maxPriority, $delLastIndex, $assignedUsers, $assignedUsersRead, $assignedUsersUnread,
$draftUser, $participatedUsers, $participatedUsersStartedByUser, $participatedUsersCompletedByUser, $draftUser, $participatedUsers, $participatedUsersStartedByUser, $participatedUsersCompletedByUser,
$unassignedUsers, $unassignedGroups); $unassignedUsers, $unassignedGroups,$pausedtUser);
//concat doc to the list of docs //concat doc to the list of docs
$xmlDoc .= $xmlCurrentDoc; $xmlDoc .= $xmlCurrentDoc;
@@ -1749,7 +1756,7 @@ class AppSolr
public function buildSearchIndexDocumentPMOS2($documentData, $dynaformFieldTypes, $lastUpdateDate, public function buildSearchIndexDocumentPMOS2($documentData, $dynaformFieldTypes, $lastUpdateDate,
$maxPriority, $delLastIndex, $assignedUsers, $assignedUsersRead, $assignedUsersUnread, $draftUser, $maxPriority, $delLastIndex, $assignedUsers, $assignedUsersRead, $assignedUsersUnread, $draftUser,
$participatedUsers, $participatedUsersStartedByUser, $participatedUsersCompletedByUser, $participatedUsers, $participatedUsersStartedByUser, $participatedUsersCompletedByUser,
$unassignedUsers, $unassignedGroups) $unassignedUsers, $unassignedGroups,$pausedtUser)
{ {
// build xml document // build xml document
@@ -1889,7 +1896,7 @@ class AppSolr
$writer->text ($draftUser ['USR_UID']); $writer->text ($draftUser ['USR_UID']);
$writer->endElement (); $writer->endElement ();
} }
if (is_array ($participatedUsers) && ! empty ($participatedUsers)) { if (is_array ($participatedUsers) && ! empty ($participatedUsers)) {
foreach ($participatedUsers as $userUID) { foreach ($participatedUsers as $userUID) {
$writer->startElement ("field"); $writer->startElement ("field");
@@ -1964,6 +1971,19 @@ class AppSolr
$writer->endElement (); $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 // get the serialized fields
if (! empty ($documentData ['APP_DATA']) && $documentData ['APP_DATA'] != "N;" ) { if (! empty ($documentData ['APP_DATA']) && $documentData ['APP_DATA'] != "N;" ) {
@@ -2184,7 +2204,8 @@ class AppSolr
$indexes = $this->aaSearchRecords ($allAppDbData, array ( $indexes = $this->aaSearchRecords ($allAppDbData, array (
'DEL_THREAD_STATUS' => 'OPEN', 'DEL_THREAD_STATUS' => 'OPEN',
'DEL_FINISH_DATE' => 'NULL', '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) { foreach ($indexes as $index) {
$assignedUsers [] = array ( $assignedUsers [] = array (
@@ -2263,6 +2284,19 @@ class AppSolr
'DEL_INDEX' => $allAppDbData [$index] ['DEL_INDEX'] '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 // search information of unassigned users
// the unassigned users are the self service users and groups. // the unassigned users are the self service users and groups.
// the self service users are defined in the TASKs of the PROCESS. // the self service users are defined in the TASKs of the PROCESS.
@@ -2369,7 +2403,8 @@ class AppSolr
$participatedUsersStartedByUser, $participatedUsersStartedByUser,
$participatedUsersCompletedByUser, $participatedUsersCompletedByUser,
$unassignedUsers, $unassignedUsers,
$unassignedGroups $unassignedGroups,
$pausedUsers
); );
return $result; return $result;
@@ -2649,7 +2684,6 @@ class AppSolr
*/ */
public function getListApplicationUpdateDelegationData($aaAppUIDs) public function getListApplicationUpdateDelegationData($aaAppUIDs)
{ {
$allAppDbData = array (); $allAppDbData = array ();
$c = new Criteria (); $c = new Criteria ();
@@ -2685,17 +2719,22 @@ class AppSolr
$c->addSelectColumn ('ad.DEL_FINISHED'); $c->addSelectColumn ('ad.DEL_FINISHED');
$c->addSelectColumn ('ad.DEL_DELAYED'); $c->addSelectColumn ('ad.DEL_DELAYED');
$c->addSelectColumn ('ad.APP_OVERDUE_PERCENTAGE'); $c->addSelectColumn ('ad.APP_OVERDUE_PERCENTAGE');
$c->addSelectColumn ('at.APP_THREAD_INDEX'); $c->addSelectColumn ('at.APP_THREAD_INDEX');
$c->addSelectColumn ('at.APP_THREAD_PARENT'); $c->addSelectColumn ('at.APP_THREAD_PARENT');
$c->addSelectColumn ('at.APP_THREAD_STATUS'); $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->addAsColumn("PRO_CATEGORY_UID", "pro.PRO_CATEGORY");
$c->addAlias ('capp', 'CONTENT'); $c->addAlias ('capp', 'CONTENT');
$c->addAlias ('cpro', 'CONTENT'); $c->addAlias ('cpro', 'CONTENT');
$c->addAlias ('ad', 'APP_DELEGATION'); $c->addAlias ('ad', 'APP_DELEGATION');
$c->addAlias ('at', 'APP_THREAD'); $c->addAlias ('at', 'APP_THREAD');
$c->addAlias ('ade', 'APP_DELAY');
$c->addAlias ("pro", ProcessPeer::TABLE_NAME); $c->addAlias ("pro", ProcessPeer::TABLE_NAME);
$aConditions = array (); $aConditions = array ();
@@ -2740,29 +2779,52 @@ class AppSolr
'at.APP_THREAD_INDEX' 'at.APP_THREAD_INDEX'
); );
$c->addJoinMC ($aConditions, Criteria::JOIN); $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();
$arrayCondition[] = array(ApplicationPeer::PRO_UID, "pro.PRO_UID"); $arrayCondition[] = array(ApplicationPeer::PRO_UID, "pro.PRO_UID");
$c->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); $c->addJoinMC($arrayCondition, Criteria::LEFT_JOIN);
$c->add (ApplicationPeer::APP_UID, $aaAppUIDs, Criteria::IN); $c->add (ApplicationPeer::APP_UID, $aaAppUIDs, Criteria::IN);
$rs = ApplicationPeer::doSelectRS ($c); $rs = ApplicationPeer::doSelectRS ($c);
$rs->setFetchmode (ResultSet::FETCHMODE_ASSOC); $rs->setFetchmode (ResultSet::FETCHMODE_ASSOC);
$rs->next (); $rs->next ();
$row = $rs->getRow (); $row = $rs->getRow ();
while (is_array ($row)) { while (is_array ($row)) {
$allAppDbData [] = $row; $allAppDbData [] = $row;
$rs->next (); $rs->next ();
$row = $rs->getRow (); $row = $rs->getRow ();
} }
//Propel::close(); //Propel::close();
return $allAppDbData; return $allAppDbData;
} }
/** /**
* Get the list of groups of unassigned users of the specified task from * Get the list of groups of unassigned users of the specified task from

View File

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