Business Process Choreographer를 사용하면 휴먼 타스크 및 비즈니스 프로세스 로직을 스태프 분석과
분리할 수 있습니다. 스태프 조회는 디렉토리 서비스에 고유한 플러그인을
사용하여 분석됩니다. 스태프 서비스를 사용하는 기본 양상은 아래에 설명되어 있습니다.
스태프 분석 플러그인에 대한 자세한 정보는 WebSphere Business Process Choreographer의 Process Choreographer: Staff Resolution Architecture, Process Choreographer:
Programming Model for Staff Resolution 및 Process Choreographer:
Staff Resolution Parameter Reference 백서를 참조하십시오.
스태프 조회 및 스태프 서비스 개념
WebSphere Integration Developer를 사용하여
스태프 지원 서비스에 대한 스태프 조회를 정의하십시오. 스태프 조회는 스태프 조회 템플리트, 스태프 verb를 기반으로 하며
ProcessStarter 및 PotentialOwners와 같은 비즈니스 프로세스 및 휴먼 타스크에 예견된 역할과 연관되어 있습니다.
스태프 verb는
고유 이름으로 식별되며 조회 매개변수 세트를 포함합니다. 매개변수화된 스태프 verb는 응용프로그램 전개 시 변환되어
저장소별 스태프 조회를 판별합니다. 이는 비즈니스 프로세스 또는 휴먼 타스크의 실행 동안 사용되어
사용자 저장소에서 사용자 ID를 검색합니다.
모든 비즈니스 프로세스 또는 휴먼 타스크는 해당 JNDI 이름으로
특정 스태프 플러그인 구성과 연관되어 있습니다. 이 구성은 배치 시 프로세스 또는 타스크 정의에서 추출되며
발견된 모든 스태프 verb를 저장소별 스태프 조회에 맵핑하는데 사용됩니다. 이 맵핑은 스태프 verb를 입력으로 사용하는
XSL 변환 파일에 의해 조정되고 해당하는 저장소별 조회를 출력으로 작성합니다.
기본값으로, 서로 다른
사용자 저장소 옵션을 나타내는 세 개의 스태프 플러그인 프로바이더가 포함됩니다.
- LDAP 스태프 플러그인 프로바이더를 사용하여 LDAP 서버에 대해 실행할 수 있는 스태프 조회를
생성합니다.
- 사용자 레지스트리 스태프 플러그인 프로바이더를 사용하여 WebSphere Application Server
사용자 레지스트리에 대해 실행할 수 있는 스태프 조회를 생성합니다.
- 시스템 스태프 플러그인 프로바이더는 사용자 저장소와 연관되지 않습니다. 그 대신, 스태프 verb 매개변수에서
직접 파생된 사용자 ID를 리턴합니다. 이 플러그인 프로바이더는 테스트 및 프로토타입을 목적으로 합니다.
위의 각 스태프 플러그인 프로바이더는 적어도 하나의 구성과 연관되어 있습니다. 특히, 구성은
저장소마다 특정한 스태프 조회와 스태프 verb 사이에서 맵핑을 수행하는 XML 변환 파일을
지정합니다. 기본값으로 다음 변환 파일이 제공됩니다.
- LDAPTransformation.xsl 파일은 스태프 verb를 JNDI 인터페이스를 통해 실행될 수 있는 LDAP 스태프 조회로 맵핑합니다.
- UserRegistryTransformation.xsl 파일은 스태프 verb를 WebSphere 사용자 레지스트리마다 특정한 스태프 조회로 맵핑합니다.
- SystemTransformation.xsl 파일은 스태프 verb를 해당 verb에서 지정된 실제 사용자 ID로 맵핑합니다. 실제 사용자 저장소를 요구하지 않습니다.
- EverybodyTransformation.xsl 파일은 모든 스태프 verb를 기본 결과 "everybody"로 맵핑합니다. 실제 사용자 저장소를 요구하지 않습니다.
스태프 조회 구현
다음 예에서는
스태프 조회 구현과 관련된 단계에 대해 요약 설명합니다.
- WebSphere Integration Developer를 사용하여 모델러는 새롭게 작성된 타스크와 스태프 플러그인 구성
bpe/staff/sampleldapconfiguration을 연관시킵니다.
- 모델러는 WebSphere Integration Developer를 사용하여 타스크의 역할과 해당 스태프 verb를 연관시킵니다.
예를 들어, PotentialOwners는
다음 매개변수를 포함하여 스태프 verb "Group Members"와 연관되어 있습니다.
- "GroupName", "cn=group1,dc=mycomp,dc=com" 값으로 설정
- "IncludeSubgroups", "true" 값으로 설정
- 타스크 컨텍스트에서 WebSphere Integration Developer는 verb 정의를 XML 스니펫으로 저장합니다.
<verb>
<name>Group Members</name>
<parameter id="GroupName">cn=group1,dc=mycomp,dc=com</parameter>
<parameter id="IncludeSubgroups">true</parameter>
</verb>
- 타스크가 WebSphere Application Server에 배치될 때, 스태프 지원 서비스는 LDAP 스태프
플러그인 프로바이더 bpe/staff/sampleldapconfiguration 사용을
설정합니다. 연관된 LDAPTransformation.xsl 파일을 사용하여 스태프 verb를
LDAP 조회로 변환하며 이는 내부적으로 저장됩니다.
스태프 조회 verb 세트
스태프 지원 서비스는
사용자 저장소 기반 구조와는 독립적인 추상 양식의 조회를
승인합니다. 프로세스 편집기와 타스크 편집기에는 프로세스와 타스크를 모델링할 때 사용할 수 있는
사전 정의된 스태프 verb 세트가 있습니다. 이 verb는 VerbSet.xml 파일에 포함되어 있습니다. 이 파일은
WebSphere Integration Developer와 함께 설치됩니다.
개별 스태프 분석
플러그인과 XSLT 맵핑 파일에서 모든 verb가 지원되는 것은 아닙니다. 예를 들어, 직원의 관리자 verb는
사용자 레지스트리나 시스템 플러그인을 사용하는 경우 사용할 수 없습니다. 스태프 조회 verb 세트를 수정할 수
있습니다. 파일의 사본에 변경사항을 작성하십시오. 복사한 파일이
다른 파일 이름을 가지고 있는지 확인하십시오.
다음의 사전 정의된 verb 세트를 사용할 수 있습니다. 각각의 verb와 함께 사용할 수 있는
매개변수에 대해서는 사전 정의된
스태프 verb 및 해당 매개변수를 참조하십시오.
- 부서 구성원
- 이 verb를 사용하여 부서의 구성원을 검색할 조회를 정의하십시오.
검색된 사용자는 지정된 부서(DepartmentName, AlternativeDepartmentName1 또는 AlternativeDepartmentName2) 중 하나에
속합니다. 이 verb는 LDAP 플러그인에서 지원됩니다. 기본 맵핑 XSLT 파일을 사용자 정의하여 조직의 LDAP 스키마에 일치시켜야 할 수도 있습니다.
- Group
- 이 verb를 사용하여
groupName 매개변수와 일치하는 그룹의 이름을 검색하십시오. 이는 그룹 작업 항목으로 사용됩니다.
verb는 모든 플러그인에서 지원됩니다.
- Everybody
- WebSphere Process Server가 인증한 모든 사용자에게 작업 항목을
지정하려면 이 verb를 사용하십시오. 이 verb는 시스템, 사용자 레지스트리 및 LDAP 플러그인에서 지원됩니다.
- Group Members
- 최대 세 개 그룹의 구성원을 검색하도록 조회를 정의하려면 이 verb를
사용하십시오. 검색된 사용자는 지정된 그룹(GroupName, AlternativeGroupName1 또는
AlternativeGroupName2) 중 하나에 속합니다. 이 verb는 사용자 레지스트리 및 LDAP 플러그인에서
지원됩니다. 기본 맵핑 XSLT 파일을 사용자 정의하여 조직의 LDAP 스키마에 일치시켜야 할 수도 있습니다.
- Group Members without Named Users
- 명시적으로 이름 지정된 해당 그룹의 사용자를 제외하고 그룹의 구성원을 검색하도록 조회를 정의하려면
이 verb를 사용하십시오. 제외할 하나 이상의 구성원을 쉼표로 분리된 목록으로 지정할 수 있습니다. 이 verb는 사용자 레지스트리 및 LDAP 플러그인에서
지원됩니다. 기본 맵핑 XSLT 파일을 사용자 정의하여 조직의 LDAP 스키마에 일치시켜야 할 수도 있습니다.
- Group Members without Filtered Users
- LDAP 검색 필터로 정의된 사용자 세트를 제외하고 그룹의 구성원을 검색하도록 조회를 정의하려면
이 verb를 사용하십시오. 이 verb는 LDAP 플러그인에서 지원됩니다. 기본 맵핑 XSLT 파일을 사용자 정의하여 조직의 LDAP 스키마에 일치시켜야 할 수도 있습니다.
- Group Search
- 이 verb를 사용하여 속성 일치를 기반으로 그룹을 검색하고 그룹의 구성원을 검색하십시오. 이 verb는 사용자 레지스트리 및 LDAP 플러그인에서
지원됩니다. 기본 맵핑 XSLT 파일을 사용자 정의하여 조직의 LDAP 스키마에 일치시켜야 할 수도 있습니다.
- Manager of Employee
- 이 verb를 사용하여 개인의 이름을 사용하여 개인의 관리자를 검색하십시오.
이 verb는 LDAP 플러그인에서 지원됩니다. 기본 맵핑 XSLT 파일을 사용자 정의하여 조직의 LDAP 스키마에 일치시켜야 할 수도 있습니다.
- Manager of Employee by user ID
- 이 verb를 사용하여 개인의 사용자 ID를 사용하는 개인의 관리자를 검색하십시오. 이 verb는 컨텍스트 조회와 함께
사용할 경우에 유용합니다. 이 verb는 LDAP 플러그인에서 지원됩니다. 기본 맵핑 XSLT 파일을 사용자 정의하여 조직의 LDAP 스키마에 일치시켜야 할 수도 있습니다.
- Native Query
- 이 verb를 사용하여 디렉토리 특정 매개변수를 기반으로 기본 조회를 정의하십시오.
이 verb는 사용자 레지스트리 및 LDAP 플러그인에서
지원됩니다. 기본 맵핑 XSLT 파일을 사용자 정의하여 조직의 LDAP 스키마에 일치시켜야 할 수도 있습니다.
- Nobody
- 이 verb를 사용하여 일반 사용자가 작업 항목에 액세스하는 것을
거부하십시오. 인라인 타스크의 경우, 비즈니스 프로세스 관리자 및 비즈니스
프로세스 시스템 관리자만 액세스 권한을 가집니다. 독립형 타스크의 경우, 휴먼 타스크 관리자 및 휴먼 타스크 시스템 관리자만
액세스 권한을 가집니다. 사용되는 API에 따라 권한이 부여된 J2EE 관리자가 다릅니다. 비즈니스 프로세스 API의 경우,
BPESystemAdministrator 사용자이고 휴먼 타스크 API의 경우에는 TaskSystemAdministrator 사용자입니다. 이 verb는 시스템, 사용자 레지스트리 및 LDAP 플러그인에서 지원됩니다.
- Person Search
- 이 verb를 사용하여 속성 일치를 기초로 개인을 검색하십시오. 이 verb는 사용자 레지스트리 및 LDAP 플러그인에서
지원됩니다. 기본 맵핑 XSLT 파일을 사용자 정의하여 조직의 LDAP 스키마에 일치시켜야 할 수도 있습니다.
- Role Members
- 이 verb를 사용하여 스태프 저장소 역할과 연관된 사용자를 검색하십시오. 검색된 사용자는 지정된
역할(RoleName, AlternativeRoleName1 또는 AlternativeRoleName2) 중 하나에 속합니다. 이 verb는 LDAP 플러그인에서 지원됩니다. 기본 맵핑 XSLT 파일을 사용자 정의하여 조직의 LDAP 스키마에 일치시켜야 할 수도 있습니다.
- Users
- 이 verb를 사용하여 이름을 아는 사용자에 대한 스태프 조회를 정의하십시오.
프로세스 템플리트에
사용자 이름을 하드 코드화하는 것은 권장하지 않습니다.
이 verb는 테스트를 목적으로 하는 경우에 유용합니다. 이 verb는 시스템, 사용자 레지스트리 및 LDAP 플러그인에서
지원됩니다. 기본 맵핑 XSLT 파일을 사용자 정의하여 조직의 LDAP 스키마에 일치시켜야 할 수도 있습니다.
- Users by user ID
- 이 verb를 사용하여 사용자 ID가 알려진 사용자에 대한 스태프 조회를 정의하십시오. 프로세스 및 타스크 템플리트에 사용자 이름을 하드 코드화하는 것이 권장되지는
않지만, 이 verb는 컨텍스트 스태프와의 조합에 유용합니다. 예를 들면, 다음과 같습니다.
User [username='%wf:process.starter%']
이 verb는 테스트를 목적으로 하는 경우에 유용합니다. 이 verb는 시스템, 사용자 레지스트리 및 LDAP 플러그인에서 지원됩니다.
- Users by user ID without Named Users
- 이 verb를 사용하여 사용자 ID가 알려진 사용자에 대한 스태프 조회를 정의하고
이름 지정된 사용자 ID를 명시적으로 제외시키십시오. 프로세스 및 타스크 템플리트에 사용자 이름을 하드 코드화하는 것이 권장되지는
않지만, 이 verb는 컨텍스트 스태프와의 조합에 유용합니다. 예를 들면, 다음과 같습니다.
User [userID='%htm:task.potentialStarters%', NamedUsers='%wf:activity(...).owner%']
특정 저장소 스태프 조회
스태프 플러그인 구성과 연관된
XSL 변환 파일을 사용하여 특정 저장소에 특정한 스태프 조회를 생성합니다.
각 조회는 해당 스태프 플러그인에 의해 실행되어 사용자 ID 목록을 확보할 수 있습니다. 스태프 플러그인에 사용 가능한
사전 정의된 조회는 플러그인에 의해 실행될 호출에 상응하며 수정될 수 있습니다.
사전 정의된 조회를 기반으로 다음 메커니즘을 사용하여 더욱 복잡한 조회를 형성할 수 있습니다.
- 조회 결과 유니온은 개별 조회에 의해 리턴된 사용자 ID가 현재 사용자 ID 결과 목록에 추가된다는 것을 의미합니다. 예를 들어,
LDAP 스태프 플러그인은 다음 유형의 사전 정의된 조회를 허용합니다.
지정된 그룹 그룹 구성원의 사용자 ID 목록:
<sldap:usersOfGroup groupDN="cn=group1,dc=mycomp" recursive="yes">
...
</sldap:usersOfGroup>
지정된 사용자의 사용자 ID:
<sldap:user dn="uid=user1,dc=mycomp" .../>
지정된 그룹
구성원의 사용자 ID 목록 및 지정된 사용자 ID에 복합 조회를 구성할 수 있습니다.
<sldap:staffQueries>
<sldap:usersOfGroup groupDN="cn=group1,dc=mycomp" recursive="yes">
...
</sldap:usersOfGroup>
<sldap:user dn="uid=user1,dc=mycomp" .../>
</sldap:staffQueries>
- 조회 결과의 차이점은 <remove>
조회에 의해 리턴된 사용자 ID가 현재 결과 목록에서 제거됨을 의미합니다. 예를 들어, 지정된 그룹 구성원으로 검색된
ID 목록에서 "user1" 제거:
<sldap:staffQueries>
<sldap:usersOfGroup groupDN="cn=group1,dc=mycomp" recursive="yes">
...
</sldap:usersOfGroup>
<sldap:remove value="user1"/>
</sldap:staffQueries>
- 조회 결과 참조는 하나의 조회에서 확보한 결과를 사용하여 후속 조회의 동작에 영향을 줄 수 있음을 의미합니다. 예를 들어,
다음 스니펫에서 두 개의 조회가 실행됩니다. 먼저, "uid=user1,…" 사용자의 LDAP 항목에 있는 "manager" 속성의 값이 검색되어
관리자의 LDAP 항목을 찾고 연관된 사용자 ID를 검색하는데 사용되는 중간 변수 "supervisor"에 저장됩니다.
<sldap:staffQueries>
<sldap:intermediateResult name="supervisor">
<sldap:user dn="uid=user1,dc=mycomp" attribute="manager" ... />
</sldap:intermediateResult>
<sldap:user dn="%supervisor% .../>
</sldap:staffQueries>
위의 세 개의 조합 규칙에 따라 구성된 스태프 조회는 스태프 플러그인에 의해
실행될 수 있습니다. 지원되는 각 스태프 플러그인에 사전 정의된 모든 스태프 조회에 대한 자세한 설명과
조합에 대한 더 많은 예제는
WebSphere Business Process Choreographer의
Process Choreographer: Staff Resolution Parameter Reference 백서를 참조하십시오.
스태프 verb XSL 변환 파일
스태프 플러그인 구성에 지정된
XSL 변환 파일은 스태프 verb와 저장소별 스태프 조회 사이에서 맵핑을 정의합니다. 모든 스태프 플러그인 구성에는
고유 XSL 변환 파일이 있습니다.
기본 변환 파일은 다음과 같습니다.
- LDAPTransformation.xsl(LDAP 스태프 프로바이더 플러그인의 경우)
- UserRegistryTransformation.xsl(사용자 레지스트리 스태프 프로바이더 플러그인의 경우)
- SystemTransformation.xsl 및 EverybodyTransformation.xsl(시스템 스태프 프로바이더 플러그인의 경우)
이러한 변환 파일은 사전 정의된 스태프 verb 세트를 상응하는 단순 및 복합 저장소별 조회에 맵핑합니다. 이 파일은
install_root/ProcessChoreographer/Staff 디렉토리에 있습니다.
변환
파일은 생성된 저장소별 스태프 조회를 사용하는 스태프 verb 및 각각의 실행에 특정 시멘틱을 가정합니다. 기타 시멘틱이 요청되는 경우
이에 따라 변환 파일의 맵핑이 변경되어야 합니다.
예를 들어, LDAP 스태프 플러그인은 사전 정의된 스태프 verb와
함께 제공됩니다.
<staff:verb>
<staff:name>Manager of Employee</staff:name>
<staff:parameter id="EmployeeName">
uid=anEmployeeName,cn=users,dc=ibm,dc=com
</staff:parameter>
</staff:verb>
LDAPTransformation.xsl 파일에 의해 LDAP 조회로 맵핑됩니다.
<sldap:staffQueries>
<sldap:intermediateResult name="supervisor">
<sldap:user dn="anEmployeeName" attribute="manager"
objectclass="inetOrgPerson"/>
</sldap:intermediateResult>
<sldap:user dn="%supervisor%" attribute="uid" objectclass="inetOrgPerson"/>
</sldap:staffQueries>
supervisor의 LDAP DN이 고용인의 속성 "manager"에 저장됨을 명시적으로 간주합니다. 이 verb에 서로 다른
시멘틱이 있는 경우, 예를 들어, supervisor가 LDAP 속성 "teacher"에서 나오는 경우. 그에 따라 LDAP별 조회를 변경해야 합니다.
<sldap:staffQueries>
<sldap:intermediateResult name="supervisor">
<sldap:user dn="anEmployeeName" attribute="teacher"
objectclass="inetOrgPerson"/>
</sldap:intermediateResult>
<sldap:user dn="%supervisor%" attribute="uid" objectclass="inetOrgPerson"/>
</sldap:staffQueries>
이를 성취한다는 것은 그에 따라 LDAPTransformation.xsl 파일을 적응시킨다는 것입니다.
<xsl:template name="ManagerOfEmployee">
<sldap:staffQueries>...
<sldap:intermediateResult>
<xsl:attribute name="name">supervisor</xsl:attribute>
<sldap:user>
<xsl:attribute name="dn">
<xsl:value-of select="staff:parameter[@id='EmployeeName']"/>
</xsl:attribute>
<xsl:attribute name="attribute">teacher</xsl:attribute>
...
</sldap:user>
</sldap:intermediateResult>
<sldap:user>
<xsl:attribute name="dn">%supervisor%</xsl:attribute>
...
</sldap:user>
</sldap:staffQueries>
</xsl:template>
기본 변환 파일을 검토함으로써 맵핑 동작을 자세히 이해할 수 있습니다. 기본 변환의 시멘틱은
스태프 조회 verb 세트에 설명되어 있습니다.
스태프 verb의 타스크 및 프로세스 컨텍스트 변수 사용
특정 스태프 verb에서
비즈니스 프로세스 및 휴먼 타스크 컨텍스트 변수를 매개변수 값으로 사용할 수 있습니다. 이로써 스태프 지원 서비스는
컨텍스트가 제공하는 정보를 기반으로 런타임 시 스태프 verb를 해결할 수 있습니다. 예를 들어, 스태프 verb는 다음과 같습니다.
<verb>
<name>Users by user ID</staff:name>
<parameter id="UserID">%htm:input.\name%</staff:parameter>
</verb>
이 스태프 verb는 실행 시에 타스크에 의해서 수신되는 입력 메시지의 "name" 부분을 선언하는 매개변수(타스크 컨텍스트 변수 htm:input.\name)로
지정합니다.
스태프 지원 서비스는 동적으로 컨텍스트 변수를 실제 타스크 컨텍스트 값으로 바꿉니다.
컨텍스트 변수를 사용할 수 있는 매개변수 및 verb의 설명은 사전 정의된 스태프 verb의 내용을
참조하십시오.
전자 우편 verb 세트
WebSphere Integration Developer에서 전자 우편 verb 세트는
타스크 에스컬레이션에 대한 전자 우편 공고용입니다. 이 전자 우편 verb는 스태프 저장소에서 실행할 수 있는 조회 세트로 모델링 및 전개하는
중에 변환됩니다. 전자 우편 verb는 LDAP 플러그인이 지원하는 가장 일반적인 스태프 verb에 대해 정의됩니다.
다음 전자 우편 verb를 사용할 수 있습니다.
- Email Address for Department Members
- Email Address for Group Members
- Email Address for Group Members without Names Users
- Email Address for Group Members without Filtered Users
- Email Address for Group Search
- Email Address for Role Members
- Email Address for Users
- Email Address for Users by User ID
기타 LDAP 스태프 verb의 경우,
스태프 verb로 검색된 사용자 ID는 Email Address
for Users by User ID verb에 대한 입력으로 사용됩니다.
전자 우편 verb를 특정 스태프 저장소에서 조회로 실행하려면
XSL 변환을 사용하여 먼저 이를 실행 가능한 조회로 변환해야 합니다. LDAP 스태프 분석 플러그인에서 변환(맵핑) 결과를 실행할 수
있습니다. 런타임 시 조회는 전자 우편 주소 세트
(예: user1@mycomp.com, user2@mycomp.com 등)를 리턴합니다.