나는 루비 보석 워크 플로우를 찾고 있어요 : 웹 https://github.com/geekq/workflowMVC 모델의 작업 흐름?
의 예 및 다른 예는 모델 자체의 워크 플로우 코드가 있습니다. 나는 이것이 SOLID의 위반이라고 생각한다. 또한 비즈니스 로직은 MVC 계약을 위반하는 모델 클래스 (모델이 여러 주에서 진행됨에 따라 취해진 액션)로 인코딩됩니다.
예 :
class Message
workflow do
state :spam_check do
event :is_spam, transitions_to => :destroy
event :is_not_spam,:transitions_to => :finished
end
end
# business logic
def is_spam
self.user.spammer_score += 1
if self.user.spammer_score > 5
self.user.destroy
end
end
end
이 좋은 프로그래밍인가? 그렇지 않다면, 레일스 프로젝트에서 변경 사항을 코딩해야하는 위치는 어디입니까? state_machine 대 워크 플로우에
- SOLID https://en.wikipedia.org/wiki/Solid_%28object-oriented_design%29
- 워크 플로우 https://github.com/geekq/workflow
- 기사 : 일부 연구 후 http://jmettraux.wordpress.com/2009/07/03/state-machine-workflow-engine/
일종의. 한 상태에서 다른 상태로 전환하는 것이 아무것도 수행하지 않는 메서드 호출이라는 것을 의미합니다. 위의 이벤트 : submit() 메소드가 실제로 작동하면 어떻게 될까요? 작업을 완료해야하는 리뷰어에게 이메일을 보냅니 까? 또는 accept/reject()가 수락 또는 거부 된 이유에 대한 추가 매개 변수가 필요합니까? 이 메소드 호출은 이제 컨트롤러에 속한 작업을 수행합니다. 그러나 워크 플로 메서드 호출에서 매우 편리 할 것입니다 ...:) – Daniel
글쎄, 나는 루비 전문가는 아니지만, 나는 당신이 워크 플로우 모델/프레임 워크의 액션에 의해 가능한 것이어야한다고 생각한다. 임의의 작업을 작성하고 요구 사항에 따라 유스 케이스를 확장 할 수 있습니다. 예를 들어 리뷰어에게 기사를 이메일로 보내거나 이벤트/전환을 수락하거나 거부하는 이유로 데이터베이스의 추가 매개 변수를 설정하는 것이 좋습니다. –