一. 泛普OA免費版接口說明
該接口主要實現(xiàn)在流程的流轉(zhuǎn)當(dāng)中,實時通過自定義的動作去操作異構(gòu)形體系統(tǒng)的數(shù)據(jù)或者是其他一些特定的操作。
在流程的每個出口都可以定義這樣的自定義動作,從而實現(xiàn)在流程流轉(zhuǎn)過程導(dǎo)入,導(dǎo)出流程的相關(guān)信息,或者將流程信息和其他應(yīng)用相結(jié)合。
通過泛普OA系統(tǒng)流程申請?zhí)幚恚?/div>
流程提交或處理結(jié)束后,報銷流程中的數(shù)據(jù)會自動生成到NC系統(tǒng)中:
查詢后的結(jié)果:
從這里可以查看到從泛普OA系統(tǒng)提交過來的對應(yīng)數(shù)據(jù):
1、配置接口文件(action.xml)
2、編寫接口(action)實現(xiàn)代碼
3、
流程管理員把a(bǔ)ction.xml中定義的接口設(shè)置為流程節(jié)點附加操作后,就可以實現(xiàn)流程到達(dá)該節(jié)點前(或離開該節(jié)點后)執(zhí)行接口實現(xiàn)代碼。
4、在流程設(shè)置中應(yīng)用該功能
1. xml文件配置
該文件名為action.xml,位于(該文件位于泛普OA系統(tǒng)的WEB-INF/service/目錄下)
<?xml version="1.0" encoding="GBK"?>
<module id="datasource" version="1.0.0">
<service-point id="baseAction" interface="泛普OA系統(tǒng).interfaces.workflow.action.Action">
<invoke-factory>
<construct class="泛普OA系統(tǒng).interfaces.workflow.action. BaseAction ">
<set-service property="ds" service-id="datasource.dt1"/>
<set property="userid" value="100" />
</construct>
</invoke-factory>
</service-point>
說明: 以上定義了一個id 為 baseAction的action,其中黑體部分是在配置每個動作時需要改變的內(nèi)容;
注意:每次配置后需要重啟OA服務(wù)
方可生效;
2. 屬性說明
Id: 為該動作的id,不能重復(fù),在后文件將會使用該標(biāo)識
Class: 具體實現(xiàn)的動作類
service-id:為該動作要使用的數(shù)據(jù)源,如果該動作需要好異構(gòu)系統(tǒng)交互數(shù)據(jù),在此可以設(shè)置前文配置好的數(shù)據(jù)源。
如果添加一個新的動作,只需修改以上的參數(shù)就可以
如果一個動作中,用到多個數(shù)據(jù)源,也可以類似的添加進(jìn)去,如:
<set-service property="ds1" service-id="datasource.xxx"/>
只要 property 的值不相同就可以。
配置其它屬性值,可以安裝下面的方式配置,可以配置多個,但property的值不能重復(fù)
<set property="userid" value="100" />
3. 在5.0及以上版本可以直接在進(jìn)行可視化的配置
通過頂部菜單【設(shè)置中心】【外部接口設(shè)置】【配置接口動作】即可進(jìn)入配置界面
點擊右鍵【新建】即可創(chuàng)建一個新的【接口動作】
注意:
1) 該配置,不需要重啟OA服務(wù)即可生效
2) 可視化配置目前不支持?jǐn)?shù)據(jù)源和屬性值配置,后期會完善。
4. 可視化配置屬性說明
接口動作標(biāo)識,即xml配置中的Id: 為該動作的id,不能重復(fù),在后文件將會使用該標(biāo)識
接口動作類文件,即xml配置中的Class: 具體實現(xiàn)的動作類
5. Action接口代碼編寫
編寫接口(action)實現(xiàn)代碼,在上面的配置中,具體要實現(xiàn)的動作將體現(xiàn)在泛普OA系統(tǒng).interfaces.workflow.action.BaseAction類中。該類必須實現(xiàn)泛普OA系統(tǒng).interfaces.workflow.action.Action接口,該接口中包含execute(RequestInfo request),這個方法會在流程節(jié)點到達(dá)前或節(jié)點到達(dá)后被泛普OA系統(tǒng)調(diào)用。
示例代碼:
package 泛普OA系統(tǒng).interfaces.workflow.action;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import 泛普OA系統(tǒng).general.Util;
import 泛普OA系統(tǒng).soa.workflow.request.Cell;
import 泛普OA系統(tǒng).soa.workflow.request.DetailTable;
import 泛普OA系統(tǒng).soa.workflow.request.Property;
import 泛普OA系統(tǒng).soa.workflow.request.RequestInfo;
import 泛普OA系統(tǒng).soa.workflow.request.Row;
public class BaseAction implements Action {
public String execute(RequestInfo request) {
//取主表數(shù)據(jù)
Property[] properties = request.getMainTableInfo().getProperty();// 獲取表單主字段信息
for (int i = 0; i < properties.length; i++) {
String name = properties[i].getName();// 主字段名稱
String value = Util.null2String(properties[i].getValue());// 主字段對應(yīng)的值
System.out.println(name + " " + value);
}
//取明細(xì)數(shù)據(jù)
DetailTable[] detailtable = request.getDetailTableInfo()
.getDetailTable();// 獲取所有明細(xì)表
if (detailtable.length > 0) {
for (int i = 0; i < detailtable.length; i++) {
DetailTable dt = detailtable[i];// 指定明細(xì)表
Row[] s = dt.getRow();// 當(dāng)前明細(xì)表的所有數(shù)據(jù),按行存儲
for (int j = 0; j < s.length; j++) {
Row r = s[j];// 指定行
Cell c[] = r.getCell();// 每行數(shù)據(jù)再按列存儲
for (int k = 0; k < c.length; k++) {
Cell c1 = c[k];// 指定列
String name = c1.getName();// 明細(xì)字段名稱
String value = c1.getValue();// 明細(xì)字段的值
System.out.println(name + " " + value);
}
}
}
}
return Action.SUCCESS;
}
}
以上class中可以在execute(RequestInfo request)方法中定義任何想要執(zhí)行的操作,上面的示例描述了在execute(RequestInfo request)方法中獲取當(dāng)前流程的所有信息。
6. 流程節(jié)點附加操作接口調(diào)用
在泛普OA系統(tǒng)流程管理中配置一下節(jié)點附加操作可以看到下圖所示,可以在任意一個節(jié)點上設(shè)置,當(dāng)流程流到改節(jié)點,自動觸發(fā)預(yù)先定義好的動作
以上網(wǎng)頁對話框中紅色部分接口動作將顯示所有定義過的接口動作供選擇調(diào)用。
該功能只對節(jié)點后action有效,可以在action里面使用下面的方法來控制