定义可装配的流程编排器

流程编排器

ProcessorArrayList.java

package com;


import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author lingao
 * @version $Id: ProcessorArrayList.java, v 0.1 2018年12月21日 1:32 PM lingao Exp $
 */
public final class ProcessorArrayList<E extends Object> extends ArrayList<E> {

    private List<E> procList;

    private final String name;

    public ProcessorArrayList(String name){
        this.name = name;
    }

    public void init(){
        if(!isEmpty(procList)){
            /** 存在list中的值还是个list情况 */
            for(Object obj : procList){
                if(obj instanceof List){
                    addAll((List<E>)obj);
                }else{
                    add((E) obj);
                }
            }
        }
    }

    private boolean isEmpty(List list){
        return list == null || list.isEmpty();
    }

    /**
     * Getter method for property <tt>procList</tt>.
     *
     * @return property value of procList
     */
    public List<E> getProcList() {
        return procList;
    }

    /**
     * Setter method for property <tt>procList</tt>.
     *
     * @param procList value to be assigned to property procList
     */
    public void setProcList(List<E> procList) {
        this.procList = procList;
    }

}
package com.processor;

/**
 *
 * @author lingao
 * @version $Id: ApplyPayProcessor.java, v 0.1 2018年12月22日 6:04 PM lingao Exp $
 */
public class ApplyPayProcessor {

    public ApplyPayProcessor(){
    }
}
package com.processor;

/**
 *
 * @author lingao
 * @version $Id: RequestLogProcessor.java, v 0.1 2018年12月21日 2:22 PM lingao Exp $
 */
public class RequestLogProcessor {

    public RequestLogProcessor(){
    }
}
package com.processor;

/**
 *
 * @author lingao
 * @version $Id: ResponseLogProcessor.java, v 0.1 2018年12月21日 2:22 PM lingao Exp $
 */
public class ResponseLogProcessor {
    public ResponseLogProcessor(){
    }
}
package com.processor;

/**
 *
 * @author lingao
 * @version $Id: RiskVerifyProcessor.java, v 0.1 2018年12月21日 2:29 PM lingao Exp $
 */
public class RiskVerifyProcessor {

    public RiskVerifyProcessor(){
    }
}

xml编排

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="requestLog1Processor" class="com.processor.RequestLogProcessor" />
    <bean id="responseLog1Processor" class="com.processor.ResponseLogProcessor" />
    <bean id="riskVerify1Processor" class="com.processor.RiskVerifyProcessor" />
    <bean id="applyPay1Processor" class="com.processor.ApplyPayProcessor"/>

    <bean id="prefix" class="com.ProcessorArrayList" init-method="init">
        <constructor-arg value="prefix" />
        <property name="procList">
            <list>
                <ref bean="requestLog1Processor" />
            </list>
        </property>
    </bean>

    <bean id="suffix" class="com.ProcessorArrayList" init-method="init">
        <constructor-arg value="suffix"/>
        <property name="procList">
            <list>
                <ref bean="responseLog1Processor" />
            </list>
        </property>
    </bean>

    <bean id="commonPayProcessors" class="com.ProcessorArrayList" init-method="init">
        <constructor-arg value="commonPayProcessors"/>
        <property name="procList">
            <list>
                <ref bean="prefix"/>
                <ref bean="riskVerify1Processor"/>
                <ref bean="suffix"/>
            </list>
        </property>
    </bean>

    <bean id="testProc" class="com.ProcessorArrayList" init-method="init">
        <constructor-arg value="testProc"/>
        <property name="procList">
            <list>
                <ref bean="commonPayProcessors"/>
                <ref bean="applyPay1Processor"/>
            </list>
        </property>
    </bean>

</beans>

附带策略组装器

TaskStrategy.java

public abstract class TaskStrategy<R> {

    /**
     * 默认构造注册
     */
    public TaskStrategy() {
        // 注册到组件中
        StrategyComponent.register(getName(), this);
    }

    /**
     * 策略名称
     * @return
     */
    public abstract String getName();

    /**
     * 策略执行
     * @return
     */
    public abstract R execute(Object ...params);
}

StrategyComponent.java

public final class StrategyComponent {

    /**
     * 策略配置
     */
    private static Map<String, TaskStrategy> taskStrategyMap = Maps.newHashMap();

    /**
     * 策略注册
     * @param code
     * @param taskStrategy
     */
    protected static void register(String code, TaskStrategy taskStrategy) {
        taskStrategyMap.putIfAbsent(code, taskStrategy);
    }

    /**
     * 根据code 获取策略信息
     * @param code
     * @return
     */
    public static TaskStrategy getStrategy(String code) {
        return taskStrategyMap.get(code);
    }

}
### 如何在Autodesk Inventor中创建装配图动画 #### 创建装配图动画的基础流程 为了在Autodesk Inventor中创建装配图动画,用户需先熟悉软件环境并掌握基本操作。该过程涉及多个方面的工作,包括但不限于三维建模、装配设计和动画制作。 #### 准备工作 确保已经完成所需的三维模型构建,并将各个组件按照实际装配关系组合成完整的装配体[^2]。这一步骤至关重要,因为后续所有的动作都将基于此装配结构展开。 #### 动画设置 进入`Presentation`模式,在这里可以定义物体间的相对移动路径和其他动态效果[^1]。通过指定不同时间点上各零部件的位置变化来形成连续的画面转换,从而实现机械装置运作状态的真实再现。 具体步骤如下: - **新建或打开现有项目**:启动Autodesk Inventor程序后,选择要为其添加动画效果的产品文件。 - **切换至Presentation界面**:点击顶部菜单栏中的“Create Presentation”,之后会弹出一个新的窗口专门用来编辑演示文稿内容。 - **调整视角与布局**:利用工具栏里的选项卡调整相机角度,使场景呈现最佳视觉效果;同时可拖拽零件改变其初始摆放位置以便更好地观察整个组装过程。 - **录制关键帧序列**:当一切就绪后便能着手记录下一系列重要的时间节点——即所谓的“关键帧”。只需简单地选中目标对象再按下“Record Keyframe”按钮即可保存当前姿态作为历史记录的一部分供以后播放时调用。 - **设定过渡方式**:对于相邻两帧之间的插补方法可以选择线性(Linear)、缓入/缓出(Ease In/Ease Out)等形式让动作更加流畅自然。 - **预览和完善细节**:随时回放所编排好的片段检查是否存在不合理之处,必要时重复上述几个环节直至满意为止。 ```python # Python伪代码示例说明逻辑框架而非真实语法 def create_animation(): project = open_project() # 打开已有工程 presentation_mode = enter_presentation(project) # 进入presentation模式 set_camera_view(presentation_mode, "optimal") # 设置摄像机视图 record_keyframes(presentation_mode, objects_list) # 录制关键帧 apply_transition_effects(keyframes_sequence) # 应用转场特效 preview_and_refine(animation_draft) # 预览并完善动画草稿 ``` #### 导出成品 最后不要忘记导出最终成果为常见格式如AVI、MP4等便于分享交流或是进一步加工处理。此外还支持直接发布到Web平台让更多人在线观看学习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值