Uniek ID-vereiste voor het wissen van records

De Maximo Data Loader maakt gebruik van de Maximo OSLC-API. Om een record te kunnen wissen, heeft de API een uniek ID nodig.

Deze ID's worden automatisch gemaakt door Maximo for Civil Infrastructure. Het ID dat voor een bepaald record wordt gemaakt, zoals een activum, is uniek voor dat Maximo for Civil Infrastructure-systeem. Hoewel elk systeem een uniek ID maakt, kan de Maximo Data Loader dezelfde gegevens op meerdere systemen verwerken, zelfs als de gegevens tijdens de verwerking worden gewijzigd. De Maximo Data Loader kan bijvoorbeeld gegevens in Systeem 1 laden, wijzigingen uitvoeren, de gegevens weer exporteren naar Excel en de gewijzigde gegevens laden in Systeem 2.

Wanneer de Maximo Data Loader de datadictionary voor een objectstructuur laadt, wordt bepaald wat de primaire sleutel en unieke sleutel voor het object zijn. Voor bijvoorbeeld de objectstructuur MXAPIASSET bestaat de primaire sleutel uit de kenmerken SITEID en ASSETNUM en wordt het gegenereerde ID ASSETUID genoemd. De Maximo Data Loader gebruikt de primaire sleutel en de gegenereerde ID om op Maximo for Civil Infrastructure een query uit te voeren en zo het unieke ID te verkrijgen. Als één ID wordt geretourneerd, wordt een wisaanvraag met dat ID verzonden naar Maximo for Civil Infrastructure.

Om ervoor te zorgen dat de Maximo Data Loader records kan wissen, moeten de primaire sleutelkolommen in het werkblad zijn opgegeven en de juiste waarden hebben. De Maximo Data Loader controleert niet of het werkblad de primaire sleutels bevat. Als er echter een primaire sleutelkolom ontbreekt, maakt de Maximo Data Loader een null-vergelijking wanneer wordt geprobeerd het unieke ID voor het record op te halen. De null-vergelijking zorgt ervoor dat de wisbewerking mislukt voor dat record.

Als een record met succes wordt gewist, geeft de Maximo Data Loader het ID van elk gewist object weer in het veld Resultaten.

Voorbeeld

Als een aanvraag wordt gedaan om een activumrecord met SITEID=BEDFORD, ORGID=EAGLENA en ASSETNUM=SAMPLEASSET1 te wissen, genereert de Maximo Data Loader de volgende initiële aanvraag:

GET /maximo/oslc/os/mxapiasset?oslc.where=siteid="BEDFORD" and orgid=”EAGLENA” and assetnum="SAMPLEASSET1"&oslc.select=assetuid&lean=1

Als bijvoorbeeld het unieke ID 1234 wordt geretourneerd, verzendt de Maximo Data Loader een DELETE-aanvraag als onderdeel van een bulksgewijze POST-aanvraag:
{
      "_meta":{ "uri":"http://host/maximo/oslc/os/mxapiasset/1234", "method": "DELETE" }
   },
   {
      "_meta":{ "uri":"http://host/maximo/oslc/os/mxapiasset/1235", "method": "DELETE" }
   }
] [

Als het kenmerk SITEID bijvoorbeeld niet op het werkblad is vermeld of de waarde ervan leeg is, genereert de Maximo Data Loader de volgende query:

GET /maximo/oslc/os/mxapiasset?oslc.where=siteid!="*" and orgid=”EAGLENA” and
        assetnum="SAMPLEASSET1"&oslc.select=assetuid&lean=1

De tekenreeks !=”*” is het OSLC-equivalent van is null. Voor een activumobject wordt geen ID geretourneerd omdat het SITEID niet null mag zijn.

Voor een ASSET-object wordt geen ID geretourneerd omdat het kenmerk SITEID geen nullwaarde mag zijn.

Voor andere objecten zijn nullwaarden toegestaan voor primaire sleutelkolommen en werkt de wisaanvraag als de query slechts één uniek ID retourneert.

De vereiste om aanvankelijk het unieke ID voor elk record in Maximo for Civil Infrastructure op te halen, resulteert in een extra query per te wissen object. Hierdoor is de responstijd voor bulksgewijs wissen veel langer dan voor updates.

Fouten worden weggeschreven naar een foutbestand en de relevante records worden getagd. Als er bijvoorbeeld al records zijn gewist, ziet u mogelijk de volgende fout:

Het record kan niet worden gewist omdat het object niet bestaat of omdat de query geen uniek ID heeft geretourneerd.

Objecten wissen in de objectstructuur MXCLASSIFICATION

Standaard is er geen unieke sleutel voor de objectstructuur MXCLASSIFICATION gedefinieerd en ondersteunt deze objectstructuur bijgevolg geen wisbewerkingen. Voor de objectstructuur MXCLASSIFICATION vervangt de Maximo Data Loader de standaard primaire sleutel en de unieke sleutel om wisbewerkingen toe te staan. U moet het kenmerk CLASSSTRUCTUREUID, dat standaard is uitgesloten, opnemen. Om het kenmerk op te nemen, voert u het volgende dbc-script uit en start u Maximo for Civil Infrastructure opnieuw:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script SYSTEM "script.dtd">
<script author="mooreof" scriptname="update_mxclassification_os">
<description>Epic XXX</description>
  	<statements>

        <delete table="maxintobjcols">
			<where>
				<columnvalue column="intobjectname" string="MXCLASSIFICATION" />
				<columnvalue column="objectname" string="CLASSSTRUCTURE" />
				<columnvalue column="name" string="CLASSSTRUCTUREUID" />
				<columnvalue column="intobjfldtype" string="EXCLUDE" />
			</where>
		</delete>

	</statements>
</script>

Als u het script wilt uitvoeren, kopieert u het naar /opt/IBM/SMP/maximo/tools/maximo/en/civil. Vervolgens schakelt u over naar de directory /opt/IBM/SMP/maximo/tools/maximo/internal en geeft u het volgende op:

./runscriptfile.sh -ccivil -fupdate_mxclassification_os

U kunt het selectievakje Excluded voor dit kenmerk ook uitschakelen in de toepassing Objectstructuren in Maximo for Civil Infrastructure. U moet Maximo for Civil Infrastructure echter opnieuw starten om de wijziging te laten ingaan.

U kunt nu klassenstructuren wissen.