起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 402|回复: 13

【结贴】[请求]用代码启动一个流程后,怎么立即流转?**

[复制链接]
发表于 2008-5-2 17:33:27 | 显示全部楼层 |阅读模式
我用代码向数据集里写入数据

流程启动规则是处理时,但是不启动流程

那么我在写入数据后代码启动流程,想立即流转

应该怎么做?

有两个功能A和B

A功能写入和启动流程,

然后就马上转到功能B

不用人为干预
回复

使用道具 举报

发表于 2008-5-2 23:18:23 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-3 10:33:31 | 显示全部楼层
可能我没有说清楚

我的功能A要写入12行数据,这12行都要流转,可以合为一个任务,也可以分12个,哪个实现起来简单?

以下是写数据的代码。
但总提示数据已经修改,是否保存。
确定后出现(正在提交)。
再确定后出现(事务已经回滚)。

for AMonth := 1 to 12 do
     if AStyle = '0' then
         datasetbroker1.dataset.edit
     else
         datasetbroker1.dataset.Append;
     datasetbroker1.dataset.FieldByName('fgsid').AsString:=ADDept;
     datasetbroker1.dataset.FieldByName('ny').AsString:=inttostr(AMonth);
     datasetbroker1.dataset.FieldByName('qrbz').AsString := '0';
     datasetbroker1.dataset.FieldByName('guid').AsString := 'FBSID'+ ADDept +'_YM'+AMonth;
   // datasetbroker1.dataset.post;
     datasetbroker1.dataset.ApplyUpdates;
    // UserStartFlow(sFlowUrl,sDept,sRole,sPerson,sStartProc,sFlowID,sSubject,sDescription);
    // actflowout.Execute;

end;
我的流程启动规则为  处理时,但以下代码没有执行
procedure TMainForm.FlowBroker1AfterFlowStartup(Sender: TObject; Command: TFlowStartupCommand);
begin
  actflowout.Execute;
end;

我想用以上代码实现自动流转。

下一环节的接收者我也想通过数据集字段确定部门岗位,代码如下


procedure TMainForm.FlowBroker1CreateFlowOutFlowTasks(Sender: TObject; Command: TFlowOutCommand);
var
   sFGSID,sDDept :string;
   i: Integer;
//   lField: TDataField;
   lFlowTask: TFlowTask;

begin
      if sFgsFlag = '' then
     sFGSID := Dsb1.DataSet.FieldByName('ID').AsString
     else   sFGSID := sFgsFlag ;

     case StrToInt(sFGSID) of
          11 : sDDept := 'HSGDFGS';
          12 : sDDept := 'BNGDFGS';
          13 : sDDept := 'YXGDFGS';
          14 : sDDept := 'LHGDFGS';
          15 : sDDept := 'GTGDFGS';
          16 : sDDept := 'KFQGDFGS';
          17 : sDDept := 'LGNDJ';
          18 : sDDept := 'DHYXFGS';
     else
         exit;
     end;

     for i:=0 to Command.FlowTasks.Count-1 do
         begin
              lFlowTask := Command.FlowTasks;
              {if SysUtils.SameText(lFlowTask.ProcUnit.ID, 'FJ_1_TZSJSCGN') then
                 lField := DataSetBroker1.DataSet.FieldByName('PRODUCTTYPE')
              else if SysUtils.SameText(lFlowTask.ProcUnit.ID, 'ZJHJ2') then
                   lField := DataSetBroker1.DataSet.FieldByName('PRODUCTTYPE')
              else
              lField := DataSetBroker1.DataSet.FieldByName('CONTENT'); }
              lFlowTask.ExecutorMustBeFuncOwner := true;
              lFlowTask.AllowExecutorRange := Org.OrgExpr.OrgChildren(Org.OrgExpr.OrgKey(sDDept, 'XSZG', ''), '', True);
         end;


end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-3 11:19:26 | 显示全部楼层
调用启动流程

UserStartFlow(sFlowUrl,sDept,sRole,sPerson,sStartProc,sFlowID,sSubject,sDescription);

具体函数下加一句
procedure TMainForm.UserStartFlow(AFlowUrl,ADept,ARole,APerson,AStartProc,AFlowID,ASubject,ADescription:string);
var
   lBizURL: TBizURL;
   lFlowValue: TFlowValue;
   lFlowControl: TFlowControl;
   lExecutor: TOrgURL;
begin
     lBizURL := TBizURL.Create;
     lFlowValue := TFlowValue.Create;
     lFlowControl := TFlowControl.Create(Self.Context);
     lExecutor := TOrgURL.Create(ADept, ARole, APerson);
     lBizURL.URL := AFlowUrl;
     try
        //流程ID
        lFlowValue.IDs.Add(AFlowID);
        //流程主题
        lFlowValue.Subject := ASubject;
        //流程描述
        lFlowValue.Description := ADescription;
   //     dialogs.ShowMessage (lFlowControl.Flow.GUID);
        //启动流程实例
        lFlowControl.StartupFlow(lBizURL, AStartProc, lExecutor, lFlowValue);
        //流程实例数据保存到数据库
        lFlowControl.FlowRunnerbyIndex[0].CurrentTask.SaveToDB;
//这里加入流转?>>>>会报错..如图
lFlowControl.FlowOut(nil);
     finally
            lFlowControl.Free;
            lFlowValue.Free;
            lBizURL.Free;
     end;
end;

test.jpg

17.47 KB, 下载次数: 221

回复 支持 反对

使用道具 举报

发表于 2008-5-4 13:47:55 | 显示全部楼层
楼主,我们没有登记您的公司信息。
请给我们来个电话吧!59798677-225
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-4 16:25:26 | 显示全部楼层
我倒....

我们的版本是老了点,还没用X3

怎么就没信息了?

就是经常来电话推销新版本
回复 支持 反对

使用道具 举报

发表于 2008-5-4 16:30:01 | 显示全部楼层
哈尔滨工业大学电力系统研究所

找不到这个客户的信息啊!!!

楼主的单位是不是改名了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-4 19:56:50 | 显示全部楼层
具体买的时候是什么单位我也不清楚

我才接手这个项目

但我们是给北京许继做的项目

应该算北京许继电气吧
回复 支持 反对

使用道具 举报

发表于 2008-5-5 08:31:51 | 显示全部楼层
建议楼主把资料改成许继电气!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-5 18:19:45 | 显示全部楼层
改好了..这下该改解答问题了吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-12 21:34 , Processed in 0.042970 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表