URL: /DMSearch/ExecuteGeneric

Method: POST

Descrizione

Questo metodo peremtte di eseguire una ricerca generica per classe, view e dynAss, applicandone filtri e ordinamenti.

Formato richieste

Legenda:
Parametro obbligatorio
Parametro opzionale
{
    'sessionId': '3234d544-55d0-41d1-8f10-1bfeb788bf01',
    'classTypeId': 1,
    'classTypeExternalId': 'classType',
    'idView': '3234d544-55d0-41d1-8f10-1bfeb788bf01',
    'viewExternalId': 'view',
    'dynAssObjectId': '3234d544-55d0-41d1-8f10-1bfeb788bf01',
    'dynAssExternalId': 'dynass',
    'dynAssId': '3234d544-55d0-41d1-8f10-1bfeb788bf01',
    'domainExternalIds': ['domain'],
    'objectStateIds': [1,2,3],
    'objectStateExternalIds': ['objState1', 'objState2', 'objState3'],
    'selectFieldIds': 'C123;C344;3234d544-55d0-41d1-8f10-1bfeb788bf01.C356',
    'selectFieldExternalIds': 'field1;field2;dynass.field3',
    'count': true,
    'distinct': true,
    'top': 5,
    'where':
    [
        {
            'fieldId': 456,
            'fieldExternalId': 'fieldExtId',
            'condition': 'Between',
            'value': '5',
            'value2': '10',
            'valueFormat': '',
            'valueCultureInfoName': 'it-IT'
        }
    ],
    'orderBy':
    [
        {
            'fieldId': 456
            'fieldExternalId': 'field2'
            'direction': 'ASC' / 'DESC'
        }
    ]
}

Note

  • where è una lista di filtri da applicare ai valori.
    Alcuni filtri non hanno bisogno di valori (e.g. isNull).
    Altri hanno bisogno di un solo valore (e.g. equal) quindi si popola il campoValue
    Altri hanno bisogno di due valori (e.g. between) quindi si popolano i campi Value e Value2
  • A fondo pagina è disponibile una lista dei possibili valori del campo where. I valori cambiano in funzione del tipo di dato su cui si applica il filtro.
  • ValueFormat: se ValueType è Date o DateTime, definisce il formato utilizzato. Vedere la pagina MSDN per i dettagli.
  • ValueCultureInfoName viene usato per parsare i campi numerici
  • l'API restituisce solo i profili che soddisfano tutti i parametri di ricerca
  • il parametro orderby permette di specificare un ordinamento da applicare su uno o più valori prima di ritornare il risultato
  • FieldsToSelect permette di specificare quali campi aggiuntivi del profilo si desidera recuperare, separati dal ';'.
  • Count ritorna il numero di profili trovati dalla ricerca. La struttura del JSON ritornato cambia radicalmente a seconda del valore assunto da questo parametro.
  • Distinct esegue la query in "SELECT DISTINCT..." ritornando quindi solamente i record differenti.
  • Top permette di specificare il numero massimo di profili che devono essere restituiti.

Formato risposte (se count=false)

È possibile utilizzare DM.Entities.Profile per creare delle entità JavaScript a partire dal risultato della seguente chiamata.
{
    'result':
    {
        "HasError": false,
        "Error": "",

        "Fields":
        [
                {
                      "Id": 57,
                      "Name": "field name",
                      "Label": "field label",
                      "ExternalId": "field external id",
                      "FieldType": 1,
                      "DbFieldName": "C57",
                      "LanguageId": -1
                },
                {...},
                {...}
        ],

        "Profiles":
        [
            {
                    /* system properties */
                    "DomainId": 5,
                    "ClassTypeId": 37,
                    "ObjectStateId": 14,
                    "ObjectId": "1469cf94-02d0-490b-972b-097d2a974f66",
                    "UserId": -1,
                    "Version": 0,
                    "LastUpdate": "/Date(1456807493750)/",
                    "Domain": "domainName",
                    "ClassType": "classTypeString",
                    "ObjectState": "objectStateString",
                    "Domain_ExternalId": "domainExternalId",
                    "ClassType_ExternalId": "classExternalId",
                    "ObjectState_ExternalId": "stateExternalId",
                    "InsertDt": "/Date(1455704333533)/",
                    "LanguageId": 2,

                    /* additional fields as name-value pairs */
                    "C57": "value of C57",
                    "C58": "value of C58",
                    "C59": "value of C59",
                    ...
            },
            {...},
            {...}
        ],

        "Languages":
        [
            {
                "Id": 3,
                "Name": "Italiano",
                "Code": "IT"
            },
            {...},
            {...}
        ]
    }
}

Formato risposte (se count=true)

{
    'result':
    {
        "HasError": false,
        "Error": "",
        "Count": 950
    }
}

Note

  • La proprietà Languages descrive la lista dei linguaggi gestiti da DM;
  • La proprietà Fields descrive i campi aggiuntivi della classe documentale. In questa proprietà si possono trovare id, nome, tipo, lingua e DbFieldName del campo;
    • Il DbFieldName è la stringa con cui verrà identificato il campo nella descrizione dei profili;
    • Il LanguageId serve per i campi di tipo MultiLanguage. Per questi campi, il LanguageId indica la lingua del campo. Il languageId si riferisce a uno dei LanguageIds descritti nella proprietà Languages della risposta dell'API;
  • La proprietà Profiles descrive i profili veri e propri. Qui si possono trovare tutte le proprietà di sistema oltre ai campi aggiuntivi, descritti in fields ed identificati dal loro DbFieldName

Possibili valori per where

Al seguente link, è possibile visionare le condizioni accettate in base alla tipologia del campo

Di seguito è riportato il numero di valori accettati per ogni condizione

ValueType Parametro Numero valori
StringNone0
StringIsEqual1
StringIsDifferent1
StringStartWith1
StringContains1
StringEndWith1
StringIsNull0
StringIsNotNull0
StringIsEmpty0
StringIsNotEmpty0
StringIsNullOrEmpty0
StringIsNotNullAndNotEmpty0
StringLike1
IntNone0
IntLessOf1
IntLessOrEqualOf1
IntEqual1
IntGreaterOrEqualOf1
IntGreaterOf1
IntDifferentOf1
IntBetween2
IntIsNull0
IntIsNotNull0
IntIsNullOrZero0
IntIsNotNullAndNotZero0
IntNotIncluded1
BoolNone0
BoolIsEqual1
BoolIsNull1
BoolIsNotNull1
DateNone0
DateLessOf1
DateLessOrEqualOf1
DateEqual1
DateGreaterOrEqualOf1
DateGreaterOf1
DateDifferentOf1
DateBetween2
DateIsNull0
DateIsNotNull0
DateIsNullOrZero0
DateIsNotNullAndNotZero0
DateNotIncluded1
DateIsBeyondThisYear0
DateIsLaterThisYear0
DateIsLaterThisMonth0
DateIsNextWeek0
DateIsTomorrow0
DateIsToday0
DateIsYesterday0
DateIsEarlierThisWeek0
DateIsLastWeek0
DateIsEarlierThisMonth0
DateIsEarlierThisYear0
DateIsPriorThisYear0
DateIsThisWeek0