首页 > 编程知识 正文

java工作流框架(java工作流框架哪个好)

时间:2023-05-05 16:53:22 阅读:71508 作者:4900

工作流主要适用于反射机制

创建工作流表

例如,主键|工作流代码|工作流内容

其中,内容为Json格式

工作流的内容如下

{

' procCode': 'OPS ',

' procName': 'c端补(乘客信息补全) )、

' taskControlVoList': [

{

' sortNo': '10 ',

'任务代码' : ' Opc ',

“taskName':”检查是否存在相应的订单信息,

' tasklassname ' : ' com.xf.flow.service.impl.order people 10 serv impl '

(,

{

' sortNo': '20 ',

'任务代码' : ' OPD ',

“taskname”:“乘客数据库库存减少”,

' tasklassname ' : ' com.xf.flow.service.impl.order people 20 serv impl '

(,

{

' sortNo': '90 ',

'任务代码' : ' RSP ',

' taskName': '响应消息',

' tasklassname ' : ' com.xf.flow.service.impl.apiresponseservimpl '

}

]

}

3.java代码现在从工作流代码中检索当前工作流

4 .获取JSON str ——3354 JSON对象——3354 taskcontrolvolist

5.java工作流代码

@Override

publicapiresponsedeal (string item no,Object objVo,String skey,InnerVo innerVo ) {

apiresponseapiresponse=newapiresponse (;

查询itemNo捕获进程的示例

proccontrolvoproccontrolvo=codelibrarydao.queryprocconfig (item no );

if(proccontrolvo==null ) {

returnnewapiresponse (responsecodeenums.stream _ no _ exist );

}

listtaskcontrolvolist=proccontrolvo.gettaskcontrolvolist (;

taskcontrolvolist.sort () TaskControlVo h2,TaskControlVo h2 )- h1.getSortNo ).comPareto )- h1.getSortNo ) );

iteratorittask=taskcontrolvolist.iterator (

//初始化内部数据表

string data no=taskmanagerserv.initdata (item no,skey,innerVo );

//循环地依次执行流程任务

String taskNo=null;

wile(ittask.Hasnext () ) )。

taskcontrolvotaskcontrolvo=it task.next (;

stringtaskclassname=taskcontrolvo.gettasklassname (;

stringtaskitemno=taskcontrolvo.gettaskcode (;

string taskname=taskcontrolvo.get taskname (;

try {

//初始化任务

taskno=taskmanagerserv.init task (task item no,dataNo,innerVo );

//执行任务

taskservtaskserv=(taskserv ) springfactory.getbean ) class.forname (task class name );

taskserv.init(taskno,objVo );

taskanswervotaskanwservo=task serv.deal (taskno,objVo );

//判断任务的执行结果

API response=taskanwservo.getapiresponse (;

if (string utils.equals (responsecodeenums.success.get status (,apiResponse.getStatus ) ) )

//完成任务

logger.info ('=============taskexecutesuccess! taskCode={},taskName={},status={},msg={},nextTask={} ',

taskItemNo,taskName,apiResponse.getStatus (,apiResponse.getMessage ),taskAnwserVo.isNextTask );

taskmanagerserv.fintask(taskno,apiResponse.getMessage ) );

}else {

//异常任务

logger.info ('=============taskexecuteerror! taskCode={},taskName={},status={},msg={},nextTask={} ',

taskItemNo,taskName,apiResponse.getStatus (,apiResponse.getMessage ),taskAnwserVo.isNextTask );

taskmanagerserv.errtask(taskno,apiResponse.getMessage ) );

}

//判断流程是否继续

if (! taskAnwserVo.isNextTask (

布雷克;

}

}catch(exceptione ) {

//异常任务

字符串错误msg=getstack trace (e;

taskmanagerserv.errtask(taskno,errorMsg );

logger.error ('================executetaskerror! skey={},taskControlVo={},errorMsg={} ',skey,taskControlVo,errorMsg;

//响应异常

returnnewapiresponse (responsecodeenums.flow _ error;

}

}

if (string utils.equals (responsecodeenums.success.get status (,apiResponse.getStatus ) ) )

//归档完成过程

taskmanagerserv.findata(datano );

}

返回API响应;

}

image.png

SpringFactory实现类

//*

* Created by

*/

@Component

publicclassspringfactoryimplementsapplicationcontextaware {

私有应用程序上下文;

@Override

publicvoidsetapplicationcontext (应用程序上下文应用程序上下文) throws BeansException {

if (spring factory.application context==null )

spring factory.application context=application context;

}

}

获取//APP上下文

publicstaticapplicationcontextgetapplicationcontext (

返回应用程序上下文;

}

用name获取Bean。

publicstaticobjectgetbean (字符串名称) {

返回获取上下文().getbean ) name;

}

在类中获取Bean。

publicstatictgetbean (类分类) {

返回getapplicationcontext ().getbean ) clazz;

}

返回name和Clazz指定的Bean

publicstatictgetbean (字符串名称,Class clazz ) {

返回getapplicationcontext ().getbean ) name,clazz );

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。