Sunday, March 15, 2015

Human Workflow Web Services Part 1

Tentunya pernah bukan menggunakan Oracle BPM's Workspace? Harus diketahui bahwa semua data & action yang kalian lihat disana disediakan oleh Human Workflow Services. Ada berbagai macam cara berinteraksi dengan Oracle Human Workflow Service. Kalian bisa menggunakan java dan membuat aplikasi kalian sendiri, menggunakan aplikasi BPM Worklist atau menggunakan Human Workflow Web Service. Pada kesempatan ini saya akan membahas tentang Human Workflow Web Service pada Oracle BPM. Kalian bisa langsung mencoba nya dari soapUI atau webservice framework lainnya.

Ada dua buah Human Workflow Web Service yang akan sering kita pergunakan. Yang pertama adalah TaskQueryService, Webservice ini bisa digunakan untuk mendapatkan task atau melakukan query pada worklow service. 
WSDL url nya : http://host:port/integration/services/TaskQueryService/TaskQueryService?WSDL 
contoh : soa12c.nostratech.com:8001/integration/services/TaskQueryService/TaskQueryService?WSDL 

Yang kedua adalah TaskService, Webservice ini bisa menggunakan CRUD action pada human task.
WSDL url nya = http://host:port/integration/services/TaskService/TaskServicePort?WSDL
contoh : soa12c.nostratech.com:8001/integration/services/TaskService/TaskServicePort?WSDL

Sekarang kita akan bermain dengan TaskQueryService terlebih dahulu dan pada Part 2 kita akan bermain dengan TaskService. 

Pada TaskQueryService terdapat berbagai macam operasi yang dapat digunakan, salah satunya queryTask. Dengan menggunakan queryTask kita bisa mengquery task yang kita inginkan. Sebagai contoh saya akan menquery task yang telah di assign ke user andre dan grup dimana user andre telah bergabung.



<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
 xmlns:tas="http://xmlns.oracle.com/bpel/workflow/taskQueryService" 
 xmlns:com="http://xmlns.oracle.com/bpel/workflow/common" 
 xmlns:tas1="http://xmlns.oracle.com/bpel/workflow/taskQuery" 
 xmlns:task="http://xmlns.oracle.com/bpel/workflow/task">
   <soapenv:Header/>
   <soapenv:Body>
      <tas:taskListRequest>
         <com:workflowContext>
            <com:credential>
               <com:login>andre</com:login>
               <com:password>welcome1</com:password>
            </com:credential>
         </com:workflowContext>
         <tas1:taskPredicateQuery>
            <tas1:displayColumnList>
               <tas1:displayColumn>textAttribute1</tas1:displayColumn>
               <tas1:displayColumn>textAttribute2</tas1:displayColumn>
               <tas1:displayColumn>textAttribute3</tas1:displayColumn>
            </tas1:displayColumnList>
            <tas1:optionalInfoList>
               <tas1:taskOptionalInfo>Comments</tas1:taskOptionalInfo>
               <tas1:taskOptionalInfo>Attachments</tas1:taskOptionalInfo>
               <tas1:taskOptionalInfo>Payload</tas1:taskOptionalInfo>
            </tas1:optionalInfoList>
            <tas1:predicate>
               <tas1:assignmentFilter>My+Group</tas1:assignmentFilter>
               <tas1:clause>
                  <tas1:column>STATE</tas1:column>
                  <tas1:operator>EQ</tas1:operator>
                  <tas1:value>ASSIGNED</tas1:value>
               </tas1:clause>
            </tas1:predicate>
         </tas1:taskPredicateQuery>
      </tas:taskListRequest>
   </soapenv:Body>
</soapenv:Envelope>

Bisa kita lihat dari kode di atas, kode yang berwarna biru merupakan inti yang harus kita isi. Code yang berwarna hitam & di bold adalah contoh isi yang benar, sedangkan untuk yang berwarna merah, itu untuk menampilkan atribut yang kita inginkan dalam contoh ini ada 3 atribut yang ingin ditampilkan yaitu Comment, Attachment, Payload. 


Pada bagian assignmentFilter, kita bisa merubah menjadi : All, My, Group, My+Group, My+Group+All, Reportees, Creator, Owner, Previous, Admin. 


Pada bagian operator, kita bisa merubah menjadi : EQ, NEQ, GT, GTE, LT, LTE, LIKE, NOT_LIKE, IN, NOT_IN, CONTAINS, NOT_CONTAINS, BEGINS, NOT_BEGINS, ENDS, NOT_ENDS, BEFORE, AFTER, ON, NEXT_N_DAYS, LAST_N_DAYS, IS_IN_FUTURE, IS_IN_PAST, IS_NULL, IS_NOT_NULL


Untuk melihat document oracle tentang TaskQueryService & melihat isi table WFTask bisa klik disini


Response dari request di atas akan berupa list of task elemen. Dimana setiap task element mempunyai sub elemen seperti title, priority, taskNumber dan taskId.

Sekarang kita sudah bisa mendapatkan list task yang user andre harus kerjakan. Mirip bukan seperti kita login dalam BPM Worklist? Namun sekarang kita bisa menggunakan UI lain untuk mengakses BPM Workspace.


Sekian dulu untuk Part 1.

Semoga Bermanfaat !
Happy Coding :)

No comments:

Post a Comment