Processo di allocazione delle risorse del distributore di risorse
Ogni volta che un distributore di risorse alloca una risorsa dal relativo titolare, si verifica quanto segue:
Il distributore di risorse dichiara un identificatore del tipo di risorsa (RESTYPID), che descrive il tipo di risorsa necessaria.
Il distributore di risorse chiama il metodo IHolder::AllocResource del titolare, passando questo RESTYPID.
Il titolare genera un elenco di candidati dalle risorse disponibili. I candidati sono risorse che non sono incluse in una transazione o già inserite nella transazione dell'oggetto chiamante.
Questi candidati vengono passati singolarmente al metodo IDispenserDriver::RateResource in cui vengono valutati (su una scala da 0 a 100) in base al livello di corrispondenza della risorsa candidata corrispondente all'OGGETTO RESTYPID desiderato.
Il titolare sceglie la risorsa che il distributore di risorse ha la tariffa più alta.
Il distributore di risorse può terminare il ciclo di classificazione in anticipo assegnando al candidato una classificazione di risorsa pari a 100 (un adattamento perfetto). Una classificazione pari a 100 sarebbe normalmente riservata alle risorse candidate già inserite correttamente, a meno che il distributore di risorse non conclude che l'integrazione sia un'operazione poco costosa. Se tutte le risorse candidate (se presenti) sono valutate 0 (inutilizzabili), viene creata una nuova risorsa chiamando IDispenserDriver::CreateResource.
Se la risorsa scelta in precedenza non è già inclusa nella transazione dell'oggetto chiamante, viene chiamato il metodo IDispenserDriver::EnlistResource del distributore di risorse.
La chiamata al metodo AllocResource torna al distributore di risorse con la risorsa inclusa.
Argomenti correlati