zeebe_rs/process_instance/
cancel.rs1use crate::Client;
2use crate::ClientError;
3use crate::proto;
4
5#[derive(Debug, Clone)]
7pub struct Initial;
8
9#[derive(Debug, Clone)]
11pub struct WithProcessInstance;
12
13pub trait CancelProcessInstanceState {}
15impl CancelProcessInstanceState for Initial {}
16impl CancelProcessInstanceState for WithProcessInstance {}
17
18#[derive(Debug, Clone)]
32pub struct CancelProcessInstanceRequest<T: CancelProcessInstanceState> {
33 client: Client,
34 process_instance_key: i64,
35 operation_reference: Option<u64>,
36 _state: std::marker::PhantomData<T>,
37}
38
39impl<T: CancelProcessInstanceState> CancelProcessInstanceRequest<T> {
40 pub(crate) fn new(client: Client) -> CancelProcessInstanceRequest<Initial> {
41 CancelProcessInstanceRequest {
42 client,
43 process_instance_key: 0,
44 operation_reference: None,
45 _state: std::marker::PhantomData,
46 }
47 }
48
49 fn transition<NewState: CancelProcessInstanceState>(
50 self,
51 ) -> CancelProcessInstanceRequest<NewState> {
52 CancelProcessInstanceRequest {
53 client: self.client,
54 process_instance_key: self.process_instance_key,
55 operation_reference: self.operation_reference,
56 _state: std::marker::PhantomData,
57 }
58 }
59}
60
61impl CancelProcessInstanceRequest<Initial> {
62 pub fn with_process_instance_key(
72 mut self,
73 process_instance_key: i64,
74 ) -> CancelProcessInstanceRequest<WithProcessInstance> {
75 self.process_instance_key = process_instance_key;
76 self.transition()
77 }
78}
79
80impl CancelProcessInstanceRequest<WithProcessInstance> {
81 pub async fn send(mut self) -> Result<CancelProcessInstanceResponse, ClientError> {
87 let res = self
88 .client
89 .gateway_client
90 .cancel_process_instance(proto::CancelProcessInstanceRequest {
91 process_instance_key: self.process_instance_key,
92 operation_reference: self.operation_reference,
93 })
94 .await?;
95
96 Ok(res.into_inner().into())
97 }
98
99 pub fn with_operation_reference(mut self, operation_reference: u64) -> Self {
109 self.operation_reference = Some(operation_reference);
110 self
111 }
112}
113
114#[derive(Debug, Clone)]
116pub struct CancelProcessInstanceResponse {}
117
118impl From<proto::CancelProcessInstanceResponse> for CancelProcessInstanceResponse {
119 fn from(_value: proto::CancelProcessInstanceResponse) -> CancelProcessInstanceResponse {
120 CancelProcessInstanceResponse {}
121 }
122}