看完这个就会Flowable了

1. 流程生命周期与数据库表之间的逻辑关系
在这里插入图片描述

2. Flowable流程对象之间关系

在这里插入图片描述

3. act_ru_execution详解
ACTIVITI ACT_RU_EXECUTION 表

这个表是工作流程的核心表,流程的驱动都和合格表有密切的关系。

一般来讲一个流程实例都有一条主线。如果流程为直线流程,那么流程实例在这个表中只有一条记录对应。

ID_:EXECUTION主键,这个主键有可能和PROC_INST_ID_相同,相同的情况表示这条记录为主实例记录。

REV_:表示数据库表更新次数。

PROC_INST_ID_:一个流程实例不管有多少条分支实例,这个ID都是一致的。
比如以下流程:
在这里插入图片描述
这个对应的EXECUTION数据为:
在这里插入图片描述

这个图就描述的很清楚了。
10000001020315 记录为主流程,实例ID都为10000001020315,分支流程实例的父ID为10000001020315。

BUSINESS_KEY_:这个为业务主键,主流程才会使用业务主键,另外这个业务主键字段在表中有唯一约束。

PARENT_ID_:这个记录表示父实例ID,如上图,同步节点会产生两条执行记录,这两条记录的父ID为主线的ID。

PROC_DEF_ID_ :流程定义ID

SUPER_EXEC : 这个如果存在表示这个实例记录为一个外部子流程记录,对应主流程的主键ID。

ACT_ID_:表示流程运行到的节点,如上图主实例运行到ANDGateway1 节点。

两个子实例运行到UserTask1,UserTask2节点。

IS_ACTIVE_ : 是否活动流程实例,比如上图,主流程为非活动实例,下面两个为活动实例,如果UserTask2完成,那么这个值将变为0即非活动。

IS_CONCURRENT_:是否并发。上图同步节点后为并发,如果是并发多实例也是为1。

IS_SCOPE_: 这个字段我跟踪了一下不同的流程实例,如会签,子流程,同步等情况,发现主实例的情况这个字段为1,子实例这个字段为0。

TENANT_ID_ : 这个字段表示租户ID。可以应对多租户的设计。

IS_EVENT_SCOPE: 没有使用到事件的情况下,一般都为0。

SUSPENSION_STATE_: 这个表示是否暂停。

总结:
(1)如果是单例流程,执行对象ID就是流程实例ID
(2)如果一个流程有分支和聚合,那么执行对象ID和流程实例ID就不相同
(3)一个流程中,流程实例只有1个,执行对象可以存在多个。

4. Activiti业务键(businessKey)
问题:如何让业务对象和对应的流程 关联?

发现ProcessInstance 有个方法getBusinessKey()可以得到一个businessKey。

ProcessInstance 对应数据库中的表act_ru_execution有个字段BUSINESS_KEY_对应类中的businessKey,这个字段在创建表时自动被设置为unique

解决:

1、保证流程的ID和业务对象的类名一致。例如:流程id为LeaveBill,我们的业务对象的类名也创建为LeaveBill。

2、在流程启动的时候获取业务对象执行方法的时候传入businessKey,workflowService.startProcess(key,businessKey,vars);(这里vars为一些变量根据实际情况可有可无)businessKey 产生规则: className+“.”+objId

    public void startProcess(Long id) {
        //1. 获取业务对象
        LeaveBill bill = this.get(id);
        if(bill!=null){
            // 修改业务对象状态
            bill.setState(1);// 请假单状态 0初始录入,1.开始审批,2为审批通过
            this.update(bill);
            //2. 添加流程变量(Map)
            Map<String,Object> vars = new HashMap<>();
            vars.put("inputUser", bill.getUser().getName());
            // 添加变量来描述业务对象的信息
            String classType =bill.getClass().getSimpleName();
            vars.put("classType", classType);
            vars.put("objId", bill.getId());
            //3. 启动流程
            // 获取流程定义key
            String key = classType;
            // 获取业务键 产生规则: className+“.”+objId
            String businessKey = classType +"." + bill.getId();
            this.workflowService.startProcess(key,businessKey,vars);
        }
    }

3、根据以下方法就可以用taskId获取业务对象id

public String getBusinessObjId(String taskId) {
        //1  获取任务对象
        Task task  =  taskService.createTaskQuery().taskId(taskId).singleResult();
        
        //2  通过任务对象获取流程实例
        ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
        //3 通过流程实例获取“业务键”
        String businessKey = pi.getBusinessKey();
        //4 拆分业务键,拆分成“业务对象名称”和“业务对象ID”的数组 
        // a=b  LeaveBill.1
        String objId = null;
        if(StringUtils.isNotBlank(businessKey)){
            objId = businessKey.split("\\.")[1];
        }
        return objId;
    }

4、根据业务键获取流程实例和任务

ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceBusinessKey("LeaveBill.1").singleResult();
List<Task> task = taskService.createTaskQuery().processInstanceBusinessKey("LeaveBill.1").list();
<think>好的,用户之前已经询问过学习Java后可以找哪些岗位,现在他提供了新的信息:每天下班在学习Java全栈课程,预计今年过年学完,之后不想继续做机器人行业,想转行投递其他岗位。我需要根据这些新信息调整之前的建议,去掉与工业自动化相关的部分,转向更通用的Java全栈岗位。 首先,用户现在明确要转行,所以之前推荐的工业+IT岗位可能不再适用。需要转向纯IT或泛IT的岗位。用户学习的是全栈课程,所以应该涵盖前端和后端,可能包括主流框架如Spring Boot、Vue、React等,数据库如MySQL,以及一些DevOps工具。需要推荐适合全栈开发的岗位,并且考虑到用户之前有工业背景,可能可以保留一些交叉领域,但用户明确不想做机器人,所以可能需要排除制造业相关岗位。 接下来,用户希望年底学完,时间紧迫,所以求职策略可能需要强调快速上手和项目经验的重要性。需要建议他如何优化简历,准备项目,以及选择哪些岗位更容易切入。 可能的岗位方向包括:Java后端开发、全栈开发、大数据开发、云计算/DevOps、测试开发等。这些岗位都是Java全栈可以覆盖的,并且市场需求大。此外,还可以考虑一些新兴领域如低代码平台或教育领域,但需要看用户兴趣。 同时,用户可能担心没有相关工作经验,所以需要强调项目经验和技能展示的重要性。比如用Java重构现有工作中的工具,开发个人项目,参与开源等。此外,转行策略可能需要分步走,先进入IT行业再调整方向。 需要提醒用户注意岗位要求,不同岗位的技术栈侧重点不同,比如大数据可能需要Hadoop、Spark,而DevOps需要Docker、Kubernetes等。建议用户根据自己的兴趣和课程内容选择主攻方向。 最后,给出具体的求职策略,比如优化简历、准备项目、选择公司类型、面试准备等,帮助用户顺利过渡到新岗位。</think>根据你的转型需求(机器人行业转行 + Java全栈技能),结合当前市场趋势,为你整理以下**「零行业限制」的Java全栈转型路径**,包含可直接落地的岗位选择策略和快速入行方案: --- ### 一、 **通用型岗位池(适合快速入行)** #### 1. **企业级应用开发(起薪10-18K)** - **核心目标**: ✅ 用Spring Boot项目经验替代行业背景 ✅ 通过CRUD业务快速积累IT行业履历 - **重点技术栈**: ```markdown - 必杀技:Spring Boot + MyBatis Plus + Redis - 加分项:Saas多租户方案/工作流引擎(Flowable) - 突围点:用机器人行业的BOM管理经验包装「复杂业务建模能力」 ``` - **岗位选择**: ▫️ 传统企业数字化部(如永辉超市供应链系统) ▫️ 政务信息化公司(医保/税务系统开发商) ▫️ 中小型软件外包公司(积累项目数量) #### 2. **电商中台开发(薪资15-25K)** - **快速上手方案**: ```markdown 1. 用若依框架复刻一个「工业备件商城」 2. 重点包装: - 库存管理(对接原行业的SPC预警经验) - 物流跟踪(移植设备远程监控技术) 3. 学习曲线: Spring Cloud Alibaba → 秒杀方案 → 分库分表 ``` - **目标企业**: ▫️ 跨境电商(SHEIN、安克创新) ▫️ 直播电商服务商(有赞、微盟) ▫️ 细分领域电商(找钢网、震坤行) --- ### 二、 **转型缓冲带(工业转IT过渡期)** #### 1. **工业互联网企业的非核心岗** - **迂回战术**: ```markdown - 投递非机器人业务线(如家电/纺织行业IoT平台) - 选择边缘系统开发(如售后管理系统、供应商门户) - 优势:可保留部分行业经验价值 ``` - **代表岗位**: ▫️ 设备管理SaaS开发(树根互联) ▫️ 供应链金融系统开发(欧冶云商) #### 2. **制造业IT服务商** - **降维打击策略**: ```markdown - 利用工厂背景理解ERP/MES业务逻辑 - 开发通用模块: ✔️ 报表引擎(替换传统Excel模板) ✔️ 移动端审批(整合企业微信API) ``` - **目标公司**: ▫️ 用友/金蝶生态伙伴 ▫️ 工业APP开发商(黑湖科技、锱云科技) --- ### 三、 **新兴赛道卡位(未来3年红利)** #### 1. **信创领域开发** - **技术适配**: ```markdown - 国产化替代: 达梦数据库 → 替换MySQL 东方通中间件 → 替换Tomcat - 特殊要求: Linux国产发行版(麒麟/UOS)适配 ``` - **岗位聚集地**: ▫️ 政务云服务商(数字广东、万达信息) ▫️ 国企信息化子公司(中电科、中航信) #### 2. **AI应用开发** - **低门槛切入法**: ```markdown 1. 学习LangChain框架接入大模型API 2. 开发行业专属应用: - 设备维修知识库问答(结合原行业经验) - 供应链合同智能审查 3. 技术组合: Java + Python + Vector Database ``` - **目标岗位**: ▫️ 传统软件公司的AI事业部 ▫️ 行业大模型初创公司(法律/医疗领域) --- ### 四、 **技能变现加速器** #### 1. **项目包装公式** - **简历改造模板**: ```markdown 原经验:机器人调试 → 「开发设备通信协议解析模块(日均处理20万条实时数据)」 现学习:全栈课程 → 「基于微服务架构实现分布式工单系统(QPS突破1500)」 ``` - **GitHub突围方案**: ▫️ 开发「工业转IT助手」: - PLC协议转RESTful API工具 - 设备时序数据可视化模板 #### 2. **面试话术设计** - **高频问题应答**: ```markdown Q: 为什么从机器人转行? A: "发现工业数字化转型中,软件价值传递效率比硬件高3-5倍(举例:预测性维护系统减少30%停机),希望用代码创造更大规模的产业价值" Q: 行业经验如何迁移? A: "在设备数据采集场景中培养的「物理信号→数字模型」转化思维,与业务系统开发的「需求抽象→模块设计」有方法论共性" ``` --- ### 五、 **风险控制方案** #### 1. **保底选择** - **IT驻场开发**: ▫️ 制造企业的信息中心(上汽/宝钢) ▫️ 银行软开的外包岗位(先获得甲方视野) #### 2. **副业铺垫** - **接单方向**: ```markdown - 工业领域: ✔️ 设备数据看板开发(Grafana定制) ✔️ 维保小程序(扫码报修+电子手册) - 通用领域: ✔️ 企业官网Spring Boot后台 ✔️ 教育机构课程管理系统 ``` - **接单平台**: 程序员客栈 / 开源众包 / 线下技术沙龙 **立即行动建议**:在BOSS直聘创建「Java转型版」简历,设置期望岗位为「Java开发(接受转行)」,主动沟通100+家公司的HR获取市场真实反馈,根据面试问题反推技能短板。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值