Algorithm
writeDataJob(dataJobId, DataJobMetadata, DataJobWriteRequest) {

	Map<ProducerKey, Collection> producerKeyMap = new HashMap()
	
	FOR writeRequest in DataJobWriteRequest

		dataNode = inventoryPersistence.getCmHandleDataNodeByLongestMatchAlternateId(writeOperation.path())		
		ProducerKey prodKey = new ProducerKey( dataNode.dmiServiceName, dataProducerIdentifier)
		SubJob sjwr = createSubJob(DataJobMetadata, dataNode, dataJobId) // method to create the request
		
		if (producerKeyMap.contains(prodKey)
			// update the Map's collection with the new request
		else
			producerKeyMap.put(prodKey, sjwr)
	END FOR
	
	FOR value in producerKeyMap
		dmiUrl = DmiServiceUrlBuilder.createUrlForSubJob() // new method
		dmiRestClient.postOperation( value ) // send each collection of subjobs to the right DMI plugin
	END FOR
}


CPS-2142 - Getting issue details... STATUS


Set up

CM-Handle (by FDN)DMIProducer
ch-1DMI-Ap1
ch-2DMI-Ap1
ch-3DMI-Ap2
ch-4DMI-Bp1

Scenarios


Incoming Jobs TargetsOutgoing Requests[]Notes
Outgoing RequestOutgoing RequestOutgoing Request
1ch-1DMI-A → ch-1


2ch-1, ch-1DMI-A → ch-1, ch-1

can have multiple jobs for same cm-handle
3ch-1, ch-2DMI-A → ch-1, ch-2


4ch-1, ch-3DMI-A → ch-1DMI-A → ch-3
even though same DMI is involved, since the producer (key) is different 2 outgoing jobs are required in this case
5ch-1, ch-4DMI-A → ch-1DMI-B → ch-4

6ch-1, ch-2, ch-3, ch-4DMI-A → ch-1, ch-2DMI-A → ch-3DMI-B → ch-4
7ch-2, ch-3, ch-4, ch-1DMI-A → ch-2, ch-1DMI-A → ch-3DMI-B → ch-4note how the order of ch-2 and ch-1 is maintained in the outgoing request!





  • No labels