<
DQM Connect, 2024.12
Dokumentation

Entwicklerhinweise: FirstSpirit Service – DQM Connect


Beispiele

Im DQM Connect-Modul ist der "DQMConnectorVerificationService" vorhanden. Dieser Service gewährleistet die Verwendung der DQM-Funktionalität in Skripten und Arbeitsabläufen.

Folgende Methoden stehen zur Verfügung:

// Returns true if the DQMConnect Modul 
// is configured correctly.
boolean dqmVerificationAvailable()

// Renders the transferred FirstSpirit element as 
// HTML and thus calls up the DQM API.
DQMVerificationResult fetchVerificationStatus(
   IDProvider idProvider, 
   DQMVerificationParameters parameters)

// Determines the FirstSpirit element from the 
// transmitted values, renders it as HTML
// and thus calls up the DQM API.
DQMVerificationResult fetchVerificationStatus(
   long projectId, 
   long elementId, 
   Store.Type storeType, 
   DQMVerificationParameters parameters)

// Calls up the DQM API with the transmitted HTML.
DQMVerificationResult fetchVerificationStatus(String previewHtml)

Mithilfe des "DQMVerificationParameter" können Sie Einstellungen an der Sprache und dem RenderMode vornehmen.

Der Rückgabetyp "DQMVerificationResult" enthält eine Liste mit allen gefundenen Problemen. Die Einträge haben den Typ "DqmCheckpoint" und sind nach dem Rückgabetyp der DQM-API modelliert.

Beispiel-Skript

Mit dem folgenden Skript wird die DQM-Überprüfung für die Seite bzw. Seitenreferenz des aktuellen Kontexts ausgeführt. Geprüft wird, ob es priorisierte Probleme der Kategorie "Content presentation" gibt.

import de.espirit.firstspirit.agency.OperationAgent;
import de.espirit.firstspirit.agency.RenderingAgent;
import de.espirit.firstspirit.ui.operations.RequestOperation;
import de.espirit.firstspirit.access.ServicesBroker;
import com.espirit.modules.dqmconnect.DQMConnectorVerificationService;
import com.espirit.modules.dqmconnect.DQMVerificationParameters;
import java.util.function.Predicate;

service = context.requireSpecialist(ServicesBroker.TYPE)
   .getService(DQMConnectorVerificationService.class);

// Only works for Page and PageRef elements
idProvider = context.getStoreElement();
params = new DQMVerificationParameters(
    RenderingAgent.RenderMode.DEFAULT, /* optional */
   "EN");
response = service.fetchVerificationStatus(idProvider, params);
failures = response.failures();

hasContentPresentationIssues = failures.stream()
   .anyMatch(new Predicate() {
      boolean test(r) {
         return r.isPriority() && "Content presentation".equals(r.getCategory());
      }
});

message = context.requireSpecialist(OperationAgent.TYPE)
   .getOperation(RequestOperation.TYPE);
message.setTitle("Content presentation issues found:");
message.setKind(RequestOperation.Kind.INFO);
message.perform("" + hasContentPresentationIssues);

Beispiel der Integration in einen Arbeitsablauf

Der Service kann per Skript in Arbeitsläufe integriert werden. Wenn z.B. beim Fehlschlagen von Prüfungen der Kategorie "mobile" der Release-Prozess abgebrochen werden soll, kann der Service wie folgt benutzt werden:

import com.espirit.modules.dqmconnect.DQMConnectorVerificationService;
import com.espirit.modules.dqmconnect.DQMVerificationParameters;
import de.espirit.firstspirit.access.ServicesBroker;
import de.espirit.firstspirit.agency.OperationAgent;
import de.espirit.firstspirit.ui.operations.RequestOperation;
import de.espirit.firstspirit.agency.RenderingAgent.RenderMode;
import java.util.HashMap;
import java.util.ArrayList;

storeElement = context.getElement();
context.logInfo("Performing DQM Verification for " + storeElement.getUid());

servicesBroker = context.requireSpecialist(ServicesBroker.TYPE);
verificationService = servicesBroker.getService(DQMConnectorVerificationService.class);
parameters = new DQMVerificationParameters("DE");
result = verificationService.fetchVerificationStatus(storeElement, parameters);
failures = result.failures();

failuresByCategory = new HashMap();
for (checkPoint : failures) { 
  category = checkPoint.getCategory();
  if (!failuresByCategory.containsKey(category)) {
    failuresByCategory.put(category, new ArrayList());	
  }
  failuresByCategory.get(category).add(checkPoint);
}
mobileFailures = failuresByCategory.getOrDefault("Mobile", new ArrayList());

operationAgent = context.requireSpecialist(OperationAgent.TYPE);
requestOperation = operationAgent.getOperation(RequestOperation.TYPE);
if (!mobileFailures.isEmpty()) {
  requestOperation.perform("Got DQM Failures");
  context.doTransition("VerificationFailed");
} else {
  requestOperation.perform("DQM Verification OK");
  context.doTransition("Direkt freigeben");
}