Bloktypen
Categorieën van Analyseblokken
Ontdek verschillende bloktypen, waaronder filters, rekenmachines en meldingsconfiguraties. Leer over de mogelijkheden van elk type, configuratie-opties en aanmaakendpunten.
Filterblokken
POST /api/{tenantId}/{projectId}/block/filter
Filterblokken passen gegevensfiltercriteria toe op datasets, waardoor de data wordt gereduceerd door voorwaarden zoals datumbereiken, waarde-filters of logische expressies. Ze vormen de basis voor gerichte analyses op specifieke subsets van data.
Mogelijkheden
- Filtering op datumbereik: Data filteren binnen specifieke tijdsperiodes
- Filtering op activiteit: Bepaalde procesactiviteiten opnemen of uitsluiten
- Filtering op case-attributen: Filteren op basis van case-eigenschappen en metadata
- Filtering op waardebereik: Numerieke en tekstwaardenvoorwaarden toepassen
- Complexe logica: Meerdere filters combineren met EN/OF-operatoren
Request Body
{
"notebookId": "660e8400-e29b-41d4-a716-446655440000",
"blockTitle": "Filter datumbereik",
"blockDescription": "Filtert procesdata voor de laatste 30 dagen"
}
Configuratievoorbeelden
// Configuratie datumbereik filter
{
"filterType": "dateRange",
"startDate": "2024-01-01T00:00:00Z",
"endDate": "2024-01-31T23:59:59Z",
"dateField": "timestamp"
}
// Configuratie activiteit-filter
{
"filterType": "activity",
"include": ["Order Created", "Payment Processed"],
"exclude": ["System Log"]
}
// Configuratie case-attribuut filter
{
"filterType": "caseAttribute",
"attribute": "customerType",
"operator": "equals",
"value": "Premium"
}
Rekenkundige Blokken
POST /api/{tenantId}/{projectId}/block/calculator
Rekenkundeblokken voeren wiskundige bewerkingen en analytische berekeningen uit op datasets. Ze berekenen metrische gegevens, aggregaties, statistische maten en afgeleide waarden voor procesmininganalyses.
Mogelijkheden
- Duur berekeningen: Proces cyclustijden en doorlooptijden
- Frequentie analyse: Activiteitvoorkomens en patronen
- Prestatiemaatstaven: Doorvoer, efficiëntie en benutting
- Statistische analyse: Gemiddelde, mediaan, percentielen en verdelingen
- Aangepaste formules: Complexe wiskundige expressies en KPI’s
Request Body
{
"notebookId": "660e8400-e29b-41d4-a716-446655440000",
"blockTitle": "Procesduurcalculator",
"blockDescription": "Berekent gemiddelde case-duur en cyclustijden"
}
Configuratievoorbeelden
// Configuratie duur berekening
{
"calculationType": "duration",
"startActivity": "Order Created",
"endActivity": "Order Completed",
"unit": "hours",
"aggregation": "average"
}
// Configuratie frequentie berekening
{
"calculationType": "frequency",
"groupBy": "activity",
"timeWindow": "daily",
"metric": "count"
}
// Configuratie aangepaste KPI berekening
{
"calculationType": "custom",
"formula": "(completedCases / totalCases) * 100",
"resultUnit": "percentage",
"name": "Voltooiingspercentage"
}
Alert Blokken
POST /api/{tenantId}/{projectId}/block/alert
Alertblokken monitoren data-condities en activeren meldingen wanneer specifieke criteria zijn bereikt. Ze bieden geautomatiseerde monitoring en uitzonderingsdetectie voor procesmining workflows en compliance-eisen.
Mogelijkheden
- Drempelbewaking: Alert bij overschrijding van gedefinieerde limieten voor metrische gegevens
- Patroonherkenning: Identificeer afwijkende procesgedragspatronen
- Compliance monitoring: Volg naleving van bedrijfsregels
- Prestatiealerts: Houd SLA-overtredingen en prestatieverslechteringen in de gaten
- Realtime notificaties: Directe waarschuwingen bij kritieke situaties
Request Body
{
"notebookId": "660e8400-e29b-41d4-a716-446655440000",
"blockTitle": "SLA-overtredingsalert",
"blockDescription": "Waarschuwt wanneer case-duur SLA-drempel overschrijdt"
}
Configuratievoorbeelden
// Configuratie drempelalert
{
"alertType": "threshold",
"metric": "caseDuration",
"operator": "greaterThan",
"threshold": 48,
"unit": "hours",
"severity": "high"
}
// Configuratie patroonafwijkingsalert
{
"alertType": "patternDeviation",
"baselinePattern": "Order -> Payment -> Fulfillment",
"deviationTolerance": 0.1,
"minOccurrences": 10
}
// Configuratie compliance alert
{
"alertType": "compliance",
"rule": "approvalRequired",
"condition": "amount > 1000",
"requiredActivity": "Manager Approval"
}
Vergelijking Bloktypen
Kies het juiste bloktype voor jouw analysetaken:
| Bloktype | Primaire Doelstelling | Input | Output | Gebruikssituaties |
|---|---|---|---|---|
| Filter | Datareductie en focussering | Volledige dataset | Gefilterde dataset | Analyse van tijdsperiodes, specifieke procespaden |
| Calculator | Berekening van metrics en KPI’s | Dataset (gefilterd of volledig) | Berekende waarden/metrics | Prestatiemeting, statistische analyse |
| Alert | Monitoring en meldingen | Metrics of dataset | Alertcondities/meldingen | SLA monitoring, detectie uitzonderingen |
Voorbeeld: Compleet Blok Workflow
Dit voorbeeld toont het aanmaken van verschillende bloktypen voor een uitgebreide analyse:
// Maak een filterblok aan om te focussen op recente data
const createDateFilter = async (notebookId) => {
const response = await fetch(`/api/${tenantId}/${projectId}/block/filter`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({
notebookId: notebookId,
blockTitle: 'Filter laatste 30 dagen',
blockDescription: 'Focus analyse op recente procesdata'
})
});
return await response.json();
};
// Maak een rekenblok aan om metrics te berekenen
const createDurationCalculator = async (notebookId) => {
const response = await fetch(`/api/${tenantId}/${projectId}/block/calculator`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({
notebookId: notebookId,
blockTitle: 'Gemiddelde duur calculator',
blockDescription: 'Bereken gemiddelde case verwerkingsduur'
})
});
return await response.json();
};
// Maak een alertblok aan voor monitoring
const createSLAAlert = async (notebookId) => {
const response = await fetch(`/api/${tenantId}/${projectId}/block/alert`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({
notebookId: notebookId,
blockTitle: 'SLA-overtredingsalert',
blockDescription: 'Monitor SLA-overtredingen'
})
});
return await response.json();
};
// Bouw volledige analyse workflow
const buildAnalysisWorkflow = async (notebookId) => {
try {
// 1. Filter data naar recente periode
const filterBlock = await createDateFilter(notebookId);
console.log('Filterblok aangemaakt:', filterBlock.blockId);
// 2. Bereken prestatie metrics
const calculatorBlock = await createDurationCalculator(notebookId);
console.log('Rekenblok aangemaakt:', calculatorBlock.blockId);
// 3. Stel monitoring alerts in
const alertBlock = await createSLAAlert(notebookId);
console.log('Alertblok aangemaakt:', alertBlock.blockId);
return {
filter: filterBlock,
calculator: calculatorBlock,
alert: alertBlock
};
} catch (error) {
console.error('Fout bij het bouwen van workflow:', error);
throw error;
}
};
Python Implementatie
import requests
from typing import Dict, Any
class BlockTypeManager:
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 create_filter_block(self, notebook_id: str, title: str, description: str) -> Dict[str, Any]:
"""Maak een filterblok aan voor datareductie"""
url = f"{self.base_url}/api/{self.tenant_id}/{self.project_id}/block/filter"
payload = {
'notebookId': notebook_id,
'blockTitle': title,
'blockDescription': description
}
response = requests.post(url, json=payload, headers=self.headers)
response.raise_for_status()
return response.json()
def create_calculator_block(self, notebook_id: str, title: str, description: str) -> Dict[str, Any]:
"""Maak een rekenblok aan voor metric berekeningen"""
url = f"{self.base_url}/api/{self.tenant_id}/{self.project_id}/block/calculator"
payload = {
'notebookId': notebook_id,
'blockTitle': title,
'blockDescription': description
}
response = requests.post(url, json=payload, headers=self.headers)
response.raise_for_status()
return response.json()
def create_alert_block(self, notebook_id: str, title: str, description: str) -> Dict[str, Any]:
"""Maak een alertblok aan voor monitoring"""
url = f"{self.base_url}/api/{self.tenant_id}/{self.project_id}/block/alert"
payload = {
'notebookId': notebook_id,
'blockTitle': title,
'blockDescription': description
}
response = requests.post(url, json=payload, headers=self.headers)
response.raise_for_status()
return response.json()
def create_analysis_pipeline(self, notebook_id: str) -> Dict[str, Any]:
"""Maak een volledige analyse pijplijn aan met alle bloktypen"""
pipeline = {}
# Maak filterblok aan
pipeline['filter'] = self.create_filter_block(
notebook_id,
'Datafilter',
'Filter dataset voor analysekader'
)
# Maak rekenblok aan
pipeline['calculator'] = self.create_calculator_block(
notebook_id,
'Prestatiecalculator',
'Bereken kernprestatiemetrics'
)
# Maak alertblok aan
pipeline['alert'] = self.create_alert_block(
notebook_id,
'Prestatiealert',
'Monitor prestatiedrempels'
)
return pipeline
# Voorbeeld van gebruik
block_manager = BlockTypeManager(
'https://your-mindzie-instance.com',
'tenant-guid',
'project-guid',
'your-auth-token'
)
# Maak volledige analyse pijplijn aan
pipeline = block_manager.create_analysis_pipeline('notebook-guid')
print(f"Pijplijn aangemaakt met {len(pipeline)} blokken")
Belangrijke Opmerkingen
Blokafhankelijkheden: Blokken kunnen aan elkaar gekoppeld worden waarbij filterblokken data reduceren, rekenblokken metrics berekenen en alertblokken de resultaten monitoren op uitzonderingen.
Beste Praktijk: Begin met filterblokken om de datareikwijdte te beperken, gebruik daarna rekenblokken voor analyse en voeg tot slot alertblokken toe voor continue monitoring en meldingen.