一、功能需求
泛微e-cology可以在流程中調用Webservice接口實現與其他系統的聯動等復雜功能。但是目前泛微文檔中僅提供了調用的方法,但是沒有關於接口的相關開發信息。
本次案例是用Python開發一個泛微e-cology 可以調用的Webservice接口。
二、所需要的庫
pip install spyne
對於Python3
pip install spyne==2.13.4a1
三、代碼實現
from spyne.protocol.soap import Soap11 from spyne.server.wsgi import WsgiApplication from spyne import Application,rpc,ServiceBase,Integer,Unicode,String class HelloWorldService(ServiceBase): #rpc內包含了傳入參數以及傳出參數的類型。 #前半部分是傳入參數,參數類型必須是String,傳入參數可以定義多個。參數名一定要與OA中待傳入的參數名一致。這里調用的是requestid #_returns=String是傳出參數,用以判斷運行是否成功。 @rpc(String,_returns=String) def say_hello(ctx,requestid ): print(requestid ) return 'Succeed' application = Application([HelloWorldService], #命名空間 tns tns='spyne.examples.hello', #傳入類型Soap11(),千萬不要驗證,encodingStyle是不被支持的。 in_protocol=Soap11(), #傳出類型Soap11() out_protocol=Soap11() ) #本地測試運行,生產環境還是掛在Django下的 if __name__ == '__main__': # You can use any Wsgi server. Here, we chose # Python's built-in wsgi server but you're not # supposed to use it in production. from wsgiref.simple_server import make_server wsgi_app = WsgiApplication(application) server = make_server('0.0.0.0', 8000, wsgi_app) server.serve_forever()
四、泛微OA中的設置
1、注冊Webservice接口
2、綁定表單與接口
入口點:集成中心--流程流傳集成
參數值可以點擊主表、明細表中字段 獲取。但是參數值的名字,如此處的$requestid$必須和參數名requestid一致。
返回值必須與函數的返回值一致,這里設置的Succeed。
3、流程節點中附加操作
可以在節點前或者節點后附加操作
4、測試提交流程
流程提交至下一個節點說明接口運行成功。
如果運行失敗會提示接口運行失敗,不會提交到下一個節點。