解决方案

SOLUTION

第一章  客户端设计初衷


一、简化接口调用

1、 工作流软件与ERP软件的数据映射方法和页面,全部封装在工作流之中。不需要ISV在自己的ERP中做任何工作

2、 ISV的程序员只需要以WEB方式调用工作流的5、6个接口即可,大大减轻了对接门槛


二、ERP模块直推工作流表单

如果客户正在使用ERP系统,工作流尚未使用时,可以采用如下工作模式:

1、 ERP中的已经设计好功能模块,可以通过客户端直接推入工作流。并且,不需要用户在工作流中二次设计表单。

2、 用户需要在工作流表单中添加数据时,只需要在客户端的相关功能模块中,勾选需要添加的字段、并再次推入即可,不需要直接修改流程表单。

3、 当用户需要修改或删除工作流表单中的某些数据时,可以在表单中直接删除、修改; 也可以在客户端的相关功能模块中,取消勾选或修改对应的字段、并再次推入即


三、工作流表单反推ERP

如果客户的工作流系统已经正常运行,现在需要与ERP系统打通,可以采用如下模式:

1、 用户在工作流中已经设计好的、已经正常使用的流程表单,可以从工作流中反向、自动推入ERP系统,用户只需在客户端中完成必要参数的设置即可。不需要开发人员在ERP中写入任何代码。

2、 用户在工作流表单中添加数据之后,只需要再次推入ERP系统、修改客户端相关设置即可,不需要开发人员修改ERP的代码。

3、 当用户需要修改或删除工作流表单中的某些数据时,可以在表单中直接删除、修改; 不需要修改客户端设置和ERP代码。

同一个业务流程,只能采取以上两种方式(ERP直推工作流、工作流反推ERP)中的一个策略,不得混用。

 

第二章 客户端功能介绍


一、ERP模块管理

image.png


二、ERP模块的数据源(工作流反推ERP)

image.png


三、ERP模块的数据源(ERP推工作流)

image.png

第三章 ERP的调用方法


一、 工作流“静默发起

let data = {

  emergencyLevel:'1',                                 //紧急程度 1一般,2紧急, 3超紧急

userName: 发起人,

  appId: 应用程序id,

  moduleName: ERP模块名称,

  proJsonEntity: 要传递的json

}

axios.post(工作流网址, data).then((res) => {

  this.$message.success(res.data.msg)

})

 

二、 工作流“页面发起”

let data = {

billId: 单据ID,                                      

emergencyLevel:'1',                                 //紧急程度 1一般,2紧急, 3超紧急

 userName: 发起人,

  appId: 应用程序id,

  moduleName: ERP模块名称,

  proJsonEntity: 传递的json,

}

let url = `工作流网址/api/operationflow/mappingfieldbody`

axios.post(url, data).then((res) => {

  let form = encodeURI(JSON.stringify(res.data.data))      //将json对象转换成字符串

  form = this.Base64.encode(form)                                   //对字符串进行Base64加密

  window.open(`工作流网址/publicpage?data=` + form)   //在浏览器中打开此页面

})


三、 工作流“查询指定模块、指定流程的进度”

let formData = {                  

  callType: '2',

  formId: 业务对象id,

  instanceId: 要查询的业务流程ID,

  userName: 发起人,

  timeStamp: 时间戳,

}

let data = encodeURI(JSON.stringify(formData))       //将json对象转换成字符串

data = this.Base64.encode(data)                               //对字符串进行Base64加密

window.open(`工作流网址/publicpage?data=` + data)     //在浏览器中打开此页面

 

四、 工作流“查询指定模块所有流程的进度“

let formData = {                  

  callType: '1',

  formId: 业务对象id,

  userName: 发起人,

  timeStamp: 时间戳,

}

let data = encodeURI(JSON.stringify(formData))         //将json对象转换成字符串

data = this.Base64.encode(data)                                  //对字符串进行Base64加密

window.open(`工作流网址/publicpage?data=` + data)     //在浏览器中打开此页面


五、 工作流中的管理页面

  let form = {

    userName: "admin",                                     //发起人,必须是admin

    timeStamp: moment().format('YYYY-MM-DD HH:mm:ss'),     //时间戳

  }

  let params = this.getUrlappId()                             //获取url、appid

  this.$nextTick(() => {

    let data = encodeURI(JSON.stringify(form))       //将json对象转为json字符串

    data = this.Base64.encode(data)                         //对json字符串进行Base64加密

    let flowUrl = params.flowUrl                               //获取工作流网址

    window.open(`${flowUrl}?login=` + data)           //在浏览器中打开此页面

  })

 

六、 应用程序管理页面

  let form = {

    userName: this.$store.state.user.name,                                     //发起人

    timeStamp: moment().format('YYYY-MM-DD HH:mm:ss'),     //时间戳

    appId: null,                                                                               //应用程序id

  }

  let params = this.getUrlappId()                                          //验证/获取url、appid

  this.$nextTick(() => {

    let flowUrl = params.flowUrl                                            //获取工作流网址

    form.appId = params.appId                                             //设置应用程序id

    let data = encodeURI(JSON.stringify(form))                    //将json对象转换成字符串

    data = this.Base64.encode(data)                                     //对字符串进行Base64加密

    window.open(`${flowUrl}/sjkList?data=` + data)             //在浏览器中打开此页面

  })

 

 

七、 ERP与工作流数据映射页面

 let form = {

    userName: this.$store.state.user.name,                                     //发起人

    timeStamp: moment().format('YYYY-MM-DD HH:mm:ss'),      //时间戳

    appId: null,                                                                                //应用程序id

  }

  let params = this.getUrlappId()                                                   //验证/获取url、appid

  this.$nextTick(() => {

    let flowUrl = params.flowUrl

    form.appId = params.appId                                                    //设置应用程序id

    let data = encodeURI(JSON.stringify(form))                           //将json对象转换成字符串

    data = this.Base64.encode(data)                                             //对字符串进行Base64加密

    window.open(`${flowUrl}/workflow?data=` + data)                 //在浏览器中打开此页面

  })

 



 
 

扫一扫关注我们

扫一扫关注公众号

获取方案

电话咨询

0531-89005623

微信咨询

公众号