> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Verwenden von Registrierungsparametern

> Verwenden Sie Registrierungsparameter in ABBYY Vantage, um Schlüssel-Wert-Metadaten mit API-Vorgängen für Filterung, Berichterstellung und benutzerdefinierte Verarbeitung zu übergeben.

export const VantageRegion = ({children}) => {
  const STORAGE_KEY = "abbyy.vantage.region";
  const REGIONS = [{
    code: "eu",
    label: "Europe"
  }, {
    code: "us",
    label: "North America"
  }, {
    code: "au",
    label: "Australia / Asia-Pacific"
  }];
  const [region, setRegion] = useState("eu");
  const [open, setOpen] = useState(false);
  const containerRef = useRef(null);
  const dropdownRef = useRef(null);
  function safeGetSavedRegion() {
    try {
      const saved = typeof window !== "undefined" ? window.localStorage.getItem(STORAGE_KEY) : null;
      const valid = new Set(REGIONS.map(r => r.code));
      return saved && valid.has(saved) ? saved : "eu";
    } catch {
      return "eu";
    }
  }
  function safeSetSavedRegion(code) {
    try {
      if (typeof window !== "undefined") {
        window.localStorage.setItem(STORAGE_KEY, code);
      }
    } catch {}
  }
  function dispatchRegionChanged(code) {
    try {
      if (typeof window !== "undefined") {
        window.dispatchEvent(new CustomEvent("abbyy:region-changed", {
          detail: {
            code
          }
        }));
      }
    } catch {}
  }
  function replaceRegionInString(text, currentRegion) {
    if (typeof text !== "string") return text;
    const hostRegex = /https:\/\/vantage-(eu|us|au)\.abbyy\.com/gi;
    const tokenRegex = /https:\/\/vantage-\[region\]\.abbyy\.com/gi;
    const bareHostRegex = /vantage-(eu|us|au)\.abbyy\.com/gi;
    const bareTokenRegex = /vantage-\[region\]\.abbyy\.com/gi;
    return text.replace(hostRegex, `https://vantage-${currentRegion}.abbyy.com`).replace(tokenRegex, `https://vantage-${currentRegion}.abbyy.com`).replace(bareHostRegex, `vantage-${currentRegion}.abbyy.com`).replace(bareTokenRegex, `vantage-${currentRegion}.abbyy.com`);
  }
  useEffect(() => {
    setRegion(safeGetSavedRegion());
  }, []);
  useEffect(() => {
    const root = containerRef.current;
    if (!root) return;
    const anchors = root.querySelectorAll("a[href]");
    anchors.forEach(a => {
      const href = a.getAttribute("href");
      if (href) {
        const next = replaceRegionInString(href, region);
        if (next !== href) {
          a.setAttribute("href", next);
        }
      }
    });
    const walker = typeof document !== "undefined" ? document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null) : null;
    if (walker) {
      const toUpdate = [];
      let node = walker.nextNode();
      while (node) {
        const updated = replaceRegionInString(node.nodeValue, region);
        if (updated !== node.nodeValue) {
          toUpdate.push([node, updated]);
        }
        node = walker.nextNode();
      }
      toUpdate.forEach(([textNode, value]) => {
        textNode.nodeValue = value;
      });
    }
  }, [region, children]);
  useEffect(() => {
    const root = containerRef.current;
    if (!root) return;
    const anchors = root.querySelectorAll("a[href]");
    anchors.forEach(a => {
      a.style.fontWeight = "600";
      a.style.textDecoration = "underline";
      a.style.textUnderlineOffset = "2px";
    });
  }, [region, children]);
  useEffect(() => {
    const onRegionChanged = evt => {
      const code = evt && evt.detail && evt.detail.code;
      if (!code || code === region) return;
      setRegion(code);
    };
    if (typeof window !== "undefined") {
      window.addEventListener("abbyy:region-changed", onRegionChanged);
    }
    return () => {
      if (typeof window !== "undefined") {
        window.removeEventListener("abbyy:region-changed", onRegionChanged);
      }
    };
  }, [region]);
  useEffect(() => {
    const onClickAway = e => {
      if (!dropdownRef.current) return;
      if (!dropdownRef.current.contains(e.target)) {
        setOpen(false);
      }
    };
    document.addEventListener("click", onClickAway, true);
    return () => document.removeEventListener("click", onClickAway, true);
  }, []);
  const onSelect = code => {
    setRegion(code);
    safeSetSavedRegion(code);
    dispatchRegionChanged(code);
    setOpen(false);
  };
  const current = REGIONS.find(r => r.code === region) || REGIONS[0];
  return <div className="not-prose">
      <div className="mb-4 inline-flex items-center gap-2" ref={dropdownRef}>
        <span className="text-sm text-zinc-950/80 dark:text-white/80">Tenant Region:</span>
        <div className="relative">
          <button type="button" aria-haspopup="listbox" aria-expanded={open ? "true" : "false"} onClick={() => setOpen(v => !v)} className="h-8 px-3 rounded-md bg-zinc-900/5 dark:bg-white/5 border border-zinc-950/20 dark:border-white/20 text-sm inline-flex items-center gap-2">
            <span className="text-zinc-950 dark:text-white">{current.label}</span>
            <svg width="8" height="24" viewBox="0 -9 3 24" className="transition-transform text-gray-400 overflow-visible dark:text-gray-600 ml-auto" style={{
    transform: open ? "rotate(270deg)" : "rotate(90deg)"
  }}>
              <path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round"></path>
            </svg>
          </button>
          {open ? <div role="listbox" className="absolute z-50 left-full top-0 ml-2 w-56 rounded-xl border border-zinc-950/20 dark:border-white/20 bg-white dark:bg-zinc-900 shadow-lg p-2">
              {REGIONS.map(r => {
    const selected = r.code === region;
    return <button key={r.code} type="button" role="option" aria-selected={selected ? "true" : "false"} onClick={() => onSelect(r.code)} className={"w-full flex items-center justify-between px-3 py-2 rounded-lg text-sm hover:bg-zinc-950/5 dark:hover:bg-white/10 text-zinc-950 dark:text-white" + (selected ? " font-medium" : "")}>
                    <span style={selected ? {
      color: "#ff2038"
    } : undefined}>{r.label}</span>
                    <span className={selected ? "ml-3" : "ml-3 invisible"} style={selected ? {
      color: "#ff2038"
    } : undefined}>✓</span>
                  </button>;
  })}
            </div> : null}
        </div>
      </div>
      <div ref={containerRef} className="prose dark:prose-invert max-w-none">{children}</div>
    </div>;
};

<div id="using-registration-parameters">
  ## Verwendung von Registrierungsparameter
</div>

Vorgang- und Dateiregistrierungsparameter sind Parameter, die aus Schlüssel-Wert-String-Paaren bestehen und dazu dienen, zusätzliche Benutzerinformationen bereitzustellen (z. B. Kundenname, Dokumenttyp und Informationen zur Dateiquelle). Sie werden zusammen mit der Vorgang oder den Vorgang-Documents zur Verarbeitung übergeben. Diese Parameter stehen allen Workern zur Verfügung und können in verschiedenen Produktionsszenarien verwendet werden:

* Ein Programm, das ABBYY Vantage verwendet, versieht jeden Vorgang mit einem Endkundenattribut, um Berichte zu erstellen und benutzerdefinierte Verarbeitungsabläufe zu definieren (z. B. zum Filtern von Datenkatalogen von Geschäftspartnern nach Kunden).
* Ein Scanning-Station-Client (oder eine andere Quelle für Vorgänge) kann die Registrierungsparameter eines Dokumentstapels (z. B. eine externe Korrelations-ID) übermitteln.

Registrierungsparameter können über die Vantage-API festgelegt werden:

1. Beim Erstellen eines leeren Vorgangs oder beim Initialisieren eines Vorgangs mithilfe der Methode `launch`. Senden Sie dazu eine POST-Anfrage an die Ressource `transactions`, wie im folgenden Beispiel gezeigt:

<VantageRegion>
  ```
  POST https://vantage-us.abbyy.com/api/publicapi/v1/transactions
  ```
</VantageRegion>

oder

<VantageRegion>
  ```
  POST https://vantage-us.abbyy.com/api/publicapi/v1/transactions/launch?skillId=skill-id
  ```
</VantageRegion>

Geben Sie im Request-Body die Registrierungsparameter an und führen Sie folgenden Befehl aus:

<VantageRegion>
  ```bash theme={null}
  curl -X POST "https://vantage-us.abbyy.com/api/publicapi/v1/transactions" \
  -H "Authorization: Bearer token" \
  -H "Content-Type: application/json" \
  -d "{
    \"skillId\": \"123\",
    \"registrationParameters\": [
      {
        \"key\": \"key1\",
        \"value\": \"value1\"
      }
    ]
  }"
  ```
</VantageRegion>

2. Wenn Sie Dateien zu einem Vorgang oder einem Document hochladen, senden Sie dazu eine POST-Anfrage an die Ressource `transactions/<transaction-id>/files`, wie im folgenden Beispiel:

<VantageRegion>
  ```
  POST https://vantage-us.abbyy.com/api/publicapi/v1/transactions/transaction-id/files/
  ```
</VantageRegion>

Geben Sie im Request-Body die Registrierungsparameter an und führen Sie folgenden Befehl aus:

<VantageRegion>
  ```bash theme={null}
  curl -X POST "https://vantage-us.abbyy.com/api/publicapi/v1/transactions/transaction-id/files/" \
  -H "Authorization: Bearer token" \
  -F "Files=@Invoice07.jpg; type=image/jpeg" \
  -F 'Model={
    "files": [
      {
        "index": 0,
        "imageProcessingOptions": {
          "autoCrop": "Default",
          "autoOrientation": "Default"
        },
        "registrationParameters": [
          {
            "key": "key1",
            "value": "value1"
          }
        ]
      }
    ]
  }'
  ```
</VantageRegion>

<Warning>
  Es können höchstens 10 Parameter vom Typ Schlüssel-Wert vorhanden sein, wobei der Schlüssel-Parameter bis zu 128 Zeichen und der Wert-Parameter bis zu 256 Zeichen haben darf. Die Werte dieser Parameter können nicht mehr geändert werden, nachdem sie festgelegt wurden.
</Warning>

Werte von Registrierungsparametern können gelesen werden:

* in Skripten in der benutzerdefinierten Aktivität,
* in externen Exportskripten in der Ausgabeaktivität,
* in Geschäftsregeln.

Sie können Registrierungsparameterwerte mithilfe der Vantage-API wie folgt abrufen:

1. Indem Sie die Methode `registrationParameters` für die Ressource `transactions/<transaction-id>/registrationParameters` aufrufen:

<VantageRegion>
  ```
  GET https://vantage-us.abbyy.com/api/publicapi/v1/transactions/transaction-id/registrationParameters/
  ```
</VantageRegion>

Die Antwort sieht wie folgt aus:

```json theme={null}
[
  {
    "key": "key1",
    "value": "value1"
  }
]
```

2. Indem Sie die Methode `download` für die Ressource `transactions/<transaction-id>/files/<file-id>/download` aufrufen, um die Werte im JSON-Format zusammen mit der hochgeladenen Datei zu erhalten:

<VantageRegion>
  ```
  GET https://vantage-us.abbyy.com/api/publicapi/v1/transactions/transaction-id/files/file-id/download
  ```
</VantageRegion>
