Benutzerdefinierte Vorlagen für den Dokumentenexport
Mit dem Dokumentenexport-Assistenten von Requirements Portal können Sie editierbare Microsoft Word *.docx dateien direkt aus Ihren Anforderungen und V&V-Aktivitäten zu erstellen. Sie können vordefinierte Vorlagen verwenden oder Ihre eigenen Vorlagen hochladen. Der Assistent wird von der Python-Docx-Template-Bibliothek angetrieben, die wiederum die Jinja Templating Engine nutzt. Dieses dynamische Duo ermöglicht es Ihnen, eigene Vorlagen zu erstellen.
Python-Docx-Template-Bibliothek
Die Python-Docx-Template-Bibliothek ist ein leistungsstarkes Werkzeug, das die Funktionalität der Python-Docx-Bibliothek erweitert. Sie enthält die Jinja Templating Engine und ermöglicht die dynamische Generierung von Inhalten in Ihren Word-Dateien. Das bedeutet, dass Sie Variablen, Schleifen und Bedingungen verwenden können, um Ihr Dokument während der Bearbeitung mit Daten zu füllen. Im Grunde ist es so, als würden Sie Ihrem Word-Dokument einen Schuss Espresso geben.
Verwalten von Exportvorlagen
Die für Ihre Requirements Portal-Instanz verfügbaren Vorlagen werden auf der Seite Export templates seite » Settings » Export templates).
-
Standardmäßig werden sechs Vorlagen bereitgestellt - drei für den Export von Anforderungsdokumenten und drei für den Export von V&V-Aktivitätsdokumenten.
-
Weitere Informationen zu Vorlagen für den Anforderungsexport finden Sie auf der Seite Dokumentenexport.
-
Weitere Informationen zu den Exportvorlagen für V&V-Aktivitäten finden Sie auf der Seite Dokumentenexport.
-
-
Um eine neue benutzerdefinierte Vorlage hinzuzufügen, klicken Sie auf die Schaltfläche
oben rechts auf der Seite. In dem Add template erscheinenden Fenster wählen Sie aus, ob die neue Vorlage angewendet werden soll auf Requirements oder V&V Activities anwenden soll, indem Sie die Applicable objects aus und verwenden Sie dann den Bereich Select template um die Vorlagendatei auszuwählen.
Klicken Sie im Dialog auf die Schaltfläche
, um die Vorlage hinzuzufügen. Sie wird dann in der Liste auf der Seite Export templates seite angezeigt und kann dann beim Dokumentenexport verwendet werden.
-
Die Datei einer beliebigen Vorlage kann heruntergeladen werden. Klicken Sie dazu unter auf die Schaltfläche
in der Name spalte der gewünschten Vorlage und wählen Sie den Download befehl. Je nach Ihren persönlichen Browsereinstellungen lädt Ihr Browser die Datei entweder automatisch an einen vordefinierten Ort herunter oder fragt Sie, wo Sie sie auf Ihrer Festplatte speichern möchten.
-
Eine benutzerdefinierte Vorlage kann mit einer neuen Vorlagendatei überschrieben werden. Klicken Sie dazu auf die Schaltfläche
in der Spalte Name spalte der gewünschten Vorlage und wählen Sie den Befehl Overwrite Template aus dem angezeigten Menü. Verwenden Sie das Overwrite template das sich öffnet, um die Anwendbarkeit der Vorlage zu definieren und die neue Datei auszuwählen. Aktivieren Sie die I confirm I want to overwrite option und klicken Sie auf die Schaltfläche
, um den Vorgang abzuschließen.
Anhang - Datenobjektstruktur von Anforderungsexportvorlagen
Hier sehen Sie die Grundstruktur des Objekts, aus dem Ihre Anforderungsexportvorlagen Informationen beziehen.
Requirement Export Templates – Data Object Structure
{
"Spezifikationen": [
{
"id": "number",
"name": "string",
"description": "string",
"Anforderungen": [
{
"id": "string",
"Bezeichner": "string",
"text": "RichText",
"title": "string",
"Begründung": "RichText",
"images": ["Bild"],
"type": "string",
"verification_methods": [{
"name": "string",
"text": "string",
"component_vms": [{
"name": "string",
"closeout_reference": "string"
}]
}],
"spezifikation_id": "Zahl",
"group_id": "Zahl",
"applicability_conditions": ["string"],
"content_type": {
"id": "string",
"name": "string"
},
"state": "string",
"Einhaltung": "string",
"einhaltung_kommentar": "string",
"tags": ["string"],
"parents": [{
"id": "string",
"identifier": "string",
"text": "RichText",
"title": "string"
}],
"Kinder": [{
"id": "string",
"identifier": "string",
"text": "RichText",
"title": "string"
}],
"Besitzer": {
"user": {
"benutzername": "string",
"vor_name": "string",
"last_name": "zeichenkette",
"groups": ["string"]
},
"group": {
"name": "string",
"users": ["string"]
}
},
"files": [{
"name": "string",
"Beschreibung": "string",
"version": "Zeichenfolge",
"is_reference": "boolesch",
"tags": ["string"]
}],
"custom_fields": [{
"field": "string",
"value": ["string"]
}],
"Position": "Zahl",
"verifikation_items_verified": "Zahl",
"verifikation_items_total": "Zahl",
"verification_items": [{
"status": "string",
"Komponente": "string",
"tags": ["string"],
"Aktivität": {
"name": "string",
"verification_methods": ["string"]
},
"last_item_run": {
"status": "string",
"Kommentar": "string"
}
}],
"linked_components": [{
"id": "number",
"name": "string",
"description": "Zeichenfolge",
"valis": [{
"id": "Zahl",
"name": "string",
"value": "Zeichenfolge",
"Formel": "string"
}],
"textvalis": [{
"id": "number",
"name": "string",
"text": "string"
}],
"matrices": [{
"id": "Zahl",
"name": "string",
"value": "Zeichenfolge",
"Formel": "string"
}],
"datevalis": [{
"id": "number",
"name": "string",
"date": "string"
}],
"Ersteller": "Zeichenfolge",
"Anhänge": [{
"name": "string",
"Beschreibung": "string",
"version": "Zeichenfolge",
"is_reference": "boolesch",
"tags": ["string"]
}]
}]
}
],
"content_type": {
"id": "Nummer",
"name": "string"
}
}
],
"Anforderungen": [
{
"id": "string",
"Bezeichner": "string",
"text": "RichText",
"title": "string",
"Begründung": "RichText",
"images": ["Bild"],
"type": "string",
"verification_methods": [{
"name": "string",
"text": "string",
"component_vms": [{
"name": "string",
"closeout_reference": "string"
}]
}],
"spezifikation_id": "Zahl",
"group_id": "Zahl",
"applicability_conditions": ["string"],
"content_type": {
"id": "string",
"name": "string"
},
"state": "string",
"Einhaltung": "string",
"einhaltung_kommentar": "string",
"tags": ["string"],
"parents": [{
"id": "string",
"identifier": "string",
"text": "RichText",
"title": "string"
}],
"Kinder": [{
"id": "string",
"identifier": "string",
"text": "RichText",
"title": "string"
}],
"Besitzer": {
"user": {
"benutzername": "string",
"vor_name": "string",
"last_name": "zeichenkette",
"groups": ["string"]
},
"group": {
"name": "string",
"users": ["string"]
}
},
"files": [{
"name": "string",
"Beschreibung": "string",
"version": "Zeichenfolge",
"is_reference": "boolesch",
"tags": ["string"]
}],
"custom_fields": [{
"field": "string",
"value": ["string"]
}],
"Position": "Zahl",
"verifikation_items_verified": "Zahl",
"verifikation_items_total": "Zahl",
"verification_items": [{
"status": "string",
"Komponente": "string",
"tags": ["string"],
"Aktivität": {
"name": "string",
"verification_methods": ["string"]
},
"last_item_run": {
"status": "string",
"Kommentar": "string"
}
}],
"linked_components": [{
"id": "number",
"name": "string",
"valis": [{
"id": "Zahl",
"name": "string",
"value": "Zeichenfolge",
"Formel": "string"
}],
"textvalis": [{
"id": "number",
"name": "string",
"text": "string"
}],
"matrices": [{
"id": "Zahl",
"name": "string",
"value": "Zeichenfolge",
"Formel": "string"
}],
"datevalis": [{
"id": "number",
"name": "string",
"date": "string"
}],
"Ersteller": "Zeichenfolge",
"Anhänge": [{
"name": "string",
"Beschreibung": "string",
"version": "Zeichenfolge",
"is_reference": "boolesch",
"tags": ["string"]
}]
}]
}
],
"requirements_groups": [
{
"id": "number",
"name": "string",
"description": "string",
"spezifikation_id": "Zahl",
"Anforderungen": [
{
"id": "string",
"Bezeichner": "string",
"text": "RichText",
"title": "string",
"Begründung": "RichText",
"images": ["Bild"],
"type": "string",
"verification_methods": [{
"name": "string",
"text": "string",
"component_vms": [{
"name": "string",
"closeout_reference": "string"
}]
}],
"spezifikation_id": "Zahl",
"group_id": "Zahl",
"applicability_conditions": ["string"],
"content_type": {
"id": "string",
"name": "string"
},
"state": "string",
"Einhaltung": "string",
"einhaltung_kommentar": "string",
"tags": ["string"],
"parents": [{
"id": "string",
"identifier": "string",
"text": "RichText",
"title": "string"
}],
"Kinder": [{
"id": "string",
"identifier": "string",
"text": "RichText",
"title": "string"
}],
"Besitzer": {
"user": {
"benutzername": "string",
"vor_name": "string",
"last_name": "zeichenkette",
"groups": ["string"]
},
"group": {
"name": "string",
"users": ["string"]
}
},
"files": [{
"name": "string",
"Beschreibung": "string",
"version": "Zeichenfolge",
"is_reference": "boolesch",
"tags": ["string"]
}],
"custom_fields": [{
"field": "string",
"value": ["string"]
}],
"Position": "Zahl",
"verifikation_items_verified": "Zahl",
"verifikation_items_total": "Zahl",
"verification_items": [{
"status": "string",
"Komponente": "string",
"tags": ["string"],
"Aktivität": {
"name": "string",
"verification_methods": ["string"]
},
"last_item_run": {
"status": "string",
"Kommentar": "string"
}
}],
"linked_components": [{
"id": "number",
"name": "string",
"valis": [{
"id": "Zahl",
"name": "string",
"value": "Zeichenfolge",
"Formel": "string"
}],
"textvalis": [{
"id": "number",
"name": "string",
"text": "string"
}],
"matrices": [{
"id": "Zahl",
"name": "string",
"value": "Zeichenfolge",
"Formel": "string"
}],
"datevalis": [{
"id": "number",
"name": "string",
"date": "string"
}],
"Ersteller": "Zeichenfolge",
"Anhänge": [{
"name": "string",
"Beschreibung": "string",
"version": "Zeichenfolge",
"is_reference": "boolesch",
"tags": ["string"]
}]
}]
}
],
"content_type": {
"id": "Nummer",
"name": "string"
}
}
],
"timestamp": "datetime",
"template_name": "string",
"verification_and_validation_methods": [{
"id": "number",
"name": "string",
"description": "string"
}]
}
Sortierung der Felder
Sie können die Anforderungen sortieren, indem Sie die Sort funktion im Jinja-Vorlagendokument sortieren. Zum Beispiel können Sie hinzufügen |sort(attribute='identifier') einfügen, wobei die Anforderungen alphanumerisch nach der Bezeichnerspalte sortiert werden.
Beispiel:
{% for requirement in requirements|selectattr("specification_id", "equalto", specification.id)|selectattr("group_id", "none") |sort(attribute='identifier') -%}
Benutzerdefinierte Spalten
Mit dem aktuellen Dokumentenexporter können Sie die Werte benutzerdefinierter Spalten einfach exportieren. Für eine einfache textbasierte benutzerdefinierte Spalte können Sie die folgende generische Struktur verwenden:
{% for custom_field in requirement.custom_fields|selectattr(“field”, “equalto”, “Name of Custom Column”) %}{{r custom_field.value }}{% endfor %}
Stellen Sie sicher, dass Sie den Name of Custom Column text durch den tatsächlichen Namen der Spalte ersetzen, der in der Spaltenüberschrift angegeben ist.
Handelt es sich bei der benutzerdefinierten Spalte nicht um einen Text, sondern um eine Mehrfachauswahloption, kann der Benutzer den folgenden Code verwenden und ihn für seinen Anwendungsfall aktualisieren.
{%- if requirement.custom_fields -%}
{%- set additional_info_values = [] -%}
{%- set category_values = [] -%}
{%- set additional_info_custom_fields = requirement.custom_fields | selectattr('field', 'equalto', 'Additional Information') -%}
{% for custom_field in additional_info_custom_fields -%}
{%- set additional_info_values = additional_info_values + custom_field.value -%}
{% endfor -%}
{%- set category_custom_fields = requirement.custom_fields | selectattr('field', 'equalto', 'Category') -%}
{% for custom_field in category_custom_fields -%}
{%- set category_values = category_values + custom_field.value -%}
{% endfor -%}
{%- set additional_info_string = additional_info_values | join(';') -%}
{%- set category_string = category_info_values | join(';') -%}
{%- endif -%}
Anhang - Datenobjektstruktur der Exportvorlagen für V&V-Aktivitäten
Hier ist die grundlegende Struktur des Objekts, aus dem Ihre Exportvorlagen für V&V-Aktivitäten Informationen beziehen.
V&V Activity Export Templates – Data Object Structure
# TOP LEVEL
{
aktivitäten: [{}] # Liste aller Aktivitäten
folders: [{
name: string
activities: [{}] # Liste der Aktivitäten
}]
timestamp: datetime
template_name: string
}
# Aktivität
{
id: Zahl
name: Zeichenkette
beschreibung: Zeichenkette
erwartete_Ergebnisse: string
tags: [string]
verification_methods: [{
name: zeichenkette
description: string
}]
owner: Benutzer oder Gruppe
custom_fields: [] # Liste der CustomFields
approvals: boolesch
items: [{}] # Liste von VVItems
step_definitions: [{}] # Liste von StepDefinitions
runs: [{}] # Liste der ActivityRuns
}
# VVItem
{
id: Zahl
anforderung_identifikator: string
component: { # Wie die verknüpften Komponenten im Dokument reqs export
id: Zahl
name: Zeichenkette
valis: [{
id: Zahl
name: Zeichenkette
wert: Zeichenkette
formel: zeichenkette
}]
textvalis: [{
id: Zahl
name: Zeichenkette
text: Zeichenkette
}]
matrizen: [{
id: Zahl
name: Zeichenkette
wert: Zeichenkette
formel: zeichenkette
}]
datevalis: [{
id: Zahl
name: zeichenkette
datum: Zeichenkette
}]
ersteller: string
anhänge: [{
name: Zeichenkette
beschreibung: string
version: Zeichenkette
is_reference: boolescher Wert
tags: [string]
}]
}
compliance: string
einhaltung_kommentar: string
letzter_Eintrag_lauf: {} # VVItemRun
last_item_run_status: str
item_runs: [{}] # Liste der VVItemRuns
}
# StepDefinition
{
id: int
activity_id: int
schritt_nummer: int
position: Float
voll_schritt_nummer: str
voll_schritt_pfad: str
übergeordneter_schritt_id: int
name: zeichenkette
beschreibung: string
erwartete_Ergebnisse: string
tags: [string]
item_ids: [] # Liste der VVItems ids
}
# ActivityRun
{
id: int
name: Zeichenkette
beschreibung: string
zeitstempel: string
start_date: string # Format wie in reqs doc export verwenden
finish_date: zeichenkette
abschluss_status: int
abgeschlossen_am: string
abgeschlossen_von: Benutzer
tätigkeit_id: int
default_run: bool
position: Float
steps_synced: bool
expected_results: string
evidence: string # Name der Datei/Dokument
custom_fields: [] # Liste der CustomFields
tags: [string]
run_executor: {} # Benutzer oder Gruppe
genehmiger: {} # Benutzer oder Gruppe
approved: boolesch
genehmigt_von: Benutzer
approved_at: Zeichenkette
item_runs: [] # Liste der VVItemRuns
step_runs: [{}] # Liste der VVStepRuns
}
# VVItemRun
{
id: int
status: Zeichenkette
verified_by: Benutzer
tätigkeit_lauf_id: int
status: "status-anzeigen-name"
kommentar: zeichenkette
serial_number: Zeichenkette
step_run_id: int # StepRun
verification_item:{} # VVItem
verification_item_requirement_identifier: string
verification_item_component_name: string
}
# StepRun
{
id: int
name: Zeichenkette
kommentar: zeichenkette
status: zeichenkette
beschreibung: string
aktivität_lauf_id: int
voll_schritt_nummer: str
schritt_nummer: int
position: Float
voll_schritt_lauf_pfad: str
übergeordneter_Schritt_Auftrag: int
erwartete_Ergebnisse: string
tags: [string]
item_run_ids: [] # Liste von VVItemRun ids
item_requirement_identifiers: str
}