

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Riwayat alur kerja di Amazon SWF
<a name="swf-dev-about-workflow-history"></a>

Amazon SWF mencatat kemajuan setiap eksekusi alur kerja dalam *riwayat alur kerja* - catatan terperinci, lengkap, dan konsisten dari setiap peristiwa yang terjadi sejak eksekusi alur kerja dimulai. 

*Peristiwa* mewakili perubahan diskrit dalam status eksekusi alur kerja Anda, seperti aktivitas baru yang dijadwalkan atau aktivitas yang sedang berjalan diselesaikan. Riwayat alur kerja berisi setiap kejadian yang menyebabkan status eksekusi eksekusi alur kerja berubah, seperti aktivitas terjadwal dan selesai, batas waktu tugas, dan sinyal.

Operasi yang tidak mengubah status eksekusi alur kerja biasanya tidak muncul dalam riwayat alur kerja. Misalnya, riwayat alur kerja tidak menampilkan upaya pemilihan atau penggunaan operasi visibilitas.

Riwayat alur kerja memiliki beberapa manfaat utama:
+ Aplikasi dapat bersifat stateless, karena semua informasi tentang eksekusi alur kerja disimpan dalam riwayat alur kerjanya.
+ Untuk setiap eksekusi alur kerja, riwayat menyediakan catatan aktivitas yang dijadwalkan, statusnya saat ini, dan hasilnya. Eksekusi alur kerja menggunakan informasi ini untuk menentukan langkah selanjutnya.
+ Riwayat menyediakan jejak audit terperinci yang dapat digunakan untuk memantau eksekusi alur kerja yang berjalan dan memverifikasi eksekusi alur kerja yang telah selesai.

Berikut ini adalah tampilan konseptual dari riwayat alur kerja perdagangan elektronik:

```
Invoice0001

Start Workflow Execution

Schedule Verify Order
Start Verify Order Activity
Complete Verify Order Activity

Schedule Charge Credit Card
Start Charge Credit Card Activity
Complete Charge Credit Card Activity

Schedule Ship Order
Start Ship Order Activity
```

Dalam contoh sebelumnya, pesanan sedang menunggu untuk dikirim. Pada contoh berikut, pesanan selesai. Karena riwayat alur kerja bersifat kumulatif, kejadian yang lebih baru ditambahkan:

```
Invoice0001

Start Workflow Execution

Schedule Verify Order
Start Verify Order Activity
Complete Verify Order Activity

Schedule Charge Credit Card
Start Charge Credit Card Activity
Complete Charge Credit Card Activity

Schedule Ship Order
Start Ship Order Activity

Complete Ship Order Activity

Schedule Record Order Completion
Start Record Order Completion Activity
Complete Record Order Completion Activity

Close Workflow
```

Secara terprogram, peristiwa dalam riwayat eksekusi alur kerja direpresentasikan sebagai JavaScript objek Object Notation (JSON). Riwayatnya merupakan array JSON dari objek-objek ini. Setiap kejadian memiliki:
+ Tipe, seperti [WorkflowExecutionStarted](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_WorkflowExecutionStartedEventAttributes.html)atau [ActivityTaskCompleted](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_ActivityTaskCompletedEventAttributes.html)
+ Sebuah tanda waktu dalam format waktu Unix
+ ID unik yang mengidentifikasi kejadian

Selain itu, setiap jenis kejadian memiliki seperangkat atribut deskriptif yang berbeda yang sesuai dengan jenis tersebut. Misalnya, `ActivityTaskCompleted` acara memiliki atribut yang berisi IDs untuk peristiwa yang sesuai dengan waktu tugas aktivitas dijadwalkan dan kapan dimulai, serta atribut yang menyimpan data hasil.

Anda dapat memperoleh salinan status saat ini dari riwayat eksekusi alur kerja dengan menggunakan [GetWorkflowExecutionHistory](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_GetWorkflowExecutionHistory.html)tindakan. Selain itu, sebagai bagian dari interaksi antara Amazon SWF dan pengambil keputusan untuk alur kerja Anda, pengambil keputusan secara berkala menerima salinan riwayat.

Di bawah ini adalah bagian dari contoh riwayat eksekusi alur kerja dalam format JSON.

```
[  {
      "eventId": 11,
      "eventTimestamp": 1326671603.102,
      "eventType": "WorkflowExecutionTimedOut",
      "workflowExecutionTimedOutEventAttributes": {
         "childPolicy": "TERMINATE",
         "timeoutType": "START_TO_CLOSE"
      }
   }, {
      "decisionTaskScheduledEventAttributes": {
         "startToCloseTimeout": "600",
         "taskList": {
            "name": "specialTaskList"
         }
      },
      "eventId": 10,
      "eventTimestamp": 1326670566.124,
      "eventType": "DecisionTaskScheduled"
   }, {
      "activityTaskTimedOutEventAttributes": {
         "details": "Waiting for confirmation",
         "scheduledEventId": 8,
         "startedEventId": 0,
         "timeoutType": "SCHEDULE_TO_START"
      },
      "eventId": 9,
      "eventTimestamp": 1326670566.124,
      "eventType": "ActivityTaskTimedOut"
   }, {
      "activityTaskScheduledEventAttributes": {
         "activityId": "verification-27",
         "activityType": {
            "name": "activityVerify",
            "version": "1.0"
         },
         "control": "digital music",
         "decisionTaskCompletedEventId": 7,
         "heartbeatTimeout": "120",
         "input": "5634-0056-4367-0923,12/12,437",
         "scheduleToCloseTimeout": "900",
         "scheduleToStartTimeout": "300",
         "startToCloseTimeout": "600",
         "taskList": {
            "name": "specialTaskList"
         }
      },
      "eventId": 8,
      "eventTimestamp": 1326670266.115,
      "eventType": "ActivityTaskScheduled"
   }, {
      "decisionTaskCompletedEventAttributes": {
         "executionContext": "Black Friday",
         "scheduledEventId": 5,
         "startedEventId": 6
      },
      "eventId": 7,
      "eventTimestamp": 1326670266.103,
      "eventType": "DecisionTaskCompleted"
   }, {
      "decisionTaskStartedEventAttributes": {
         "identity": "Decider01",
         "scheduledEventId": 5
      },
      "eventId": 6,
      "eventTimestamp": 1326670161.497,
      "eventType": "DecisionTaskStarted"
   }, {
      "decisionTaskScheduledEventAttributes": {
         "startToCloseTimeout": "600",
         "taskList": {
            "name": "specialTaskList"
         }
      },
      "eventId": 5,
      "eventTimestamp": 1326668752.66,
      "eventType": "DecisionTaskScheduled"
   }, {
      "decisionTaskTimedOutEventAttributes": {
         "scheduledEventId": 2,
         "startedEventId": 3,
         "timeoutType": "START_TO_CLOSE"
      },
      "eventId": 4,
      "eventTimestamp": 1326668752.66,
      "eventType": "DecisionTaskTimedOut"
   }, {
      "decisionTaskStartedEventAttributes": {
         "identity": "Decider01",
         "scheduledEventId": 2
      },
      "eventId": 3,
      "eventTimestamp": 1326668152.648,
      "eventType": "DecisionTaskStarted"
   }, {
      "decisionTaskScheduledEventAttributes": {
         "startToCloseTimeout": "600",
         "taskList": {
            "name": "specialTaskList"
         }
      },
      "eventId": 2,
      "eventTimestamp": 1326668003.094,
      "eventType": "DecisionTaskScheduled"
   }
]
```

Untuk daftar detail berbagai jenis peristiwa yang dapat muncul dalam riwayat eksekusi alur kerja, lihat tipe [HistoryEvent](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_HistoryEvent.html)data di Referensi *API Layanan Alur Kerja Amazon Sederhana*.

Amazon SWF menyimpan riwayat lengkap dari semua eksekusi alur kerja selama beberapa hari yang dapat dikonfigurasi setelah eksekusi ditutup. Periode ini, yang dikenal sebagai periode penyimpanan riwayat alur kerja, ditentukan saat Anda mendaftarkan *Domain* untuk alur kerja Anda. Domain dibahas lebih terperinci nanti di bagian ini.