GS2-StateMachine 트랜잭션 액션
검증/소비/입수 각 트랜잭션 액션의 사양
액션의 조합과 동시 실행
모든 서비스에 공통되는 전제는 트랜잭션 액션의 조합에 정리되어 있습니다. 먼저 그쪽을 읽어 주십시오. 이 절의 나머지는 GS2-StateMachine 고유의 내용입니다.
GS2-StateMachine이 트랜잭션에 지정할 수 있는 액션은 1가지입니다. 스테이트 머신의 시작은 매번 새로운 스테이터스를 만들므로, 대상을 다투는 일이 없습니다.
| 조작 | 같은 행을 겹쳤을 때 | 중첩 너머 | 다른 대상이 되는 경계 |
|---|---|---|---|
스테이트 머신의 시작StartStateMachineByUserId | 각각이 자신의 스테이트 머신을 시작한다. 충돌하지 않는다 | 충돌하지 않는다 | 시작할 때마다 다른 대상 |
진행 중인 스테이트 머신의 각 스텝도 각각 독립된 트랜잭션이므로, 시작한 트랜잭션과 통합되는 일은 없습니다. 스테이트 머신이 스텝 안에서 무엇을 하는지는 건드리는 서비스의 제한을 받습니다.
중첩된 트랜잭션에 주의
스테이트 머신의 시작은 이 영향을 받지 않습니다. 시작할 때마다 자신의 스테이터스를 만들기 때문입니다. 그 이후의 스텝도 다른 트랜잭션이므로, 시작한 트랜잭션과 통합되는 일은 없습니다.
동시 실행과 재시도
스테이트 머신을 동시에 시작해도 GS2-StateMachine 자체가 충돌을 반환하는 일은 없습니다. 스텝이 충돌하는지는 거기에서 무엇을 기록하는지에 따라 결정되며, 재시도 지침도 그 서비스의 것이 해당됩니다.
Acquire Action
입수 액션
Gs2StateMachine:StartStateMachineByUserId
사용자 ID를 지정하여 스테이트 머신 시작
최신 마스터 버전을 사용하여 지정한 사용자의 새로운 스테이트 머신 인스턴스를 시작합니다. 인자는 JSON으로 전달되어 스테이트 머신 변수로 파싱됩니다. 선택적으로 TTL(분 단위)을 설정할 수 있으며, 생략한 경우 스테이트 머신은 약 10년간 유효합니다.
수량 지정 가능한 액션: 아니오
반전 가능한 액션: 아니오
| 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128자 | 네임스페이스 이름 네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. | ||
| userId | string | ✓ | ~ 128자 | 사용자ID#{userId}로 설정하면 로그인 중인 사용자ID로 치환됩니다. | ||
| args | string | “{}” | ~ 4096자 | 스테이트 머신에 전달할 인자 | ||
| ttl | int | 1 ~ 525600 | 유효 기간(분) | |||
| timeOffsetToken | string | ~ 1024자 | 타임 오프셋 토큰 |
{
"action": "Gs2StateMachine:StartStateMachineByUserId",
"request": {
"namespaceName": "[string]네임스페이스 이름",
"userId": "[string]사용자ID",
"args": "[string]스테이트 머신에 전달할 인자",
"ttl": "[int]유효 기간(분)",
"timeOffsetToken": "[string]타임 오프셋 토큰"
}
}action: Gs2StateMachine:StartStateMachineByUserId
request:
namespaceName: "[string]네임스페이스 이름"
userId: "[string]사용자ID"
args: "[string]스테이트 머신에 전달할 인자"
ttl: "[int]유효 기간(분)"
timeOffsetToken: "[string]타임 오프셋 토큰"transaction.service("stateMachine").acquire.start_state_machine_by_user_id({
namespaceName="[string]네임스페이스 이름",
userId="[string]사용자ID",
args="[string]스테이트 머신에 전달할 인자",
ttl="[int]유효 기간(분)",
timeOffsetToken="[string]타임 오프셋 토큰",
})