İşlem Gerçekleştir

mindzieStudio içinde programatik olarak işlem tetikleyin.

Genel Bakış

Execute Action uç noktası mindzieStudio içinde belirli bir işlemi tetiklemenizi sağlar. İşlemler asenkron çalıştırma için kuyruğa alınır ve ilerlemeyi takip etmek için bir yürütme kimliği alırsınız.

İşlem Gerçekleştir

GET /api/{tenantId}/{projectId}/action/execute/{actionId}

Belirli bir işlemi ID'si ile çalıştırır. İşlem yürütme kuyruğuna eklenir ve asenkron olarak işlenir.

İstek

GET https://your-mindzie-instance.com/api/{tenantId}/{projectId}/action/execute/{actionId}
Authorization: Bearer {your-access-token}

Yol Parametreleri

Parametre Tür Zorunlu Açıklama
tenantId GUID Evet Kiracı kimliğiniz
projectId GUID Evet Proje kimliğiniz
actionId GUID Evet Çalıştırılacak işlem

Yanıt

Başarılı (200 OK):

{
  "actionId": "87654321-4321-4321-4321-210987654321",
  "actionExecutionId": "11111111-2222-3333-4444-555555555555",
  "dateStarted": "2024-01-15T10:30:00Z",
  "dateEnded": null,
  "status": "Queued",
  "notes": null
}

Yanıt Alanları

Alan Tür Açıklama
actionId GUID Çalıştırılan işlemin ID'si
actionExecutionId GUID Bu yürütme örneği için benzersiz kimlik
dateStarted datetime Yürütmenin kuyruğa alındığı zaman
dateEnded datetime Yürütmenin tamamlandığı zaman (hala çalışıyorsa null)
status string Güncel yürütme durumu
notes string Ek yürütme notları veya hata mesajları

Hata Yanıtları

İşlem Bulunamadı (404):

{
  "error": "Action not found",
  "actionId": "87654321-4321-4321-4321-210987654321"
}

Yürütme Oluşturulamadı (404):

{
  "error": "Action can't create execution",
  "actionId": "87654321-4321-4321-4321-210987654321"
}

Yetkisiz (401):

HTTP/1.1 401 Unauthorized

{yetkilendirme hatasını açıklayan hata mesajı}

Yürütme Durumu Değerleri

Durum Açıklama
Queued İşlem kuyruğa alındı ve işlenmeyi bekliyor
Running İşlem şu anda çalışıyor
Completed İşlem başarıyla tamamlandı
Failed İşlem gerçekleştirilirken hata oluştu

Uygulama Örnekleri

cURL

curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/action/execute/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

JavaScript/Node.js

const TENANT_ID = '12345678-1234-1234-1234-123456789012';
const PROJECT_ID = '87654321-4321-4321-4321-210987654321';
const BASE_URL = 'https://your-mindzie-instance.com';

const executeAction = async (actionId, token) => {
  const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/action/execute/${actionId}`;

  try {
    const response = await fetch(url, {
      method: 'GET',
      headers: {
        'Authorization': `Bearer ${token}`
      }
    });

    if (response.ok) {
      const result = await response.json();
      console.log('İşlem kuyruğa alındı:', result);
      console.log('Yürütme ID:', result.actionExecutionId);
      return result;
    } else if (response.status === 404) {
      const error = await response.json();
      console.error('İşlem bulunamadı:', error);
      throw new Error(error.error);
    } else {
      throw new Error(`Yürütme başarısız oldu: ${response.status}`);
    }
  } catch (error) {
    console.error('İşlem yürütülürken hata:', error);
    throw error;
  }
};

// Örnek kullanım
executeAction('aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee', 'your_token')
  .then(result => {
    // handle için actionExecutionId kaydedin
    const executionId = result.actionExecutionId;
  });

Python

import requests

TENANT_ID = '12345678-1234-1234-1234-123456789012'
PROJECT_ID = '87654321-4321-4321-4321-210987654321'
BASE_URL = 'https://your-mindzie-instance.com'

def execute_action(action_id, token):
    """Bir işlemi çalıştırır ve yürütme detaylarını döner."""
    url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/action/execute/{action_id}'
    headers = {
        'Authorization': f'Bearer {token}'
    }

    response = requests.get(url, headers=headers)

    if response.ok:
        result = response.json()
        print(f'İşlem kuyruğa alındı: {result}')
        print(f'Yürütme ID: {result["actionExecutionId"]}')
        return result
    elif response.status_code == 404:
        error = response.json()
        print(f'İşlem bulunamadı: {error}')
        raise Exception(error['error'])
    else:
        raise Exception(f'Yürütme başarısız oldu: {response.status_code}')

# Örnek kullanım
result = execute_action('aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee', 'your_token')
execution_id = result['actionExecutionId']

C#

using System;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;

public class ActionExecutionResult
{
    public Guid ActionId { get; set; }
    public Guid ActionExecutionId { get; set; }
    public DateTime? DateStarted { get; set; }
    public DateTime? DateEnded { get; set; }
    public string Status { get; set; }
    public string Notes { get; set; }
}

public class ActionApiClient
{
    private readonly HttpClient _httpClient;
    private readonly string _baseUrl;
    private readonly Guid _tenantId;
    private readonly Guid _projectId;

    public ActionApiClient(string baseUrl, Guid tenantId, Guid projectId, string accessToken)
    {
        _baseUrl = baseUrl;
        _tenantId = tenantId;
        _projectId = projectId;
        _httpClient = new HttpClient();
        _httpClient.DefaultRequestHeaders.Authorization =
            new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
    }

    public async Task<ActionExecutionResult> ExecuteActionAsync(Guid actionId)
    {
        var url = $"{_baseUrl}/api/{_tenantId}/{_projectId}/action/execute/{actionId}";
        var response = await _httpClient.GetAsync(url);

        if (response.IsSuccessStatusCode)
        {
            var json = await response.Content.ReadAsStringAsync();
            var result = JsonSerializer.Deserialize<ActionExecutionResult>(json,
                new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
            Console.WriteLine($"İşlem kuyruğa alındı. Yürütme ID: {result.ActionExecutionId}");
            return result;
        }
        else if (response.StatusCode == System.Net.HttpStatusCode.NotFound)
        {
            throw new Exception($"İşlem {actionId} bulunamadı");
        }
        else
        {
            throw new Exception($"Yürütme başarısız oldu: {response.StatusCode}");
        }
    }
}

En İyi Uygulamalar

  • Yürütme ID'si Saklayın: Yürütme ilerlemesini takip etmek için her zaman dönen actionExecutionId değerini saklayın
  • İşlem Var mı Kontrol Edin: İşlemin var olduğundan ve etkin olduğundan emin olmak için öncelikle Get Action uç noktasını kullanın
  • Asenkron Doğasını Anlayın: İşlemler asenkron çalışır - yanıt işlem kuyruğa alındığını belirtir, tamamlandığını değil
  • Hata Yönetimi: 404 yanıtları (işlem bulunamadı) ve 401 (yetkisiz) durumları için uygun hata yönetimi uygulayın
  • Yineleyebilirlik: Her çağrı yeni bir yürütme yaratır - istemediğiniz takdirde yinelenen çağrılardan kaçının