首页 > 编程知识 正文

java项目开发流程(java工作流主流框架)

时间:2023-05-04 04:27:58 阅读:71514 作者:271

Java工作流的应用目前非常广泛,能够很好地实现工作流也是其技术途径之一。 在这篇报道中,请小编告诉我们实现它的关键。

我们知道工作流的实现主要取决于反射机制,但要做到这一点,我们首先要创建工作流表

创建工作流表

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

其中,工作流的内容为Json格式

工作流内容{

' procCode':'OPS '

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

,' taskControlVoList':[

{

' sortNo':'10 '

,' taskCode':'OPC '

、' taskName': '检查是否存在相应订单信息'

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

}

、{

' sortNo':'20 '

,' taskCode':'OPD '

、' taskName': '乘客数据库库存丢失'

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

}

、{

' sortNo':'90 '

,' taskCode':'RSP '

、“taskName': '响应消息”

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

}

]

}

ava代码现在从工作流代码中检索当前工作流

JSON str ———— JSON object ——3354 taskcontrolvolist获取

java工作流代码@Override

publicapiresponsedeal (字符串项no,ObjectobjVo,Stringskey,InnerVoinnerVo ) )。

{

apiresponseapiresponse=newapiresponse (

查询itemNo捕获进程的示例

proccontrolvoproccontrolvo=codelibrarydao.queryprocconfig (item no );

if(procControlVo==null )

{

returnewapiresponse (responsecodeenums.stream _ no _ exist );

}

listtaskcontrolvolist=proccontrolvo.gettaskcontrolvolist (;

taskcontrolvolist.sort ((taskcontrolvoh 1,TaskControlVoh2)-h1.getSortNo ) )。

.comPareto(H2.getsortno ) );

teratorittask=taskcontrolvolist.iterator (;

//初始化内部数据表

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

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

StringtaskNo=null;

while(ittask.Hasnext ) )

{

taskcontrolvotaskcontrolvo=it task.next (;

stringtaskclassname=taskcontrolvo.gettasklassname (;

stringtaskitemno=taskcontrolvo.gettaskcode (;

string taskname=taskcontrolvo.get taskname (;

特里

{

//初始化任务

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;

//响应异常

returnewapiresponse (responsecodeenums.flow _ error;

}

}

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

{

//归档完成过程

taskmanagerserv.findata(datano );

}

returnapiResponse;

}

SpringFactory实现类/**

*Createdby

*/

@Component

publicclasspringfactoryimplementsapplicationcontextaware

{

私有应用程序上下文;

@Override

publicvoidsetapplicationcontext (应用程序上下文应用程序上下文) throwsBeansException

{

if (spring factory.application context==空)

{

spring factory.application context=application context;

}

}

获取//APP上下文

publicstaticapplicationcontextgetapplicationcontext ()

{

returnapplicationContext;

}

用name获取Bean。

publicstaticobjectgetbean (字符串名称) )。

{

returngetApplicationContext (

. getbean(name;

}

在类中获取Bean。

publicstatictgetbean (类分类)。

{

returngetApplicationContext (

. getbean(Clazz );

}

返回name和Clazz指定的Bean

publicstatictgetbean (字符串名称,类分类)。

{

returngetApplicationContext (

. getbean(name,clazz );

}

}

以上就是这篇文章的全部。 需要了解其他java常见问题和解决方法的合作伙伴应继续关注此网站。

请阅读:

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