zoukankan      html  css  js  c++  java
  • AX2009 C#客户端通过Web service批量审核工作流(二)

    配置好Web service后就可以开发和发布Service

    先创建ClassWorkflowApprovalServiceClass,添加方法dataList,返回当前用户需要审批的工作流记录ID

    public str  dataList()
    {
        WorkflowWorkItemTable       workItem;
        container   con;
    
        while select  RecId from workItem where workItem.UserId==curuserid()
                                            &&  workItem.Status==WorkflowWorkItemStatus::Pending
                                            &&  workItem.Type==WorkflowWorkItemType::WorkItem
            con+=workItem.RecId;
        if(con)
            return con2str(con);
        else
            return "";
    }

    AX2009返回值的类型只支持以下几种简单类型

    private static boolean validateParamType(Types _type, int _typeId)
    {
        boolean isValid;
        SysDictType dictType;
        SysDictClass dictClass;
        ;
        if(_type == Types::Class)
        {
            dictClass = new SysDictClass(_typeId);
    
            // Check if class implements AifXmlSerializable.
            isValid = dictClass.isImplementing(classnum(AifXmlSerializable));
        }
        else    // built-in type.
        {
            switch(_type)
            {
                case(Types::UserType):
                {
                    dictType = new SysDictType(_typeId);
                    isValid = AifServiceGenerationManager::validateParamType(dictType.baseType(), _typeId);
                    break;
                }
                case(Types::String):
                case(Types::RString):
                case(Types::VarString):
                case(Types::Date):
                case(Types::UtcDateTime):
                case(Types::Guid):
                case(Types::Integer):
                case(Types::Int64):
                case(Types::Enum):
                case(Types::Real):
                case(Types::void):
                {
                    isValid = true;
                    break;
                }
                case(Types::AnyType):
                case(Types::BLOB):
                case(Types::Container):
                case(Types::Record):
                case(Types::Time):
                default:
                {
                    isValid = false;
                }
            }
        }
    
        return isValid;
    }

    添加审批方法批准和拒绝

    public void updateApprove(recId    _recid,str _comment="")
    {
        WorkflowWorkItemTable _workItem=WorkflowWorkItemTable::findRecId(_recid);
        ;
    
        WorkflowWorkItem::takeAction(_workItem.Id,
                                            WorkflowWorkItemActionManager::findOutcomeNameForMenuItem(_workItem,
                                                                                                    "PurchApprovalApprove",//工作流批准的菜单项
                                                                                                    false),
                                                                                                    _comment,
                                                                                                    curuserid());
    }
    public void updateReject(recId    _recid,str _comment="")
    {
        WorkflowWorkItemTable _workItem=WorkflowWorkItemTable::findRecId(_recid);
        ;
    
        WorkflowWorkItem::takeAction(_workItem.Id,
                                            WorkflowWorkItemActionManager::findOutcomeNameForMenuItem(_workItem,
                                                                                                    "PurchApprovalReject",//工作流拒绝菜单项
                                                            false), _comment, curuserid()); }

    再添加一些需要显示参考的字段方法就可以了

    接下来就到AOT-Services中增加一个Service/WorkflowApprovalService

    将属性中的Class指向上面创建的Class/WorkflowApprovalServiceClass

    另外还需要添加securityKey,否则在客户端调用时会出错

    然后打开Service/WorkflowApprovalService,在operations右键添加operation,系统会自动将Class上符合要求的方法显示出来,添加需要的方法,保存即可

    最后是打开上一篇中的设置服务,刷新后选择服务发布就可以了

  • 相关阅读:
    20201303 2019-2020-2 《Python程序设计》实验三报告
    20201303 2020-2021-2 《Python程序设计》实验二报告
    20201303张奕博 实验一 Python程序设计入门
    2020-2021-1博客汇总
    俄罗斯方块and四则运算实践
    python对于数据库的相关实践
    20201303获奖感言与学习体会
    openssl实践
    2021-2022 2113 2114信息安全导论 第五周总结
    第九章第十章
  • 原文地址:https://www.cnblogs.com/rumenren/p/4894726.html
Copyright © 2011-2022 走看看