BUG 6210 Request for web service to retrieve all the case variables SOLVED

- The getVariables() web service is not very useful, if you don't know which case variables have been defined.
- Added a new function for web services getAllVariables.
This commit is contained in:
Hector Cortez
2012-10-05 16:38:14 -04:00
parent 87934a5920
commit ce45c7a392
3 changed files with 102 additions and 0 deletions

View File

@@ -1653,6 +1653,43 @@ class wsBase
}
}
/**
* get all variables the system and case selected
* @param string $caseId
*
* @return $result will return an object
*/
public function getAllVariables($caseId)
{
try {
$oCase = new Cases();
$caseFields = $oCase->loadCase($caseId);
$oldFields = $caseFields['APP_DATA'];
$resFields = array();
foreach ($oldFields as $key => $val) {
$node = new stdClass();
$node->name = $key;
$resFields[] = $node;
}
$result = new wsGetVariableResponse(
0,
count($resFields) . G::loadTranslation('ID_VARIABLES_SENT'), $resFields
);
return $result;
} catch (Exception $e) {
$result = new wsGetVariableResponse(100, $e->getMessage(), null);
return $result;
}
}
/**
* new Case begins a new case under the name of the logged-in user.
* @param string $processId

View File

@@ -308,6 +308,11 @@
<xs:element name="value" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="variableListNameStruct">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="variableListRequest">
<xs:complexType>
<xs:sequence>
@@ -325,6 +330,16 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getAllVariablesResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="status_code" type="xs:integer"/>
<xs:element name="message" type="xs:string"/>
<xs:element name="timestamp" type="xs:string"/>
<xs:element name="variables" minOccurs="0" maxOccurs="unbounded" type="xs0:variableListNameStruct"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getVariablesRequest">
<xs:complexType>
<xs:sequence>
@@ -334,6 +349,14 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getAllVariablesRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="sessionId" type="xs:string"/>
<xs:element name="caseId" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="newCaseRequest">
<xs:complexType>
<xs:sequence>
@@ -920,6 +943,12 @@
<message name="getVariablesResponse">
<part name="parameters" element="xs0:getVariablesResponse"/>
</message>
<message name="getAllVariablesRequest">
<part name="parameters" element="xs0:getAllVariablesRequest"/>
</message>
<message name="getAllVariablesResponse">
<part name="parameters" element="xs0:getAllVariablesResponse"/>
</message>
<message name="sendMessageRequest">
<part name="parameters" element="xs0:sendMessageRequest"/>
</message>
@@ -1102,6 +1131,10 @@
<input message="xs0:getVariablesRequest"/>
<output message="xs0:getVariablesResponse"/>
</operation>
<operation name="getAllVariables">
<input message="xs0:getAllVariablesRequest"/>
<output message="xs0:getAllVariablesResponse"/>
</operation>
<operation name="sendMessage">
<input message="xs0:sendMessageRequest"/>
<output message="xs0:pmResponse"/>
@@ -1363,6 +1396,15 @@
<soap12:body use="literal"/>
</output>
</operation>
<operation name="getAllVariables">
<soap12:operation soapAction="urn:getAllVariables" soapActionRequired="true" style="document"/>
<input>
<soap12:body use="literal"/>
</input>
<output>
<soap12:body use="literal"/>
</output>
</operation>
<operation name="sendMessage">
<soap12:operation soapAction="urn:sendMessage" soapActionRequired="true" style="document"/>
<input>

View File

@@ -516,6 +516,28 @@ function GetVariables($params)
return $res;
}
function GetAllVariables($params)
{
$vsResult = isValidSession($params->sessionId);
if ($vsResult->status_code !== 0) {
return $vsResult;
}
if (ifPermission($params->sessionId, 'PM_CASES') == 0) {
$result = new wsGetVariableResponse(2, "You do not have privileges", null);
return $result;
}
$ws = new wsBase();
$res = $ws->getAllVariables($params->caseId);
return $res;
}
function DerivateCase($params)
{
$oSession = new Sessions();
@@ -1169,6 +1191,7 @@ $server->addFunction("removeDocument");
$server->addFunction("SendMessage");
$server->addFunction("SendVariables");
$server->addFunction("GetVariables");
$server->addFunction("GetAllVariables");
$server->addFunction("DerivateCase");
$server->addFunction("RouteCase");
$server->addFunction("executeTrigger");