王贤平 杜春红 顾正天 陈会娟
(上海西派埃智能化系统有限公司 上海 200233)
工业4.0[1]和工业互联网是在新工业革命背景下分别产生于德国和美国的未来工业发展模式,“中国制造2025”也应运而生。工业互联网整合了工业革命与网络革命两大优势[2],将工业革命成果及其带来的机器、机组和物理网络与近年发展迅速的互联网革命及其成果——智能设备、智能网络和智能决策融合到一起[3-4]。玻璃盖板行业,作为手机行业发展的技术支撑,其智能化与网络化的生产管理实现显得迫在眉睫。
目前,国内的玻璃盖板生产行业,面临着许多生产症结,比如无法准确捕捉良率不达标原因,生产计划更改无法及时传达到生产和物料采购和使用混乱延误生产等。本文根据当前玻璃盖板生产行业的智能生产转型,总结了玻璃盖板的基本生产业务流程,在Spring、SpringMVC、Mybatis[8-9]框架的基础上,集成了Activiti流程引擎[5-7],实现了PDM(Product Data Management)生产流程的动态引入,实现了从计划到生产的业务流程的编码设计与开发,同时完成前端Web页面[10]的设计与开发。在广东某玻璃盖板生产企业的运营测试发现,本设计能正常、高效地支持并指导现场生产,具有很高的实用性。
由于玻璃盖板行业产品的多样性,导致每种产品的生产流程几乎都有所差别,但基本工序几乎不变。针对这种特性,本文采用Activiti动态编辑功能,针对不同产品,配置不同生产流程,从产品维度设计代码与功能,指导整个生产运营。
Activiti官方文档提供了集成Spring的方法,本文不多做介绍。本文集成Activiti依赖Mybatis作为持久层,通过net.sourceforge.jtds.jdbc.Driver链接Sqlsever数据库。主要配置了SpringProcessEngineConfiguration、ProcessEngineFactoryBean及7大service。配置代码如下所示:
class="org.activiti.spring.SpringProcessEngineConfiguration"> //数据源配置信息…
class= "org.activiti.spring.ProcessEngineFactoryBean"> ref="processEngineConfiguration" />
factory-method="getRepositoryService" /> factory-method="getRuntimeService" /> factory-method="getTaskService" /> factory-method="getHistoryService" /> factory-method="getManagementService" /> factory-method="getIdentityService" /> factory-method="getFormService"/> 本文将玻璃盖板生产工艺流程通过Activiti流程定义表达,指导现场生产走向。系统通过远程数据库连接方式与PDM系统进行流程同步,在系统导入ERP任务单时完成流程导入。首先获取流程名称及流程节点,匹配工序库中预设工序,自动生成整个产品的生产工艺模型TaskModel。主要方法代码如下所示: List =processConfigService.selectListsByMastrCode(code); //处理PDM导入的数据 List //自动生成流程模型,返回模型id, String modelid=autoImport(data); Activiti生产的工艺模型图如图1所示。生成的工艺模型可审核后部署为流程定义ProcessDefinition。 图1 Activiti生产工艺模型图 本文将玻璃盖板从计划编制到审核,再到工单下发、报工和结转结合为基本的业务流程,预先定义整个基本流程为: public final static String processDefKey="System_Produce"; //生产指导流程key, 流程设计图如图2所示。 图2 业务主流程设计图 在计划创建时,启动该流程,生成流程实例,自动将任务分配给计划编制人员。代码采用业务信息与流程信息双向绑定,在流程实例中添加了业务ID,在业务实例中也保存了实例ID,计划人员完成任务量、人和机配置后提交审核,流程进入审核节点,流程流转时使用了Spring注解回滚,使得业务和流程任意一方出现问题,整个操作都会进行回滚。具体代码如下: @Transactional @Override public int save(DailyPlan dailyPlan) { try{ dailyPlan.setWorkorderid(CommUtil.getUUID()); //生成日计划同时生成对应工单的id,这样即可将计划与 //工单中的设备、人员分配进行同步 int res=0; Map ProcessInstance processInstance=workflowService.startWorkflow(dailyPlan.getId(), dailyPlan.getInsuser(), processDefKey,variables); if(processInstance!=null){ dailyPlan.setWforderid(processInstance.getId()); res=this.dailyPlanDao.insert(dailyPlan); } return res; }catch(Exception e){ throw new RuntimeException(); } } 登录用户可以根据登录ID查看当前待办,先获取当前人的任务列表,然后将任务及实例存入ToDoTask实体中,在统计当前待办时,可集中查看任务和流程实例信息。代码如下所示: TaskQuery taskQuery=taskService.createTaskQuery().taskCandidateOrAssigned(userId); List TodoTask todoTask=new TodoTask(); todoTask.setProcessInstance(processInstance); ProcessDefinition processDefinition=getProcessDefinition(processInstance.getProcessDefinitionId()); todoTask.setProcessDefinition(processDefinition); 整个生产流程所有工单完成结转后,生产流程结束。得到多个产品订单生产进度统计及某日计划的统计结果,如图3和图4所示(检验工序着重显示)。 图3 多个产品订单生产进度统计 图4 某产品订单某日工序的计划与实际产量 该系统以产品为主线,从ERP、PDM等系统获取生产任务,按业务流程指导用户完成任务单切割、日计划编制、工单生产及生产反馈,使业务人员能及时了解生产订单的生产详情,准确指导生产人员生产。并且可以从工序、产品订单等多个维度统计分析生产情况,从而及时准确调整生产情况,极大地节约了人力,有效地提高了生产效率与生产良率,对玻璃盖板的精益生产起到很好的推动作用。 本文根据玻璃盖板智能化转型的业务需求,在SSM框架的基础上,集成了Activiti工作流,实现了PDM生产流程的动态引入,实现了从计划到生产的业务流程的编码设计与开发。最后得到了计划生产流程下的生产统计,实现了生产和控制的网络化,克服了传统生产的实时响应差的缺点。动态生产工艺流程及计划生产流程方便了用户在生产中及时调整产品工艺,执行生产过程等操作。现场的运营测试也证明了本文设计具有很高的实用性。1.2 生产流程动态引入
1.3 业务流程
2 实施效果
3 结 语