Class DefaultWorkflow
- All Implemented Interfaces:
Workflow
- Direct Known Subclasses:
NotificationWorkflow,OMWorkflow
- Version:
- $Id: DefaultWorkflow.java,v 1.71 2008/05/28 08:57:26 youngho Exp $
- Author:
- Youngho Cho
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.easydesk.workflow.Workflow
Workflow.Action -
Field Summary
Fields inherited from interface com.easydesk.workflow.Workflow
PACKAGE_NAME -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidadd(ActivitySet activitySet, Item item, Map<Integer, AttributeValue> newAttVals) Item 가 System 에 add 될 때voidDeprecated.use add(Object obj) insteadvoidadd(Persistent addedObject) when new OM object added into Database (whether the object has ever been saved.)voidaddDependencyWorkflow(Depend depend, ActivitySet activitySet, EasyDeskUser user) DOCUMENT ME!voidaddItemWorkflow(Item item, Map<Integer, AttributeValue> newAttVals, EasyDeskUser EasyDeskUser, ActivitySet activitySet) DOCUMENT ME!voidaddWorkflowsForOption(AttributeOption option, Module module, ItemType itemType) Deprecated.use add(Object obj) insteadvoidafter(ActivitySet activitySet, Map<Integer, AttributeValue> newAttVals) Item 가 modified 되었을 때 (After: 새로운 Connection 을 사용한다.)voidafter(String toAddress, EasyDeskUser creator, AttributeOption manager, ActivitySet activitySet, Item item) Notifiation 한 후voidbefore(String toAddress, EasyDeskUser creator, AttributeOption manager, ActivitySet activitySet, Activity act, Item item) Notifiation 을 하기 전에 해야할 행동canMakeTransition(EasyDeskUser actor, Item item, Transition transition, Map<Integer, AttributeValue> newAttVals, TransitionScopeEnum tScope, Attribute attribute) CanMakeTransition 의 정의voidDOCUMENT ME!voiddeleteDependencyWorkflow(Depend depend, ActivitySet activitySet, EasyDeskUser user) DOCUMENT ME!voiddeleteWorkflowsForAttribute(Attribute attr, Module module, ItemType itemType) Deprecated.use modified(Object obj) insteadvoiddeleteWorkflowsForOption(AttributeOption option, Module module, ItemType itemType) Deprecated.use modified(Object obj) insteadgetConditionTester(Attribute rattribute) attribute 에 대한 ConditionTester 를 구한다.booleangrantUser(Module module, EasyDeskUser user, String roleName, ActivitySet activitySet) Security System 에서 Revoke 는 EasyDesk Workflow 에서 사용자의 역할을 Guest 또는 Anonymous 로 변경하는 것이다.booleanhasConsistency(AttributeValue value) 설정이 아니라 코드에 의하여 처리되어야 만 하는 것들booleanisSatisfied(TransitionSequence transitionSequence, Item item) 현재 item 의 상태가 transition 이 진행되었는지 확인을 한다.voidmodify(ActivitySet activitySet, Map<Integer, AttributeValue> newAttVals) Item 가 modify 될 때 (Before)voidmodify(Persistent modifiedObject) when OM Object modified since it was last retrieved from storage.voidremove(Persistent removedObject) when OM Object removedvoidresetAllWorkflowsForItemType(Module module, ItemType itemType) DOCUMENT ME!booleanrevokeUser(Module module, EasyDeskUser user, String roleName, ActivitySet activitySet) Security System 에서 Revoke 는 EasyDesk Workflow 에서 사용자의 역할을 Guest 또는 Anonymous 로 변경하는 것이다.voidupdateItemWorkflow(Item item, Map<Integer, AttributeValue> newAttVals, EasyDeskUser user, ActivitySet activitySet) 아이템을 변경할 때 저장전 동작 (Before 동작 이다.)
-
Constructor Details
-
DefaultWorkflow
public DefaultWorkflow()새로운DefaultWorkflow인스턴스를 생성한다.
-
-
Method Details
-
add
when new OM object added into Database (whether the object has ever been saved.)기본 구현은 아무 것도 하지 않는다.
- Specified by:
addin interfaceWorkflow- Parameters:
addedObject- DOCUMENT ME!- Throws:
WorkflowException- DOCUMENT ME!
-
modify
when OM Object modified since it was last retrieved from storage.기본 구현은 아무 것도 하지 않는다.
- Specified by:
modifyin interfaceWorkflow- Parameters:
modifiedObject- DOCUMENT ME!- Throws:
WorkflowException- DOCUMENT ME!
-
remove
when OM Object removed- Specified by:
removein interfaceWorkflow- Parameters:
removedObject- DOCUMENT ME!- Throws:
WorkflowException- DOCUMENT ME!
-
add
public void add(ActivitySet activitySet, Item item, Map<Integer, AttributeValue> newAttVals) throws WorkflowExceptionItem 가 System 에 add 될 때기본 구현은 아무 것도 하지 않는다.
- Specified by:
addin interfaceWorkflow- Parameters:
activitySet- 현재 처리중인 ActivitySetitem- 추가되는 itemnewAttVals- 새 속성값 map ({ attributeId, attributeValue })- Throws:
WorkflowException- workflow 처리 중 오류가 발생한 경우
-
modify
public void modify(ActivitySet activitySet, Map<Integer, AttributeValue> newAttVals) throws WorkflowExceptionItem 가 modify 될 때 (Before)기본 구현은 아무 것도 하지 않는다.
- Specified by:
modifyin interfaceWorkflow- Parameters:
activitySet- 현재 처리중인 ActivitySetnewAttVals- 새 속성값 map ({ attributeId, attributeValue })- Throws:
WorkflowException- workflow 처리 중 오류가 발생한 경우
-
after
public void after(ActivitySet activitySet, Map<Integer, AttributeValue> newAttVals) throws WorkflowExceptionItem 가 modified 되었을 때 (After: 새로운 Connection 을 사용한다.)기본 구현은 아무 것도 하지 않는다.
- Specified by:
afterin interfaceWorkflow- Parameters:
activitySet- 현재 처리중인 ActivitySetnewAttVals- 저장된 새 속성값 map ({ attributeId, attributeValue })- Throws:
WorkflowException- workflow 처리 중 오류가 발생한 경우
-
hasConsistency
설정이 아니라 코드에 의하여 처리되어야 만 하는 것들기본 구현은 항상
true를 반환한다.- Specified by:
hasConsistencyin interfaceWorkflow- Parameters:
value- 확인할 AttributeValue- Returns:
- true/false
- Throws:
WorkflowException- 확인 중 오류가 발생한 경우
-
isSatisfied
public boolean isSatisfied(TransitionSequence transitionSequence, Item item) throws WorkflowException 현재 item 의 상태가 transition 이 진행되었는지 확인을 한다.기본 구현은 항상
true를 반환한다.- Specified by:
isSatisfiedin interfaceWorkflow- Parameters:
transitionSequence- 확인할 TransitionSequenceitem- 대상 item- Returns:
- transition 이 진행되었으면
true - Throws:
WorkflowException- 확인 중 오류가 발생한 경우
-
getConditionTester
attribute 에 대한 ConditionTester 를 구한다.기본 구현은 항상
AlwaysPassTester를 반환한다.- Specified by:
getConditionTesterin interfaceWorkflow- Parameters:
rattribute- 조건의 기준이 되는 RAttribute- Returns:
- ConditionTester
- Throws:
Exception- ConditionTester 를 구하는 중 오류가 발생한 경우
-
canMakeTransition
public Object canMakeTransition(EasyDeskUser actor, Item item, Transition transition, Map<Integer, AttributeValue> newAttVals, TransitionScopeEnum tScope, Attribute attribute) CanMakeTransition 의 정의
Actor A 가 아이템 B 에 대하여 D 의 동작을 진행할 때, B 의 속성 C 의 값을 E 에서 F 로 접근/변경할 수 있는가 ? (접근과 변경의 구분?)
실제 적용은 편집시 사용자가 Transition 에 대하여 아이템의 속성을 from 에서 to 로 이동시킬수 있는지 주의 대상 행동은 편집이다.
D 동작에 대하여 ActivitySet 에 정의된 모든것을 처리하고 싶지만 이경우 Condition Table 도 같이 변경되어 너무 복잡하여 진다.
확인 순서는 Module > ItemType > Global 의 순서로 처리가 된다.
- Enter : EMPTY_CONDITION To ANY_CONDITION
- Edit : ANY_CONDITION To ANY_CONDITION
- Remove : ANY_CONDITION To EMPTY_CONDITION
기본 구현은 항상
Boolean.TRUE를 반환한다.- Specified by:
canMakeTransitionin interfaceWorkflow- Parameters:
actor- actor Aitem- acted item B which contains attribute Ctransition- target transition : a change of attributeValue C:[E TO F]newAttVals- { attributeId, attributeValue } @todo { attributeId, value }tScope- Transition 의 적용 범위 (TransitionScopeEnum)attribute- 대상 attribute C- Returns:
- null (no constraints) or contraint condition object or error object
-
add
Deprecated.use add(Object obj) insteaditemType 이 module 에 추가 될 때 동작한다.기본 구현은 아무 것도 하지 않는다.
- Specified by:
addin interfaceWorkflow- Parameters:
module- 대상 ModuleitemType- 추가되는 ItemType- Throws:
WorkflowException- workflow 처리 중 오류가 발생한 경우
-
addWorkflowsForOption
public void addWorkflowsForOption(AttributeOption option, Module module, ItemType itemType) throws WorkflowException Deprecated.use add(Object obj) insteadDOCUMENT ME!- Specified by:
addWorkflowsForOptionin interfaceWorkflow- Parameters:
option- DOCUMENT ME!module- DOCUMENT ME!itemType- DOCUMENT ME!- Throws:
WorkflowException- DOCUMENT ME!
-
deleteWorkflowsForOption
public void deleteWorkflowsForOption(AttributeOption option, Module module, ItemType itemType) throws WorkflowException Deprecated.use modified(Object obj) insteadDOCUMENT ME!- Specified by:
deleteWorkflowsForOptionin interfaceWorkflow- Parameters:
option- DOCUMENT ME!module- DOCUMENT ME!itemType- DOCUMENT ME!- Throws:
WorkflowException- DOCUMENT ME!
-
deleteWorkflowsForAttribute
public void deleteWorkflowsForAttribute(Attribute attr, Module module, ItemType itemType) throws WorkflowException Deprecated.use modified(Object obj) insteadDOCUMENT ME!- Specified by:
deleteWorkflowsForAttributein interfaceWorkflow- Parameters:
attr- DOCUMENT ME!module- DOCUMENT ME!itemType- DOCUMENT ME!- Throws:
WorkflowException- DOCUMENT ME!
-
resetAllWorkflowsForItemType
DOCUMENT ME!- Specified by:
resetAllWorkflowsForItemTypein interfaceWorkflow- Parameters:
module- DOCUMENT ME!itemType- DOCUMENT ME!- Throws:
WorkflowException- DOCUMENT ME!
-
changeModuleItemTypeWorkflow
DOCUMENT ME!- Specified by:
changeModuleItemTypeWorkflowin interfaceWorkflow- Parameters:
mit- DOCUMENT ME!- Throws:
WorkflowException- DOCUMENT ME!
-
addItemWorkflow
public void addItemWorkflow(Item item, Map<Integer, AttributeValue> newAttVals, EasyDeskUser EasyDeskUser, ActivitySet activitySet) throws WorkflowExceptionDOCUMENT ME!- Specified by:
addItemWorkflowin interfaceWorkflow- Parameters:
item- DOCUMENT ME!newAttVals- DOCUMENT ME!EasyDeskUser- DOCUMENT ME!activitySet- DOCUMENT ME!- Throws:
WorkflowException- DOCUMENT ME!
-
updateItemWorkflow
public void updateItemWorkflow(Item item, Map<Integer, AttributeValue> newAttVals, EasyDeskUser user, ActivitySet activitySet) throws WorkflowException아이템을 변경할 때 저장전 동작 (Before 동작 이다.) After 동작은Workflow.after(ActivitySet, Map)이다.기본 구현은 아무 것도 하지 않는다.
- Specified by:
updateItemWorkflowin interfaceWorkflow- Parameters:
item- 변경되는 itemnewAttVals- 새 속성값 map ({ attributeId, attributeValue })user- 변경하는 사용자activitySet- 현재 처리중인 ActivitySet- Throws:
WorkflowException- workflow 처리 중 오류가 발생한 경우
-
grantUser
public boolean grantUser(Module module, EasyDeskUser user, String roleName, ActivitySet activitySet) throws WorkflowException Security System 에서 Revoke 는 EasyDesk Workflow 에서 사용자의 역할을 Guest 또는 Anonymous 로 변경하는 것이다. Guest 이면 특정 Module 에서 탈퇴하는 것이고 Anonymous 이면 System 에서 탈퇴하는 것이다. grantUser 를 OptionWorkflow 로 통합한다. 즉 grant : User Item 의 LifeCycle 이 EMPTY --> ANY 로 revoke : User Item 의 LifeCycle 이 ANY --> DELETED 로 되어야 하지만 한번 사용자의 Item 이 생성되면 revoke 후 regrant 를 고려하면, Item 의 삭제는 오히려 더 복잡하여진다. 따라서 grant : RoleName 이 GUEST --> ANY 로 revoke : RoleName 이 ANY --> GUEST 로 정의하면 grant/revoke 의 logic 은 단순하여 진다. 문제는 UserItem 의 생성시점과 LifeCycle 의 처리 문제이다. 이 UserItem 의 생성시점과 LifeCycle 의 처리문제를 고려하면 grantUser 가 단순히 OptionWorkflow 에 matching 되는 것이 아니라 이것을 Option Workflow 에 적용하기 위하여는 선작업( UserItem 의 존재유무 확인 및 생성 )이 필요하다는 것을 의미한다. 결론적으로 grantUser 는 별도의 Method 로 workflow 에 존재하여야 한다.EasyDesk 의 모든 Database Object 을 Artifactizable 로 구현하였기 때문에 grant/revoke 의 설정 여부는 Workflow 의 Transition/Condition 에 의하여 결정된다. 이 method 에서는 최종적으로 처리하기 이전에 관련 자료를 모두 정리한다.
기본 구현은 항상
true를 반환한다.- Specified by:
grantUserin interfaceWorkflow- Parameters:
module- 대상 Moduleuser- 역할을 부여받는 사용자roleName- 부여할 역할 이름activitySet- 현재 처리중인 ActivitySet- Returns:
- 처리되었으면
true - Throws:
WorkflowException- workflow 처리 중 오류가 발생한 경우
-
revokeUser
public boolean revokeUser(Module module, EasyDeskUser user, String roleName, ActivitySet activitySet) throws WorkflowException Security System 에서 Revoke 는 EasyDesk Workflow 에서 사용자의 역할을 Guest 또는 Anonymous 로 변경하는 것이다. Guest 이면 특정 Module 에서 탈퇴하는 것이고 Anonymous 이면 System 에서 탈퇴하는 것이다. revokeUser 는 특정 Group 또는 RoleSet 은 다중 Role 을 허용하는데 이 경우 revoke 만을 별도 처리할 때 사용된다.EasyDesk 의 모든 Database Object 을 Artifactizable 로 구현하였기 때문에 grant/revoke 의 설정 여부는 Workflow 의 Transition/Condition 에 의하여 결정된다. 이 method 에서는 최종적으로 처리하기 이전에 관련 자료를 모두 정리한다.
기본 구현은 항상
true를 반환한다.- Specified by:
revokeUserin interfaceWorkflow- Parameters:
module- 대상 Moduleuser- 역할을 회수당하는 사용자roleName- 회수할 역할 이름activitySet- 현재 처리중인 ActivitySet- Returns:
- 처리되었으면
true - Throws:
WorkflowException- workflow 처리 중 오류가 발생한 경우
-
addDependencyWorkflow
public void addDependencyWorkflow(Depend depend, ActivitySet activitySet, EasyDeskUser user) throws WorkflowException DOCUMENT ME!기본 구현은 아무 것도 하지 않는다.
- Specified by:
addDependencyWorkflowin interfaceWorkflow- Parameters:
depend- DOCUMENT ME!activitySet- DOCUMENT ME!user- DOCUMENT ME!- Throws:
WorkflowException- DOCUMENT ME!
-
deleteDependencyWorkflow
public void deleteDependencyWorkflow(Depend depend, ActivitySet activitySet, EasyDeskUser user) throws WorkflowException DOCUMENT ME!기본 구현은 아무 것도 하지 않는다.
- Specified by:
deleteDependencyWorkflowin interfaceWorkflow- Parameters:
depend- DOCUMENT ME!activitySet- DOCUMENT ME!user- DOCUMENT ME!- Throws:
WorkflowException- DOCUMENT ME!
-
before
public void before(String toAddress, EasyDeskUser creator, AttributeOption manager, ActivitySet activitySet, Activity act, Item item) throws WorkflowException Notifiation 을 하기 전에 해야할 행동- Specified by:
beforein interfaceWorkflow- Parameters:
toAddress- 통지를 받을 주소creator- 통지를 발생시킨 사용자manager- 통지 방법(notification manager) AttributeOptionactivitySet- 통지 대상 ActivitySetact- 통지 대상 Activityitem- 대상 item- Throws:
WorkflowException- workflow 처리 중 오류가 발생한 경우
-
after
public void after(String toAddress, EasyDeskUser creator, AttributeOption manager, ActivitySet activitySet, Item item) throws WorkflowException Notifiation 한 후- Specified by:
afterin interfaceWorkflow- Parameters:
toAddress- 통지를 받은 주소creator- 통지를 발생시킨 사용자manager- 통지 방법(notification manager) AttributeOptionactivitySet- 통지 대상 ActivitySetitem- 대상 item- Throws:
WorkflowException- workflow 처리 중 오류가 발생한 경우
-