[Agentflow開發記事]--如何在 .Net 環境中呼叫 Agentflow Webservice 啟動流程


公司今年初導入 Agentflow BPM 3.5,已上線運作了 3 之流程,目前需要將之前已上線的程式改搭配Agentflow的流程引擎來實作,但說實在的...參考文件少的可憐...XD

那就將自己的心得集結分享吧!

不多說,就來看怎麼由外部的 Web App 來呼叫 Agentflow 吧!(因為他們是Pure Java的開發團隊,所以要他們擠 .Net的範例...)



Step 1.

請先參考
Agentflow WebService 整合方案 JDK 5文件將 Apache/TomcatWebServices 環境建立起來

http://forum.flowring.com/user/download/2365/AgentflowWebService%20%E6%95%B4%E5%90%88JDK5.pdf

先下載 axis Packages http://ws.apache.org/axis

設定環境變數



  1. AXIS_HOME=D:\axis14

  2. AXIS_LIB=%AXIS_HOME%\lib

  3. AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\axis-ant.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\wsdl4j-1.5.1.jar


  4. JAVA_HOME=即為使用者的 Java

  5. path=%使用者的 path%;%JAVA_HOME%\bin

  6. CLASSPATH=.;JAVA_HOME%\lib\tools.jar%;%AXISCLASSPATH%


修改 WebAgenda/WEB-INF/web.xml 檔案,加入幾項 servlet mapping 下:



  1. <! - - 定義目前 AxisServlet 執行之 Class -- >

  2. <servlet>

  3. <servlet-name>AxisServlet</servlet-name>

  4. <display-name>Apache-Axis Servlet</display-name>

  5. <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>

  6. </servlet>

  7. <! - - 定義目前執行 Web Service 檔案目錄或副檔名 -- >

  8. <servlet-mapping>

  9. <servlet-name>AxisServlet</servlet-name>

  10. <url-pattern>*.jws</url-pattern>

  11. </servlet-mapping>

  12. <servlet-mapping>

  13. <servlet-name>AxisServlet</servlet-name>

  14. <url-pattern>/services/*</url-pattern>

  15. </servlet-mapping>

  16. <servlet-mapping>

  17. <servlet-name>AxisServlet</servlet-name>

  18. <url-pattern>/servlet/AxisServlet</url-pattern>

  19. </servlet-mapping>

  20. < -- 定義 mime 的 mapping 以讓 Browser 能夠了解所傳回的資訊 -- >

  21. <mime-mapping>

  22. <extension>wsdl</extension>

  23. <mime-type>text/xml</mime-type>

  24. </mime-mapping>

  25. <mime-mapping>

  26. <extension>xsd</extension>

  27. <mime-type>text/xml</mime-type>

  28. </mime-mapping>


設定好後,要重新啟動Tomcat

並且測試一下 WSDL文件是否可以產生

http://127.0.0.1:8080/WebAgenda/webservice/AgentflowWeb.jws

出現

There is a Web Service here

Click
to see the WSDL

即表示OK

http://127.0.0.1:8080/WebAgenda/webservice/AgentflowWeb.jws?wsdl

可以看 Web Service 內容



Step 2.

開啟 Visual Studio建立一個 Web 專案,加入 Web 參考


輸入 WebServices wsdl url http://127.0.0.1:8080/WebAgenda/webservice/AgentflowWeb.jws?wsdl

按移至



即可找到 Web Service的位置,給定名稱後,加入參考即可使用



Step 3.

撰寫一支WebForm,於Page_Load中寫一段測試馬,來測試看看是否可以呼叫並啟動流程

  1. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  2. Dim service As AFWebReference.AgentflowWebService
  3. Dim serviceURL As String = "http://127.0.0.1:8080/WebAgenda/webservice/AgentflowWeb.jws"
  4. Dim cRet As String
  5. Try
  6. service = New AFWebReference.AgentflowWebService()
  7. Dim arr(1) As Object
  8. Dim aKey(4) As String
  9. Dim aVal(4) As String
  10. aKey(0) = "arg1"
  11. aKey(1) = "arg2"
  12. aKey(2) = "arg3"
  13. aKey(3) = "arg4"
  14. aKey(4) = "arg5"
  15. aVal(0) = "val1"
  16. aVal(1) = "val2"
  17. aVal(2) = "val3"
  18. aVal(3) = "val4"
  19. aVal(4) = "val5"
  20. arr(0) = aKey
  21. arr(1) = aVal
  22. cRet = service.createProcess("MEMxxxxxxxxxxxxxxxxx", "PROxxxxxxxxxxxxxxxxx", arr)
  23. If cRet <> "" Then
  24. Response.Write(cRet)
  25. End If
  26. Catch ex As Exception
  27. Response.Write(ex.Message)
  28. End Try
  29. End Sub

Step 4.

執行該頁面,可以於瀏覽器得到回傳的訊息


張貼留言