Block Typ Entdeckung
Einheitlicher Blocktypen-Endpunkt
GET /api/tenant/{tenantId}/project/{projectId}/block/types/all
Entdecken Sie alle verfügbaren Blocktypen (Filter, Rechner und Anreicherungen) mit einem einzigen API-Aufruf. Dieser einheitliche Endpunkt ist der empfohlene Weg, vollständige Informationen über alle Analysefähigkeiten, die in mindzieStudio verfügbar sind, abzurufen.
Warum den einheitlichen Endpunkt verwenden?
Der einheitliche Endpunkt bietet gegenüber der Abfrage einzelner Kategorien folgende Vorteile:
- Einzelner Request: Erhalten Sie alle Blocktypen in einem API-Aufruf statt in mehreren Anfragen
- Vollständige Metadaten: Beinhaltet Anreicherungen, die über kategoriespezifische Endpunkte nicht verfügbar sind
- Gruppierte Antwort: Ergebnisse sind nach Blockkategorie organisiert für eine einfache Verarbeitung
- Reiche Metadaten: Jeder Blocktyp enthält Dokumentations-URLs, Nutzungshinweise und verwandte Blöcke
- KI-Integration: Optimiert für KI-Coding-Assistenten und MCP-Server-Integration
Anfrage
GET /api/tenant/{tenantId}/project/{projectId}/block/types/all
Authorization: Bearer {token}
Pfadparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
tenantId |
GUID | Ja | Die Mandanten-ID |
projectId |
GUID | Ja | Die Projekt-ID |
Antwort
Struktur der Antwort
{
"BlockTypes": [...],
"Categories": ["Attributfilter", "Zeitfilter", "Rechner", ...],
"TotalCount": 45,
"ByBlockCategory": {
"Filter": [...],
"Calculator": [...],
"Enrichment": [...]
}
}
Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
BlockTypes |
Array | Alle Blocktypen mit vollständigen Metadaten |
Categories |
Array | Liste aller einzigartigen Kategorien |
TotalCount |
Integer | Gesamtzahl der verfügbaren Blocktypen |
ByBlockCategory |
Objekt | Blocktypen gruppiert nach Filter/Rechner/Anreicherung |
Block Typ Objekt
Jeder Blocktyp im BlockTypes-Array enthält:
| Feld | Typ | Beschreibung |
|---|---|---|
OperatorName |
String | Eindeutiger Bezeichner für den Blocktyp (z.B. "CaseAttributeFilter") |
DisplayName |
String | Benutzerfreundlicher Name, der in der UI angezeigt wird |
Description |
String | Kurze Beschreibung der Funktion des Blocks |
Category |
String | Funktionale Kategorie (z.B. "Attributfilter", "Zeitfilter") |
BlockType |
String | Oberste Klassifikation: "Filter", "Calculator" oder "Enrichment" |
DocumentationUrl |
String | URL zur Dokumentationsseite für diesen Blocktyp |
UsageFrequency |
String | Wie häufig dieser Blocktyp verwendet wird ("Hoch", "Mittel", "Niedrig") |
ExcludeFromOrFilter |
Boolean | Ob dieser Filter in ODER-Kombinationen verwendet werden darf |
AutoTitleEnabled |
Boolean | Ob automatische Titelerstellung unterstützt wird |
SupportedDisplayTypes |
Array | Unterstützte Visualisierungstypen für Ergebnisse |
UsageNotes |
String | Zusätzliche Hinweise zur Verwendung dieses Blocktyps |
RelatedBlocks |
Array | Liste verwandter Blocktypen |
CommonUseCases |
Array | Typische Anwendungsfälle, in denen dieser Blocktyp nützlich ist |
Beispielantwort
{
"BlockTypes": [
{
"OperatorName": "CaseAttributeFilter",
"DisplayName": "Case Attribute Filter",
"Description": "Filtert Fälle basierend auf Attributwerten wie Kundentyp, Region oder Prioritätsstufe",
"Category": "Attributfilter",
"BlockType": "Filter",
"DocumentationUrl": "/mindzie_studio/filters/case-attribute-filter",
"UsageFrequency": "Hoch",
"ExcludeFromOrFilter": false,
"AutoTitleEnabled": true,
"SupportedDisplayTypes": ["table", "chart"],
"UsageNotes": "Unterstützt exakte Übereinstimmung, Enthalten und Regex-Muster",
"RelatedBlocks": ["EventAttributeFilter", "CaseIdFilter"],
"CommonUseCases": [
"Filter nach Kundensegment",
"Fokus auf bestimmte Regionen",
"Analyse von Hochprioritätsfällen"
]
},
{
"OperatorName": "CaseDurationCalculator",
"DisplayName": "Case Duration Calculator",
"Description": "Berechnet die Gesamtdauer von Fällen von Beginn bis Ende",
"Category": "Zeitrechner",
"BlockType": "Calculator",
"DocumentationUrl": "/mindzie_studio/calculators/case-duration-calculator",
"UsageFrequency": "Hoch",
"ExcludeFromOrFilter": false,
"AutoTitleEnabled": true,
"SupportedDisplayTypes": ["histogram", "table", "boxplot"],
"UsageNotes": "Die Dauer wird in der im Projekt konfigurierten Zeiteinheit berechnet",
"RelatedBlocks": ["ActivityDurationCalculator", "WaitTimeCalculator"],
"CommonUseCases": [
"Analyse der Fallzykluszeiten",
"Identifizierung langsam verlaufender Fälle",
"Vergleich der Prozesseffizienz"
]
},
{
"OperatorName": "CaseStageCalculator",
"DisplayName": "Case Stage Calculator",
"Description": "Weist Fällen auf Basis von Aktivitätsmustern und Regeln Phasenlabels zu",
"Category": "Phasenanalyse",
"BlockType": "Enrichment",
"DocumentationUrl": "/mindzie_studio/enrichments/case-stage-calculator",
"UsageFrequency": "Mittel",
"ExcludeFromOrFilter": false,
"AutoTitleEnabled": true,
"SupportedDisplayTypes": ["sankey", "table"],
"UsageNotes": "Erfordert konfigurierbare Phasendefinitionen",
"RelatedBlocks": ["CaseStatusEnrichment", "MilestoneDetector"],
"CommonUseCases": [
"Verfolgung des Fallfortschritts durch Phasen",
"Identifizierung von Engpassphasen",
"Überwachung von Phasenübergängen"
]
}
],
"Categories": [
"Attributfilter",
"Zeitfilter",
"Aktivitätsfilter",
"Zeitrechner",
"Zählrechner",
"Phasenanalyse",
"Datenanreicherung"
],
"TotalCount": 45,
"ByBlockCategory": {
"Filter": [
{ "OperatorName": "CaseAttributeFilter", "DisplayName": "Case Attribute Filter", ... },
{ "OperatorName": "DateRangeFilter", "DisplayName": "Date Range Filter", ... }
],
"Calculator": [
{ "OperatorName": "CaseDurationCalculator", "DisplayName": "Case Duration Calculator", ... }
],
"Enrichment": [
{ "OperatorName": "CaseStageCalculator", "DisplayName": "Case Stage Calculator", ... }
]
}
}
JavaScript-Beispiel
// Entdecke alle verfügbaren Blocktypen
async function discoverAllBlockTypes(tenantId, projectId, token) {
const response = await fetch(
`/api/tenant/${tenantId}/project/${projectId}/block/types/all`,
{
method: 'GET',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
}
);
if (!response.ok) {
throw new Error(`Fehler beim Entdecken der Blocktypen: ${response.status}`);
}
const data = await response.json();
console.log(`Entdeckte ${data.TotalCount} Blocktypen:`);
console.log(`- Filter: ${data.ByBlockCategory.Filter.length}`);
console.log(`- Rechner: ${data.ByBlockCategory.Calculator.length}`);
console.log(`- Anreicherungen: ${data.ByBlockCategory.Enrichment.length}`);
return data;
}
// Finde Blocktypen nach Kategorie
function getBlockTypesByCategory(allTypes, category) {
return allTypes.BlockTypes.filter(bt => bt.Category === category);
}
// Finde Blocktypen mit hoher Nutzung
function getHighUsageBlockTypes(allTypes) {
return allTypes.BlockTypes.filter(bt => bt.UsageFrequency === 'Hoch');
}
// Verwendung
const blockTypes = await discoverAllBlockTypes(tenantId, projectId, token);
const timeFilters = getBlockTypesByCategory(blockTypes, 'Zeitfilter');
const popular = getHighUsageBlockTypes(blockTypes);
Python-Beispiel
import requests
from typing import Dict, List, Any
class BlockTypeDiscovery:
def __init__(self, base_url: str, tenant_id: str, project_id: str, token: str):
self.base_url = base_url
self.tenant_id = tenant_id
self.project_id = project_id
self.headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
def discover_all(self) -> Dict[str, Any]:
"""Entdecke alle verfügbaren Blocktypen"""
url = f"{self.base_url}/api/tenant/{self.tenant_id}/project/{self.project_id}/block/types/all"
response = requests.get(url, headers=self.headers)
response.raise_for_status()
return response.json()
def get_filters(self) -> List[Dict]:
"""Hole alle Filter-Blocktypen"""
data = self.discover_all()
return data.get('ByBlockCategory', {}).get('Filter', [])
def get_calculators(self) -> List[Dict]:
"""Hole alle Rechner-Blocktypen"""
data = self.discover_all()
return data.get('ByBlockCategory', {}).get('Calculator', [])
def get_enrichments(self) -> List[Dict]:
"""Hole alle Anreicherungs-Blocktypen"""
data = self.discover_all()
return data.get('ByBlockCategory', {}).get('Enrichment', [])
def find_by_use_case(self, keyword: str) -> List[Dict]:
"""Finde Blocktypen passend zu einem Anwendungsfall-Schlüsselwort"""
data = self.discover_all()
results = []
for block_type in data['BlockTypes']:
use_cases = block_type.get('CommonUseCases', [])
if any(keyword.lower() in uc.lower() for uc in use_cases):
results.append(block_type)
return results
# Verwendung
discovery = BlockTypeDiscovery(
'https://your-mindzie-instance.com',
'tenant-guid',
'project-guid',
'your-auth-token'
)
# Entdecke alle Blocktypen
all_types = discovery.discover_all()
print(f"Gesamtanzahl Blocktypen: {all_types['TotalCount']}")
# Hole Blocktypen nach Kategorie
filters = discovery.get_filters()
calculators = discovery.get_calculators()
enrichments = discovery.get_enrichments()
# Finde Blocktypen für Daueranalysen
duration_blocks = discovery.find_by_use_case('duration')
Kategorien-spezifische Endpunkte
Der einheitliche Endpunkt wird für die meisten Anwendungsfälle empfohlen. Kategorien-spezifische Endpunkte sind jedoch weiterhin verfügbar:
| Endpunkt | Beschreibung |
|---|---|
GET /block/types?category=filters |
Nur Filter |
GET /block/types?category=calculators |
Nur Rechner |
GET /block/types/{operatorName} |
Details eines einzelnen Blocktyps |
GET /block/types/{operatorName}/schema |
Konfigurationsschema für einen Blocktyp |
MCP Server Integration
KI-Coding-Assistenten können den mindzieAPI MCP-Server verwenden, um Blocktypen programmatisch zu entdecken:
mindzie_list_block_types category="unified"
Dieser MCP-Tool-Aufruf gibt dieselbe einheitliche Antwort zurück, was es KI-Werkzeugen erleichtert, alle verfügbaren Analysefähigkeiten zu verstehen.
Siehe MCP Server Integration für die vollständige Dokumentation.
Anwendungsfälle
Erstellung dynamischer UIs
Verwenden Sie den einheitlichen Endpunkt, um Blocktyp-Auswahlmenüs mit vollständigen Informationen zu jeder Option zu füllen.
KI-gestützte Analyse
KI-Assistenten können verfügbare Analysefähigkeiten entdecken und basierend auf den Nutzerzielen passende Blocktypen vorschlagen.
Dokumentationserstellung
Generieren Sie dynamische Dokumentation, indem Sie alle Blocktypen und deren Metadaten durchlaufen.
Fähigkeiten-Audit
Listet alle verfügbaren Analysefähigkeiten für ein Projekt auf, um vollständige Abdeckung sicherzustellen.