<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    在OSWorkflow中最讓人惱火的就是它的接口定義!我會就這些接口的混亂展開一系列的分析,今天先說說Configuration接口

    偶繼承了它的Configuration接口

    import com.company.engine.workflow.store.IWorkFlowStore;
    import com.opensymphony.workflow.StoreException;
    import com.opensymphony.workflow.config.Configuration;
    import com.opensymphony.workflow.spi.WorkflowStore;

    public interface IConfiguration extends Configuration
    {
     /**
      * @deprecated getIWorkflowStore()
      */
        WorkflowStore getWorkflowStore() throws StoreException;
       
        /**
         * return WorkFlowStore which implements the interface of IWorkFlowStore
         * @return
         * @throws StoreException
         */
        IWorkFlowStore getIWorkflowStore() throws StoreException;
       
    }

    你可能奇怪我為何要繼承它的接口(肯定是Bad smell),原因如下,

    IWorkFlowStore 接口定義

    import com.opensymphony.workflow.StoreException;
    import com.opensymphony.workflow.spi.Step;
    import com.opensymphony.workflow.spi.WorkflowEntry;
    import com.opensymphony.workflow.spi.WorkflowStore;

    public interface IWorkFlowStore extends WorkflowStore
    {
     
     public Step createCurrentStep(WorkflowEntry _entry , Step _step) throws StoreException;

    }

    WorkflowStore接口定義

        /**
         * Persists a step with the given parameters.
         *
         * @param entryId The workflow instance id.
         * @param stepId the ID of the workflow step associated with this new
         *               Step (not to be confused with the step primary key)
         * @param owner the owner of the step
         * @param startDate the start date of the step
         * @param status the status of the step
         * @param previousIds the previous step IDs
         * @return a representation of the workflow step persisted
         */
        public Step createCurrentStep(long entryId, int stepId, String owner, Date startDate, Date dueDate, String status, long[] previousIds) throws StoreException;

    看到了吧?

    其實我只是希望在createCurrentStep時按照OO的方法執行,而不是傳遞那些"Bad Smell"的參數,而OSWorkflow中的WorkflowStore是需要Configuration來獲取的,此時為了增加一個看似合理的方法,需要分別繼承Configuration與WorkflowStore;這還沒有完,你需要實現一個Configuration實現!!

    import com.company.engine.workflow.store.IWorkFlowStore;
    import com.opensymphony.workflow.StoreException;
    import com.opensymphony.workflow.config.DefaultConfiguration;
    import com.opensymphony.workflow.spi.WorkflowStore;

    public class DefaultIConfiguration extends DefaultConfiguration implements IConfiguration
    {
     
        public static DefaultIConfiguration INSTANCE = new DefaultIConfiguration();
        private transient IWorkFlowStore store = null;

     /**
      * @deprecated getIWorkflowStore()
      */
     public WorkflowStore getWorkflowStore() throws StoreException
     {
      return null;
     }

     public IWorkFlowStore getIWorkflowStore() throws StoreException
     {
      if (store == null)
      {
       String clazz = getPersistence();

       try
       {
        store = (IWorkFlowStore) Class.forName(clazz).newInstance();
       }
       catch (Exception ex)
       {
        throw new StoreException("Error creating store", ex);
       }

       store.init(getPersistenceArgs());
      }

      return store;
     }

    }

    總結

    1。OSWorkflow與WorkflowStore接口的關系比較的微妙,它需要借助于Configuration接口的實現來獲取到實際的WorkflowStore對象。

    2。由于這樣的一種微妙關系,對WorkflowStore接口的擴展必將連帶著需要擴展Configuration接口,而產生這樣的"果凍效應"的罪魁禍首就是由于WorkflowStore接口與Configuration接口耦合的太緊。

    3。OSWorkflow并沒有很好的遵守OO的設計規則,尤其在它的參數傳遞上,非常的差!

    主站蜘蛛池模板: 嫖丰满老熟妇AAAA片免费看| 欧洲亚洲国产精华液| 人妻在线日韩免费视频| 亚洲国产中文字幕在线观看| 鲁啊鲁在线视频免费播放| 国产一级淫片免费播放| 伊人久久国产免费观看视频| 亚洲精品一级无码鲁丝片 | 国语成本人片免费av无码 | 国产成人高清亚洲一区91| 免费真实播放国产乱子伦| 成人免费观看男女羞羞视频| 久久久久噜噜噜亚洲熟女综合| h片在线播放免费高清| 国产aⅴ无码专区亚洲av| 精品福利一区二区三区免费视频| 亚洲精品亚洲人成在线观看麻豆| av无码国产在线看免费网站| 亚洲午夜福利在线视频| 亚洲AV永久无码精品一区二区国产 | 男男黄GAY片免费网站WWW| 日本无吗免费一二区| av电影在线免费看| 亚洲综合在线成人一区| 一级毛片免费播放| 亚洲中文字幕一区精品自拍| 亚洲精品亚洲人成在线观看下载| 182tv免费视频在线观看| 2020国产精品亚洲综合网 | 亚洲精品亚洲人成在线观看| 久久国产精品成人片免费| 亚洲色偷偷综合亚洲av78| 国产精品亚洲αv天堂无码| 91精品国产免费入口| 亚洲国产AV一区二区三区四区| 国产亚洲人成网站在线观看| 亚洲黄色免费观看| 黄色三级三级三级免费看| 亚洲第一精品电影网| 亚洲欧洲日产国码高潮αv| 蜜臀98精品国产免费观看|